Skip to main content

Yelp’s Top 100 Places to Eat in Canada for 2018



“Where should we eat?” For the third year in a row, we’re helping you settle this exact debate with the return of our Top 100 Places to Eat in Canada list. Just like last year, our data scientists look at heaps of reviews, photos and tips to help the hungry decide where to get their next bite to eat.

The results of our data science team’s meeting of the minds is a list that combines returning favourites like this year’s no. 1 eatery Baretto Caffe and Bouillon Bilk (no. 18 with its fresh take on modern French cuisine) and new must-try restaurants like Tavola (no. 34, Yelpers love their delicious Italian dishes). Last year’s top restaurant Muncheez still remains a favourite, coming in at number 2. The list also shows that Toronto continues to be Canada’s top foodie destination with 5 of the top ten eateries and more than 30 of the top 100 eateries — more than any other city!

You’re going to want to make a note of these spots, so we made it easy for you. With our bookmark collections feature, you can see the whole list in one place and follow it! To do so, open this link on mobile (make sure to have the Yelp app downloaded!) and hit ‘follow’ once you’ve opened it in the app. Now you’ll always have the top 100 with you.

Did one of your favourites not make the list?  Share your thoughts on the list on social media using #YelpTop100 and tell us what you think. Don’t forget to check out our picks for the top places to eat in the United States!

Left: #1 Baretto Caffe in Toronto, ON | Right, top to bottom: #34 Tavola in Vancouver; #28 Seven Lives Tacos Y Mariscos; #3 Wild Thyme

 

