Restaurant SEO happens in five places, and only one of them is your website. A hungry person nearby sees your Google Business Profile in Maps, reads your reviews there and on Yelp or Tripadvisor, looks at photos, checks your menu, and increasingly asks an AI assistant where to eat. Good SEO for restaurants makes each of those places accurate, appealing and consistent with the others, so the person who searched “tacos near me” walks in rather than walking past.
This guide is for owners and managers of independent restaurants, small groups and the agencies that help them. The example is Taqueria Marigold, a fictional taqueria in Portland, Oregon, with a patio, a weekend brunch and a catering side business.
1. The Business Profile: where most diners decide
For many diners, the profile is the restaurant. Get every field right.
Categories. The primary category has more effect on which searches you appear for than any other field. Choose the most specific cuisine that describes you: “Mexican restaurant” for Marigold, not just “Restaurant”. Then add secondary categories that are true: “Taco restaurant”, “Brunch restaurant”, “Caterer” if you cater. Look through Google’s list in your own profile; it is long and changes, and there may be a closer match than you expect.
Attributes. Diners filter by these, and Google uses them to match searches like “restaurants with outdoor seating near me”. Fill in every one that applies:
| Attribute group | Examples |
|---|---|
| Service options | Dine-in, takeout, delivery, curbside pickup, outdoor seating |
| Offerings | Vegetarian options, vegan options, happy hour food and drinks, alcohol, late-night food |
| Dining options | Breakfast, brunch, lunch, dinner, catering, dessert |
| Amenities | Restroom, Wi-Fi, high chairs, bar onsite |
| Accessibility | Wheelchair accessible entrance, seating and restroom |
| Planning | Accepts reservations, good for groups |
| Crowd and identity | Family-friendly, identity attributes such as women-owned or Latino-owned where true |
Hours. Set special hours for every holiday at least two weeks ahead, and for private events that close the dining room. A profile that says “Open” while the doors are locked is one of the fastest ways to earn a one-star review.
Menu and links. Add your menu link (pointing at the HTML menu page, not a PDF), an order link if you take online orders directly, and a reservation link. Google can show food ordering and reservations through partners; check which ones your system supports.
Photos. Upload your own: the front door from the street, the dining room, the patio, the bar and your best dishes. Customer photos will arrive regardless; yours set the standard.
Posts. Use posts for specials, seasonal menus and events. They do not move rankings much, but they show that someone is home.
Restaurant map rankings depend heavily on proximity: how close you are to the person searching. A Local Rank Grid shows where you rank on a map around the restaurant, so you can see the difference between “tacos” two blocks away and two miles away, and whether better reviews and photos are widening that circle over time.
2. The menu page: the most important page on your site
Dish searches like “birria tacos portland” or “gluten free brunch” are matched against text. If your menu is a PDF or a photo, search engines and AI assistants have little to work with, and phone users have to pinch and zoom.
Build the menu as a normal web page:
- Each section (tacos, plates, brunch, drinks) as a heading.
- Each dish name as text, with a short description and the price.
- Dietary notes in words: vegetarian, vegan, gluten-free, contains nuts.
- One menu page per service if they differ a lot (brunch, dinner, happy hour, catering), each with its own URL.
- A “last updated” note, and a routine for updating it when prices change.
Keep the PDF for printing if you like, linked from the HTML page. The free meta tag checker is a quick way to see whether your menu page has a clear title and description.
3. The rest of the website
A restaurant site does not need many pages, but each one should do a job:
| Page | Why it matters | Marigold example |
|---|---|---|
| Home | Name, cuisine, neighborhood, hours, address, order and reserve buttons in the first screen | “Taqueria Marigold: tacos and weekend brunch on Alberta Street” |
| Menu pages | Dish searches and the most-visited page on most restaurant sites | /menu/, /brunch/, /happy-hour/ |
| Private dining and events | Bigger tickets, searched weeks ahead | /private-events/ with capacity, minimums, sample menus and photos |
| Catering | Office and party searches | /catering/ with trays, lead times and delivery area |
| About | The story, the chef and the sourcing; gives journalists and AI assistants something to cite | /about/ |
| Contact and directions | Parking, transit, accessibility | /visit/ |
Put the phone number on every page as a tappable link, and make the order and reserve buttons easy to hit with a thumb. The RankThat WordPress Bridge can add a mobile call or book bar and make phone numbers tappable for you to review, with one-click undo. See WordPress fixes.
4. Reviews: across platforms, within the rules
Diners read reviews on Google, Yelp, Tripadvisor and delivery apps. Each platform has its own rules, and they differ more than most owners think.
- Google lets you ask customers for reviews, but forbids offering anything in exchange and forbids asking only happy customers. A table card or receipt QR code that every guest sees is fine. A free dessert for a five-star review is not.
- Yelp asks businesses not to request reviews at all, and its filter may hide reviews it thinks were solicited. Earn Yelp reviews by being good, and reply to them.
- Tripadvisor lets you invite reviews from all guests, but no incentives and no filtering.
- The law. The FTC’s rule on consumer reviews bans buying fake reviews, writing reviews from staff or family without disclosure, and suppressing negative reviews.
Replying is where restaurants gain the most. A reply that names the dish or occasion (“Glad the birria was worth the wait, and happy birthday to your daughter”) reads as genuine and adds detail future diners read. For complaints, apologize once, explain briefly if there is something to explain, and offer to make it right offline.
RankThat brings Google reviews into one place and drafts replies with AI that you edit and approve. Nothing posts on its own.
5. AI assistants and “best of” searches
“Best tacos in Portland” is answered by the map pack, by local press and food blogs, and increasingly by ChatGPT, Gemini and Perplexity. Assistants lean on what other sources say about you: reviews, local press, “best of” lists, and your own site’s description of what you serve. Help them by:
- Keeping cuisine, signature dishes, neighborhood and hours in plain text on your home and about pages.
- Pitching local food writers when you launch a seasonal menu or event.
- Checking whether you are mentioned at all with AI Visibility, which tracks chosen questions across ChatGPT, Gemini, Perplexity, Claude and Google AI Overviews against nearby competitors.
The restaurant year
Plan seasonal content and profile updates four to six weeks before each peak. A typical calendar for a place like Marigold:
| When | Demand | Action |
|---|---|---|
| January | Resolutions, dry January | Lighter dishes and zero-proof drinks on the menu page |
| February | Valentine’s Day | Reservation page and special menu live by mid-January |
| April to May | Patio season begins, Mother’s Day, graduations | Patio photos, brunch page, group booking info |
| Summer | Patio, tourists, events | Hours, outdoor seating attribute, event posts |
| September to October | Back to routine, office catering returns | Catering page refreshed, lunch specials |
| November to December | Holiday parties, gift cards, New Year’s Eve | Private events page, gift card link, special hours set early |
Check your own pattern in Search performance and in the profile’s performance data. Every neighborhood is different.
Restaurant schema
Use the Restaurant type on the home page. Keep it matched to your profile.
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Taqueria Marigold",
"url": "https://www.example.com/",
"telephone": "+1-503-555-0123",
"servesCuisine": ["Mexican", "Tacos"],
"priceRange": "$$",
"hasMenu": "https://www.example.com/menu/",
"acceptsReservations": "True",
"address": {
"@type": "PostalAddress",
"streetAddress": "1200 NE Example Street",
"addressLocality": "Portland",
"addressRegion": "OR",
"postalCode": "97211",
"addressCountry": "US"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday", "Sunday"],
"opens": "09:00",
"closes": "22:00"
}]
}
The free schema generator builds this for you. Remember to change the hours in the schema when you change them on the profile.
What to check every month
| Metric | Source |
|---|---|
| Calls, direction requests, website clicks, menu views | Google Business Profile performance |
| Map position around the restaurant for cuisine and dish terms | Local Rank Grid |
| Clicks to menu, private events and catering pages | Search Console |
| Order and reservation clicks | Google Analytics 4 |
| New reviews and average rating by platform | Google, Yelp, Tripadvisor |
| Consistency of name, address, phone and hours | Citations across directories and delivery apps |
Mistakes that cost restaurants diners
- A PDF or image menu as the only menu. Dish searches cannot match it, and it is painful on a phone.
- Holiday hours set the day before, or not at all. Google may already be showing the wrong hours to people planning their evening.
- A generic “Restaurant” primary category. You give up the cuisine searches that bring most new diners.
- Old details on delivery apps and directories. A closed second location or old phone number sends people to the wrong place and muddies what search engines believe about you.
- Offering discounts for reviews. It breaks platform rules and can get reviews removed. If the reward depends on the review being positive, it also falls under the FTC’s rule.
- A slow home page with an autoplaying video that hides the hours and address. Most visitors want three facts: are you open, where are you, and what is on the menu.
A 90-day plan
| Weeks | Focus |
|---|---|
| 1 to 2 | Business Profile: categories, every attribute, menu link, holiday hours for the next quarter, fresh photos |
| 3 to 4 | HTML menu pages for each service, tappable phone numbers, order and reserve buttons on mobile |
| 5 to 6 | Citations: fix name, address, phone and hours on Yelp, Tripadvisor, Apple Maps and delivery apps |
| 7 to 8 | Private events and catering pages with photos, capacities and lead times; Restaurant schema |
| 9 to 10 | Review routine: table cards or receipt link for Google, reply to the backlog, reply templates for staff |
| 11 to 12 | Seasonal page for the next peak, local press pitch, first AI visibility check |
| 13 | Compare calls, direction requests and grid coverage with week one |
The local SEO checklist covers the remaining basics that apply to every local business.