Skip to main content

Yelp Reveals Canada’s Top 100 Places to Eat in 2020



We L-O-V-E to eat and we’re passionate about great food. We know you are too! That’s why, every day, we work hard to make dining easier for our millions of users — they can order food for delivery or pickup, or grab a table using Yelp Reservations or Waitlist. Connecting people with great local businesses is a responsibility we take very seriously, especially when it comes to finding a place to get your next meal. With the help of our Yelp community, who contributed millions of reviews over the course of the last year, we are very excited to announce this year’s Top 100 Places to Eat in Canada.

From cheap eats to $$$, food stands to white tablecloth dining experiences, this year’s list runs the gamut of dining experiences. Leave it to Yelpers to be in-the-know on the spots you’ve heard about (like Montreal’s famous brunch spot L’Avenue at #10) and unearth grab and go joints the locals would love to keep secret (a burger joint specializing in indulgent burgers at #29 or a poutinerie where Yelpers rave about the crazy toppings in Canmore at #74). The list also shows that Toronto is one of Canada’s top foodie destinations with more than 30 of the top 100 eateries — more than any other city.

To determine Yelp’s Best Places to Eat in 2020, Yelp’s data science team pulled the top restaurants by ratings and number of reviews in 2019 across Canada, with representation based on each place’s share of top-rated restaurants nationally, then curated the list with the expertise of our Community Managers around the country to finalize the rankings. The result is a list as quirky, interesting and unique as the Yelp Community itself. 

You’re going to want to make a note of these spots, so we made it easy for you. 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 we miss one of your must-try restaurants? Share your thoughts on the list on social media using #YelpTop100 and tell us what you think. Remember, we only know how good a spot is if people take the time to review it, so share your thoughts on Yelp, and maybe your favorites will be on next year’s list! Don’t forget to check out our picks for the top places to eat in the United States!

 

(Left, top to bottom: #1 Ma Poule Mouillée in Montréal; #49  Tide and Vine Oyster House in Niagara Falls
Right, top to bottom: #70 Rocky Mountain Flatbread Co in Canmore; #18 Marutama Ramen in Vancouver; #99 J:unique Kitchen in  Ottawa)

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

Businesses that offer reservations or waitlist on Yelp ♥

  1. Ma Poule Mouillée – Montréal, QC
  2. Tom Sushi – Vancouver, BC
  3. The Northern Cafe & Grill – Vancouver, BC
  4. Il Terrazzo Ristorante – Victoria, BC
  5. Southeast Sandwiches – Woodbridge, ON
  6. Damas – Montréal, QC
  7. Pho Ngoc Yen Restaurant – Mississauga, ON
  8. Pai Northern Thai Kitchen – Toronto, ON
  9. Steve’s Poké Bar – Surrey, BC
  10. L’Avenue – Montréal, QC
  11. Ramen Isshin – Toronto, ON
  12. Blue Fox Cafe – Victoria, BC
  13. Ten Foot Henry – Calgary, AB
  14. ImPerfect Fresh Eats – Toronto, ON
  15. The Rimrock Cafe – Whistler, BC
  16. Manoush’eh – Vancouver, BC
  17. The Blind Pig – Niagara Falls, ON
  18. Marutama Ramen – Vancouver, BC
  19. Bouillon Bilk – Montréal, QC
  20. Medina Cafe – Vancouver, BC
  21. Nero Belgian Waffle Bar – Vancouver, BC
  22. Ikkousha Ramen – Toronto, ON
  23. Miku – Vancouver, BC
  24. Cactus Club Cafe – Calgary, AB
  25. Le Passé Composé– Montréal, QC
  26. Jam Cafe – Victoria, BC
  27. Le Billig – Québec, QC
  28. One2 Snacks – Toronto, ON
  29. Zeal Burgers – Toronto, ON
  30. Sumilicious – Scarborough, ON
  31. Bueokae Korean Restaurant – Love’s Kitchen – Richmond Hill, ON
  32. Block Kitchen and Bar – Banff, AB
  33. Au Pied de Cochon – Montréal, QC
  34. Good Hombres – Toronto, ON
  35. Wild Flour – Banff’s Artisan Bakery Cafe – Banff, AB
  36. Ooshee Mediterranean Oven – Toronto, ON
  37. Seven Lives Tacos Y Mariscos – Toronto, ON
  38. Descendant Detroit Style Pizza – Toronto, ON
  39. Fat Ninja Bite – Toronto, ON
  40. Momo Hut & Gardens – Toronto, ON
  41. OEB Breakfast Co. – Calgary, AB
  42. Miku – Toronto, ON
  43. New Orleans Seafood & Steakhouse – Toronto, ON
  44. Demen Bistro – Toronto, ON
  45. Janine Café – Montréal, QC
  46. GaNaDaRa – Montréal, QC
  47. EAT BKK Thai Kitchen & Bar – Toronto, ON
  48. Her Father’s Cider Bar & Kitchen – Toronto, ON
  49. Tide and Vine Oyster House – Niagara Falls, ON
  50. Blue Line Diner – Niagara Falls, ON
  51. La Finca– Montréal, QC
  52. Shelter Restaurant – Tofino, BC
  53. Jordan’s Shawarma – Thornhill, ON
  54. Régine Café – Montréal, QC
  55. Katsuya – Mississauga, ON
  56. ZCREW Cafe – Calgary, AB
  57. Shanzee’s Biscuit Cafe – Victoria, BC
  58. Tavern 1883 – Canmore, AB
  59. Little Yunnan Restaurant – Victoria, BC
  60. John’s Place – Victoria, BC
  61. Trius + Aim – Toronto, ON
  62. Minami Sushi – Aurora, ON
  63. OLO Restaurant – Victoria, BC
  64. Guru Lukshmi – Mississauga, ON
  65. Slice of Fire – Markham, ON
  66. Memphis BBQ – Woodbridge, ON
  67. Park Distillery – Banff, AB
  68. Eli’s Table – Toronto, ON
  69. Buvette Scott – Québec, QC
  70. Rocky Mountain Flatbread Co – Canmore, AB
  71. Weinkeller – Niagara Falls, ON
  72. Tournebroche – Québec, QC
  73. Pip – Edmonton, AB
  74. 514 Poutine – Canmore, AB
  75. Le Hobbit – Québec, QC
  76. The Bicycle Thief – Halifax, NS
  77. La Bûche – Québec, QC
  78. Rick’s Good Eats – Mississauga, ON
  79. Blue Mussel Cafe – North Rustico Harbour, PE
  80. Bear Street Tavern – Banff, AB
  81. Famoso Neapolitan Pizza – Jasper, AB
  82. Paris Crepes Cafe – Niagara Falls, ON
  83. Yan’s Soy Foods – Markham, ON
  84. Q-de-Sac Resto-Pub – Québec, QC
  85. Chuck’s Steakhouse – Banff, AB
  86. Black Sheep – Halifax, NS
  87. Aneal’s Taste of the Islands – Richmond Hill, ON
  88. Ay Caramba, Eh – Vaughan, ON
  89. Halo Halo – Mississauga, ON
  90. Finn’s Seafood Chops Cocktails – Victoria, BC
  91. Le Café du Clocher Penché – Québec, QC
  92. Wilf & Ada’s – Ottawa, ON
  93. The Next Act – Edmonton, AB
  94. Seoul Fried Chicken – Edmonton, AB
  95. Gangnam Street Food – Edmonton, AB
  96. Vaticano Cucina – Edmonton, AB
  97. JOEY Rideau – Ottawa, ON
  98. 2 Doors Down – Halifax, NS
  99. J:unique Kitchen – Ottawa, ON
  100. Play Food And Wine – Ottawa, ON
[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='/community/yelp-reveals-canadas-top-100-places-to-eat-in-2020/#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' >Email</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='/community/yelp-reveals-canadas-top-100-places-to-eat-in-2020/#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>