How to Do SEO for a Restaurant

On this page

Restaurant SEO is won in the local pack and on Google Maps, not in the organic blue links below them. For a query like “italian restaurant near me,” the map pack and Maps consume the visible real estate and most of the clicks, so the Google Business Profile is your primary surface and the website is a supporting asset. The profile (its categories, menu, photos, hours, and reviews) controls whether you appear in the pack; the website’s main SEO jobs are to be NAP-consistent, to host a crawlable menu, and to carry structured data. Spend your effort accordingly, because a beautiful website behind a stale, half-empty profile loses to a complete profile every time.

Why the local pack and Maps dominate, and what controls placement

For restaurant queries Google leads with the local pack and Maps results because the intent is almost always to eat nearby soon. Pack placement is driven by three broad factors Google describes for local ranking: relevance (how well the profile matches the query, which is where categories and menu text do their work), distance (proximity of the searcher to the business, which you cannot change), and prominence (how well-known and well-regarded the place is, which reviews, links, and overall web presence feed). You cannot move the restaurant closer to the searcher, so your levers are relevance and prominence: a complete, accurate, category-correct profile and a steady stream of genuine reviews.

Profile completeness is the floor. Correct primary and secondary categories, accurate hours, the right attributes (dine-in, takeout, outdoor seating), photos, and a populated menu all feed relevance. An incomplete profile simply gives Google fewer reasons to match you.

A PDF menu is close to invisible for dish-level search. Even when Google can read a PDF, dish names buried in a flat document rarely surface for queries, and the file is poor on mobile. The fix is to publish the menu as crawlable HTML text on the site. Dish-level queries such as “best carbonara near me” or “gluten free pizza near me” can only match you if those dish names exist as indexable text on a page. An HTML menu quietly opens dozens of long-tail matches that a PDF, and the local pack alone, never capture. This is the highest-leverage technical move specific to the restaurant vertical, and it is one most independents skip.

Reinforce it with the Google Business Profile menu feature, which lets you add menu items directly to the profile so they can show on the listing. Use both: the on-site HTML menu for organic and AI-surface matching, and the profile menu for the listing itself.

Restaurant structured data and what it actually buys you

Add Restaurant structured data (a subtype of LocalBusiness via FoodEstablishment) in JSON-LD to make the page machine-readable. The properties that matter for a restaurant are servesCuisine (plain-text cuisines like “Italian” or “Sushi”), hasMenu / menu, openingHoursSpecification, acceptsReservations, address, telephone, and geo. These describe the entity precisely and help Google and AI surfaces match the restaurant to cuisine- and feature-specific queries.

Be accurate about the payoff. For a local business, name, address, and image are the essential properties for any rich treatment, and Google’s documentation is the source of truth for current eligibility. The markup’s job is to communicate facts cleanly, not to guarantee a visual panel, so verify current Restaurant and LocalBusiness rich-result eligibility in Search Central rather than promising a specific SERP feature. Add the schema because it describes the restaurant correctly and supports knowledge-panel and AI matching, and treat any rich result as a bonus, not the reason.

Reviews: a ranking input and a decision driver

Reviews do double duty. They feed prominence, one of the three local ranking factors, and they drive the human decision in the pack, where a place with many recent, positive reviews wins clicks over one with few. Both the volume and the recency of reviews matter to that second job, since a diner scanning the pack reads the rating and the freshness as a proxy for whether the place is still good.

Solicit reviews, but do it within Google’s policies. Ask every guest, consistently, through a simple prompt (a card, a receipt link, a follow-up) that points to the review flow. What you must not do is incentivize reviews. Offering a discount, a free item, or any reward in exchange for a review violates Google’s review policy and risks removal of the reviews or worse. The durable method is volume through a frictionless, no-incentive ask, applied to every customer rather than cherry-picked happy ones.

Attributes, photos, and Posts as relevance and conversion signals

Beyond categories and the menu, the profile carries a set of attributes that feed both relevance and the diner’s decision, and most restaurants leave them half-filled. Attributes describe how the place actually operates: dine-in, takeout, delivery, outdoor seating, accepts reservations, good for groups, wheelchair accessible, and dietary options such as vegetarian, vegan, or gluten-free choices. These map directly onto how people qualify a restaurant before they go, so a query like “vegan restaurant near me” or “restaurant with outdoor seating” can only match a profile that has the corresponding attribute set. Filling them in is a few minutes of work that widens the set of queries you are eligible for, and leaving them blank quietly narrows it.

Photos do similar double duty. They give the diner a visual basis to choose, and a profile with current, well-lit photos of food, the interior, and the exterior reads as an active, real business in a way an empty or stale gallery does not. The exterior shot in particular helps a first-time visitor recognize the place from the street. Refresh the gallery on a schedule rather than uploading a handful of photos once at setup and never returning.

Google Business Profile Posts are a lighter-weight surface that signals the profile is actively managed. A short update about a seasonal menu, a holiday closure, a new dish, or an event appears on the listing and gives Google fresh, restaurant-specific text to associate with the profile. None of this replaces the fundamentals of categories, menu, and reviews, but a profile that posts occasionally and keeps its attributes and photos current is consistently the kind of complete, active listing that Google’s local systems favor over a dormant one.

Reservation and ordering surfaces, and hours discipline

Restaurants can surface booking and ordering actions directly in Search and Maps. Reserve with Google connects the profile to supported reservation partners so diners can book a table from the listing; the available partners and the exact behavior change over time, so confirm current Reserve with Google partner support before relying on a specific integration. Where direct booking is available, it removes a step between discovery and a filled table. Order-online links work similarly for takeout and delivery. Wire up whichever surfaces your booking and ordering systems support, and verify the current state of each in Google’s documentation rather than assuming a named integration still exists in the same form.

Special-hours discipline is mundane and high-impact. Set holiday and special hours on the profile ahead of time, because a profile that shows “open” when the restaurant is closed for a holiday produces wrong information, a wasted trip, and often a one-star review. Updating special hours in advance is one of the cheapest reputation protections available.

The mistake that undoes everything else

The common failure is a Google Business Profile claimed years ago and never touched: outdated hours, a primary category that no longer fits, a handful of old photos, no menu, and no recent reviews. None of the website work matters if the primary surface is stale, because the pack ranks and the diner decides on the profile. Audit the profile first for completeness and accuracy, keep it current, and only then optimize the supporting website.

Frequently Asked Questions

Should my menu be a PDF or an HTML page?

HTML, on a crawlable page. PDFs are weak for dish-level search and poor on mobile, so individual dish names in a PDF rarely match queries like “best carbonara near me.” An HTML menu makes every dish indexable text, opening long-tail matches, and you can mirror items into the Google Business Profile menu feature as well.

Can I offer a discount for leaving a review?

No. Incentivizing reviews violates Google’s review policy and can get the reviews removed. Ask every guest consistently through a simple, no-reward prompt instead; steady volume from a frictionless ask is both compliant and more durable than a burst of incentivized ones.

Does Restaurant schema guarantee a rich result?

No. Schema makes the page machine-readable and helps Google match cuisine and feature queries, but it does not guarantee a visual rich result. Name, address, and image are the essential properties, and you should confirm current eligibility in Google Search Central rather than assume a specific SERP treatment.

Sources

Google Search Central, Local Business (LocalBusiness) structured data: https://developers.google.com/search/docs/appearance/structured-data/local-business

Google Business Profile, prohibited and restricted content (review policy): https://support.google.com/contributionpolicy/answer/7400114

Reserve with Google: https://www.google.com/maps/reserve/