Businesses that appeared on our 2017 list are marked with ♥

  1. Baretto Caffe – Toronto, ON
  2. Muncheez – Markham, ON
  3. Wild Thyme – New Westminster, BC 
  4. Alo Restaurant – Toronto, ON
  5. The Himalayan – Calgary, AB
  6. Ay Caramba, Eh – Vaughan, ON
  7. Yasu – Toronto, ON
  8. Blaze Fast-Fire’d Pizza – Toronto, ON
  9. Under The Table Restaurant – Toronto, ON
  10. Hibachi Grill – Pickering, ON
  11. Number e food – Vancouver, BC
  12. Damas – Montréal, QC
  13. New Orleans Seafood & Steakhouse – Toronto, ON
  14. Fat Ninja Bite – Toronto, ON
  15. Jacobs & Co. Steakhouse – Toronto, ON
  16. Rick’s Good Eats – Mississauga, ON
  17. Bouillon Bilk – Montréal, QC
  18. Chip+Malt – Newmarket, ON
  19. The Rimrock Cafe – Whistler, BC
  20. Lan’s Asian Grill – Edmonton, AB
  21. Duchess Bake Shop – Edmonton, AB
  22. Agio – Toronto, ON
  23. Kishimoto Japanese Kitchen – Vancouver, BC
  24. Scaramouche Restaurant Pasta Bar & Grill – Toronto, ON
  25. The Poke Guy – Vancouver, BC
  26. Lazzez’s Grill Indian Cuisine – Coquitlam, BC
  27. Pita Golden Pocket – Vaughan, ON
  28. Seven Lives Tacos Y Mariscos – Toronto, ON
  29. Zeal Burgers – Toronto, ON
  30. OEB Breakfast Co – Calgary, AB
  31. Adamson Barbecue – Toronto, ON
  32. Sushi Wa – Vaughan, ON
  33. Tibet Kitchen – Toronto, ON
  34. Tavola – Vancouver, BC
  35. El Nahual – York, ON
  36. Banh Mi Bar Restaurant – New Westminster, BC
  37. Indian Roti Kitchen – Vancouver, BC
  38. Chris Jerk Caribbean Bistro – Toronto, ON
  39. Mystic Muffin – Toronto, ON
  40. Fishhook – Victoria, BC
  41. A-Game Cafe – Toronto, ON
  42. Byblos – Toronto, ON
  43. La Taqueria Pinche Taco Shop – Vancouver, BC  **
  44. Fredie’s Fantastic Fish House – Halifax, NS
  45. Saint Sushi Bar – Montréal, QC
  46. Corner Nook Cafe – Chilliwack, BC
  47. CHAU Veggie Express – Vancouver, BC
  48. AnnaLena – Vancouver, BC
  49. Nubo Japanese Tapas – Victoria, BC
  50. Fable – Vancouver, BC
  51. Cha Baa Thai – Dartmouth, NS
  52. Wilf & Ada’s – Ottawa, ON
  53. Richmond Station – Toronto, ON
  54. Rasa – Toronto, ON
  55. Smithe Salad – Vancouver, BC
  56. Cannon Coffee – Hamilton, ON
  57. Cafe March 21 – Windsor, ON
  58. Anar – Richmond, BC
  59. Purebread – Vancouver, BC
  60. Pai Northern Thai Kitchen – Toronto, ON
  61. The Halifax Donair & Pizza – Milton, ON
  62. Pho Ngoc Yen Restaurant – Mississauga, ON
  63. Europea – Montréal, QC
  64. RGE RD – Edmonton, AB
  65. Tour De Feast – North Vancouver, BC
  66. The Bicycle Thief – Halifax, NS
  67. Sanremo Bakery – Etobicoke, ON
  68. Régine Café – Montréal, QC
  69. Miku – Vancouver, BC
  70. Le Crocodile Restaurant – Vancouver, BC
  71. Dinette Triple Crown – Montréal, QC
  72. George – Toronto, ON
  73. 100 Percent Korean – Toronto, ON
  74. Huevos Gourmet – Toronto, ON
  75. Jam Cafe – Victoria, BC
  76. Harvest Deli – Vancouver, BC
  77. Café Polonez – Toronto, ON
  78. Ten Foot Henry – Calgary, AB
  79. Bread and Honey Food Company – Parksville, BC
  80. Katsuya – Toronto, ON
  81. Antler Kitchen & Bar – Toronto, ON
  82. Brasserie L’ecole – Victoria, BC
  83. Fresco’s Fish & Chips – Toronto, ON
  84. Artista Pizza – Pitt Meadows, BC
  85. Her Father’s Cider Bar & Kitchen – Toronto, ON
  86. FAT Lamb Kouzina – Toronto, ON
  87. Salad Days – Toronto, ON
  88. Padmanadi Vegetarian Restaurant – Edmonton, AB
  89. Battista’s Calzone – Edmonton, AB
  90. L’Avenue – Montréal, QC
  91. The Mexican Antojitos Y Cantina – Vancouver, BC
  92. La Grotta Del Formaggio – Vancouver, BC
  93. Absinthe Bistro – Vancouver, BC
  94. Boulangerie Cheskie – Montréal, QC
  95. One2 Snacks – Toronto, ON
  96. Ma Now Thai Kitchen – Port Coquitlam, BC
  97. deKEFIR – Toronto, ON
  98. Kookminhakgyo – Toronto, ON
  99. Le Club Chasse et Pêche – Montréal, QC
  100. Le Quartier Général – Montréal, QC

* La Taqueria Pinche Taco Shop in Vancouver also made the Top 100

 

Methodology:

To determine Yelp’s Top 100 Places to Eat in Canada for 2018, we looked at the reviews received by businesses in the restaurant and food categories, focusing more on more recent reviews. We considered both the rating and the volume of the reviews, although the weight given to the sheer number of reviews is distinctly lighter than it was last year. To localize the list, we only considered the reviews written by the users from Canada. Businesses must be primarily a restaurant or place to eat a meal to be included on the list. If a business with multiple locations appears more than once on the list, we keep the highest ranked location and mentions the others in a footnote.

[gravityform id="4" title="false" ajax="true"]
<script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(r=Array.prototype.slice.call(r,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script> <div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/news/109791/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Comments</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>
[gravityform id="4" title="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/news/109791/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Name</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>