VOOZH about

URL: https://apify.com/menus-r-us/restaurant-menu-scraper

⇱ Restaurant Menu Scraper - Items, Prices & Categories Β· Apify


Pricing

from $80.00 / 1,000 medium cache extractions

Go to Apify Store

Restaurant Menu Scraper

Extract structured menu data from restaurant websites. Returns items, prices, descriptions, and categories. Handles direct sites, Toast, Square, Popmenu, and PDFs. Search by name + location or provide a URL. AI-powered completeness grading. ~70% success rate.

Pricing

from $80.00 / 1,000 medium cache extractions

Rating

5.0

(1)

Developer

πŸ‘ Douglas Page

Douglas Page

Maintained by Community

Actor stats

1

Bookmarked

100

Total users

22

Monthly active users

64 days

Issues response

a month ago

Last modified

Share

Extract structured menu data from independent and local restaurant websites. Returns clean JSON with categories, items, prices, and descriptions.

Works best with independent restaurants, local chains, and fine dining establishments that publish their own menus online.

Three Ways to Use

URL Mode (default)

Give it a restaurant URL and get back a structured menu. The scraper finds the menu on the site β€” whether it's an HTML page, a PDF, or listed on a third-party platform like Yelp or DoorDash β€” and extracts everything into clean JSON.

URL List Mode

Give it a list of restaurant URLs and it scrapes each one sequentially. Results appear in the dataset as each restaurant completes. Failed extractions in bulk runs are free.

Search Mode

Tell it a cuisine and a city, and it discovers restaurants in that area via Google Places, then scrapes each one. Results appear in the dataset one at a time as each restaurant completes.

Input

URL Mode

