Dish Photo Matcher — Google Maps Food Photos to Menu Items avatar

Dish Photo Matcher — Google Maps Food Photos to Menu Items

Pricing

from $12.00 / 1,000 photo matcheds

Go to Apify Store
Dish Photo Matcher — Google Maps Food Photos to Menu Items

Dish Photo Matcher — Google Maps Food Photos to Menu Items

Match restaurant food & drink photos to menu items with AI vision. Scrapes Google Maps guest photos (or takes your photo URLs) plus your menu, returns {photoUrl, dishName} pairs. More than a Google Maps photos scraper: every photo is AI-matched to a dish. No API keys needed.

Pricing

from $12.00 / 1,000 photo matcheds

Rating

0.0

(0)

Developer

Nomad Dev

Nomad Dev

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Restaurant Dish Photo Matcher — Match Food Photos to Menu Items

Use AI vision to predict which supplied menu item, if any, appears in each restaurant food or drink photo — no API key input or setup. Unmatched or uncertain photos remain null. This actor joins menus and otherwise unlabeled guest photos:

  • Input: your menu (JSON array of items) + uploaded food/drink photos, direct photoUrls, or a Google Maps placeUrl whose "Food & drink" guest photos are fetched automatically.
  • Output: one record per photo — {photoUrl, dishName, matched}, with dishName the exact menu item name or null when nothing matches.

More than a plain Google Maps photos scraper: instead of dumping raw guest-photo URLs, AI vision proposes a menu-item match for each photo and returns null when no supplied item is a clear match.

Photos are matched in batches of 9 by visual appearance; hallucinated names (not on your menu) are filtered to null automatically. Ported from the production photo-matching pipeline of a dietary-restrictions travel app.

What you can build with it

  • Menu enrichment — propose guest-photo matches for dishes on a parsed menu (delivery apps, restaurant sites, food discovery apps).
  • Google Maps photo labeling — turn an unlabeled pile of place photos into structured photo → dish data.
  • Menu photo review — shortlist which menu items may appear in guest uploads for human verification.
  • Food image classification against a known label set — unlike generic image-classification APIs, the label space is your menu, so results are directly usable.

No API keys needed

Photo fetching and AI matching both run on our managed keys, and their cost is already included in the per-photo price. No Google AI Studio signup, no Outscraper account, or API key input is needed.

Input example

{
"placeUrl": "https://www.google.com/maps/place/Katz's+Delicatessen,+205+E+Houston+St,+New+York",
"menuItems": [
{"name": "Pastrami on Rye", "category": "Sandwiches"},
{"name": "Matzo Ball Soup", "category": "Soups"}
]
}

menuItems accepts plain strings too: ["Pastrami on Rye", "Matzo Ball Soup"]. Fields originalName, category and description improve match quality. The untouched Console form is prefilled with Katz's Delicatessen as the photo source. Running that exact default returns a deterministic row labelled recordType: "DEMO" / isDemo: true; it performs no live photo lookup or AI call and has no Actor event charge. Customize the input to start a live run. The Console accepts local JPEG, PNG, or WebP uploads in photoUrls; API callers may also provide URLs, base64 data URIs, or raw base64. photoUrl remains a real sanitized HTTP(S) URL when one exists; inline images use photoUrl: null plus a non-sensitive photoRef fingerprint.

Output example

photoUrldishNamematched
https://lh3.googleusercontent.com/p/AF1…Pastrami on Ryetrue
https://lh3.googleusercontent.com/p/AF2…Matzo Ball Souptrue
https://lh3.googleusercontent.com/p/AF3…nullfalse

Unmatched photos (interiors, receipts, dishes not on your menu) come back with dishName: null — they are analyzed and billed like any other photo, since confirming a non-match costs the same AI work as a match.

Chain it: scrape menu → match photos

The Google Maps Menu Scraper and AI Menu Parser actors produce menu records this actor accepts directly:

  1. Run Google Maps Menu Scraper on a place → structured menuItems.
  2. Feed those items plus the same placeUrl into this actor.
  3. Join rows with non-null dishName; unmatched dishes may still have no photo.

Pricing — what does a run cost?

EventPrice
Actor start after successful live output$0.05
Per photo matched (or confirmed unmatched)$0.012

A live run with the default 9-photo cap costs about $0.16, AI and photo-scraping costs included. Diagnostic-only runs incur neither event charge. Raw Google Maps photo scrapers charge less per photo, but return unlabeled URLs — here the per-photo fee includes the AI vision inference that turns each photo into a labeled photo → dish pair.

Prefer to pay Google and Outscraper directly and control your own quota? The Restaurant Dish Photo Matcher (BYO keys) actor is the same matcher at a lower per-photo price, with geminiApiKey / outscraperApiKey inputs.

FAQ

Why do some photos come back unmatched? Google Maps "Food & drink" galleries include drinks, interiors and dishes that aren't on the menu you supplied. matched: false is a real answer, not an error — filter on it.

photoUrls vs placeUrl — which should I use? photoUrls if you have local photos or image URLs (from your own scrape or dataset). placeUrl to let the actor fetch the place's guest food photos for you. When both are set, photoUrls wins.

Full Google Maps URLs and maps.app.goo.gl short links are accepted; short links are resolved only to trusted Google Maps destinations.

How many photos can one run match? Up to 100 (maxPhotos, default 9). Values above 100 are clamped, not rejected.

What AI model does the matching? Gemini Flash-Lite vision — fast and accurate for appearance matching, and its cost is included in the per-photo price.

Can I run it on non-restaurant photos? It works on any photo-vs-item-list matching where appearance decides — but it's tuned for food and drink.

Can I rely on every match? No. AI photo matching can be wrong. Verify matches before publishing or using them in ordering workflows, and never treat a visual match as evidence of ingredients, allergens, or dietary suitability.