FieldTypeRequiredDescription
modeenumNoSet to "url" (this is the default)
urlstringYesRestaurant website URL (e.g. https://franklinbbq.com)
locationstringNoFor multi-location restaurants, specify which location (e.g. "San Diego")
freshnessenumNoHow fresh the data should be (default: med_cache)

URL List Mode

FieldTypeRequiredDescription
modeenumYesSet to "urls"
urlsstring[]YesList of restaurant website URLs to scrape
locationstringNoOptional location context for multi-location restaurants
freshnessenumNoHow fresh the data should be (default: med_cache)

Search Mode

FieldTypeRequiredDescription
modeenumYesSet to "search"
querystringYesCuisine or restaurant type (e.g. "sushi", "Mexican", "Italian", "BBQ")
locationstringYesCity or area to search (e.g. "Pasadena, CA", "Austin, TX")
freshnessenumNoHow fresh the data should be (default: med_cache)

The word "restaurants" is automatically added to your search query, so just enter the cuisine type.

Freshness Tiers

Controls how recently the menu data was scraped. Cached data is faster and cheaper.

TierMax AgeCost
long_cache180 days$0.02/request
med_cache60 days$0.03/request
short_cache14 days$0.04/request
fresh1 day$0.05/request

Billing

You only pay for successful, quality extractions. Failed scrapes and low-quality results are free in both URL and Search modes.

  • Successful extraction with complete or mostly-complete menu β†’ billed
  • Failed extraction (site blocked, no menu found, etc.) β†’ free
  • Low-quality extraction (missing core menu sections, e.g. only drinks for a BBQ restaurant) β†’ free

Each dataset row includes a billable field (true or false) for full transparency.

What It Extracts

Each restaurant produces a structured menu with:

  • Categories β€” Appetizers, EntrΓ©es, Desserts, Drinks, etc.
  • Menu items β€” Name, description, and price for each dish
  • Extraction confidence β€” high, medium, or low so you know how complete the data is
  • Completeness grade β€” AI-verified assessment of whether the menu is complete (see below)
  • Restaurant name β€” The official business name as shown on the website

The scraper handles HTML menus, PDF menus, and third-party platforms (Yelp, DoorDash, etc.), automatically choosing the best source.

Completeness Grading

Every successful extraction is evaluated by AI to determine whether the menu is complete for the restaurant type. The grade appears in menu.completeness:

GradeMeaning
completeFull menu with all expected sections (30+ items, 4+ categories)
likely_completeLooks complete, minor uncertainty (20+ items, 3+ categories)
partial_core_questionableSome food items but feels thin or incomplete
partial_core_missingMissing primary food offering (e.g., only drinks for a BBQ restaurant)
minimalFewer than 5 items or too vague to be useful
not_a_menuExtracted content is not menu data

The completeness object also includes reasoning (why it got that grade), restaurant_type (detected cuisine), and missing_sections (what appears to be absent).

Important Limitations

  • Fast food chains are excluded from search results. National fast food chains (McDonald's, Subway, Taco Bell, Chick-fil-A, etc.) are automatically filtered out. These large multi-location chains frequently use dynamic menu systems that don't scrape reliably, and their menus are widely available through other channels.
  • Best results come from independent restaurants that publish their own menu on their website or as a PDF. Regional and fine dining chains with individual location pages also work well.
  • Some restaurants will fail β€” not every website has a scrapeable menu. The dataset will include both successes and failures so you can see exactly what worked.

Output Examples

URL Mode

Input:

{
"url":"https://franklinbbq.com"
}

Dataset row:

{
"success":true,
"url":"https://franklinbbq.com",
"restaurantName":"Franklin Barbecue",
"itemCount":45,
"confidence":"high",
"extractionConfidence":{
"confidence":"high",
"item_count":45,
"has_prices":true,
"has_descriptions":true,
"price_coverage":0.89
},
"menu":{
"categories":[
{
"name":"Barbecue",
"items":[
{
"name":"Brisket",
"price":"$28.00/lb",
"description":"Oak-smoked for 18 hours"
}
]
}
]
}
}

URL List Mode

Input:

{
"mode":"urls",
"urls":[
"https://franklinbbq.com",
"https://cocina35.com",
"https://saltyflamerestaurant.com"
]
}

Run summary (available in the OUTPUT key-value store after completion):

{
"mode":"urls",
"totalUrls":3,
"successful":2,
"failed":1,
"billableCount":2,
"nonBillableFailures":1
}

Dataset rows use the same format as URL Mode, one row per restaurant.

Search Mode

Input:

{
"mode":"search",
"query":"sushi",
"location":"Pasadena, CA"
}

Dataset rows (one per restaurant, streamed as each completes):

{
"success":true,
"url":"https://sushigen.com",
"restaurantName":"Sushi Gen",
"searchQuery":"sushi",
"searchLocation":"Pasadena, CA",
"serperTitle":"Sushi Gen",
"serperAddress":"123 Main St, Pasadena, CA 91101",
"itemCount":62,
"confidence":"high",
"extractionConfidence":{
"confidence":"high",
"item_count":62,
"has_prices":true,
"has_descriptions":true,
"price_coverage":0.95
},
"menu":{
"categories":[
{
"name":"Nigiri",
"items":[
{
"name":"Salmon",
"price":"$6.50",
"description":"Two pieces, fresh Atlantic salmon"
}
]
}
]
}
}

Failed restaurants also appear in the dataset:

{
"success":false,
"url":"https://example-restaurant.com",
"restaurantName":"Example Restaurant",
"searchQuery":"sushi",
"searchLocation":"Pasadena, CA",
"error":"all_sources_failed",
"errorMessage":"Could not extract menu from any available source"
}

Run summary (available in the OUTPUT key-value store after completion):

{
"mode":"search",
"query":"sushi",
"location":"Pasadena, CA",
"totalFound":20,
"excludedFastFood":2,
"skippedNoWebsite":3,
"totalScraped":15,
"successful":12,
"failed":3
}

Use Cases

  • Restaurant aggregators β€” Build menu databases for a city or region
  • Food delivery apps β€” Import menus from local restaurants automatically
  • Market research β€” Compare pricing across restaurants by cuisine and area
  • Price monitoring β€” Track how menu prices change over time
  • Location intelligence β€” Map restaurant offerings by geography

About the developer

This actor is built and maintained by Menus API β€” structured data extraction APIs for developers. Also see our Business Profile Enricher and Email Finder for extracting non-menu business data.

Need higher volume or a direct API subscription instead of Apify? View direct plans or email support@menusapi.com.

You might also like

Restaurant Menu Scraper

wedo_software/wedo-scrape-menu

AI Restaurant Menu Scraper: Extract prices, descriptions, and allergens from images, PDFs, or web pages using OCR. Turn any restaurant URL into a structured Menu API.

Google Maps Restaurant Scraper

gtgyani206/google-maps-restaurant-scraper

This actor is designed for restaurant lead generation, local market research, directory building, and menu-enrichment workflows. It is especially useful when you need a Google Maps restaurant scraper that produces structured output instead of raw HTML.

πŸ‘ User avatar

Gyanendra Thakur

67

Grubhub Scraper - Extract Restaurant Data, Menus & Reviews

alizarin_refrigerator-owner/grubhub-scraper

Scrape comprehensive restaurant data from Grubhub including menus, pricing, ratings, and delivery details. Perfect for market research, competitive analysis, and food industry intelligence. Research Restaurant Markets Track Menu Pricing Compare Platforms Build Restaurant Databases Analyze Trends

Just Eat Restaurant Menu Scraper 🍽️

easyapi/just-eat-restaurant-menu-scraper

Extract detailed menu data from Just Eat restaurant pages including items, prices, variations, deals, and nutritional information. Perfect for food delivery analytics, menu research, and price monitoring. 🍽️

DoorDash Restaurant Scraper

crawlerbros/doordash-restaurant-scraper

Extract restaurant info + complete menus from DoorDash store pages like name, address, cuisine, breadcrumbs, FAQ, and full menu sections with item names, descriptions, and prices.

20

🍴Uber Eats Scraper [RENTAL]

borderline/ubereats-scraper

Rental - Fast and cost-effective Uber Eats Scraper requiring just a search query and location or by url. Instantly retrieve comprehensive restaurant data, including names, ratings, locations, reviews and menus. Seamlessly integrates with tools like n8n, and more, offering a highly efficient solution

299

4.7

DoorDash | Meta | Menu | Reviews | Business | Search...

memo23/doordash-reviews-cheerio

Extract complete DoorDash restaurant intelligence: full menus, pricing, reviews, ratings, and operational data. Transform restaurant pages into structured JSON perfect for market research, competitive analysis, and business intelligence. Get comprehensive data beyond basic listings.

πŸ‘ User avatar

Muhamed Didovic

115

4.9

Doordash Restaurant Scraper

yasmany.casanova/doordash-restaurant-scraper

Scrape DoorDash restaurant menus and store details. Extract prices, descriptions, images, ratings, delivery fees, and dietary info. Ideal for market research and price monitoring.

πŸ‘ User avatar

Yasmany Grijalba Casanova

132

Uber Eats Scraper

natanielsantos/uber-eats-scraper

This no-code tool allows you to scrape data from Uber Eats restaurants, like name, categories, location, menu items, and more.

πŸ‘ User avatar

Nataniel Santos

214

🍴Uber Eats Scraper [PPR]

borderline/uber-eats-scraper-ppr

Pay per result - Fast and cost-effective Uber Eats Scraper requiring just a search query and location or using stores urls. Instantly retrieve comprehensive restaurant data, including names, phone, ratings, locations, and menus. Seamlessly integrates, offering a highly efficient data solution.

475

5.0