Restaurant Menu Extractor - Prices, Dishes & PDF Menus avatar

Restaurant Menu Extractor - Prices, Dishes & PDF Menus

Pricing

from $40.00 / 1,000 menu extracteds

Go to Apify Store
Restaurant Menu Extractor - Prices, Dishes & PDF Menus

Restaurant Menu Extractor - Prices, Dishes & PDF Menus

Turn any restaurant's own website into a structured menu: sections, dish names, descriptions, prices and dietary tags. Reads schema.org menus, Squarespace/BentoBox/WordPress menu blocks, HTML menu pages and PDF menus. No AI, no browser: fast and cheap. You pay only for menus actually extracted.

Pricing

from $40.00 / 1,000 menu extracteds

Rating

0.0

(0)

Developer

Quid Novi

Quid Novi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Restaurant Menu Extractor – Menu Prices, Dishes & PDF Menus from Any Restaurant Website

Restaurant Menu Extractor turns a restaurant's own website into a clean, structured menu dataset: menu sections, dish names, descriptions, menu prices and dietary tags (vegan, vegetarian, gluten-free, dairy-free, spicy). It reads HTML menu pages and PDF menus, follows "Menu", "Dinner", "Drinks" and "Happy Hour" links automatically, and exports to JSON, CSV or Excel.

No AI and no headless browser, so it is fast and cheap. You only pay for menus that were actually extracted. Sites with no usable menu are reported with a reason and are free.

What can this restaurant menu scraper do?

  • 🍽️ Extract menu items with prices from any restaurant website URL (homepage or menu page)
  • 📄 Parse PDF menus (including side-by-side multi-column layouts)
  • 🧭 Auto-discover menu pages: dinner, lunch, brunch, drinks, wine, cocktails, desserts, happy hour
  • 🧩 Reads schema.org Menu (JSON-LD), Squarespace menu blocks, BentoBox menus and WordPress restaurant-menu plugins, plus a generic dish/price parser for everything else
  • 🏷️ Dietary tags detected from names and descriptions
  • 📊 Price stats per restaurant (min, max, median) for quick menu price comparison and competitor menu analysis
  • ✅ Pay only for success: no charge for blocked, image-only or JavaScript-only menus
  • 🤖 Respects robots.txt. Never crawls delivery or ordering platforms (DoorDash, Uber Eats, Grubhub, Toast online ordering, Yelp…), and tells you when a menu only lives there

Who uses it?

  • Restaurant owners and operators: track competitor menu prices, benchmark your pricing, and spot menu trends near you
  • Food distributors and CPG sales teams: see which dishes and ingredients local restaurants feature before a sales call
  • Restaurant tech, POS and marketing agencies: onboard a new client's menu in seconds instead of retyping it
  • Market researchers and data teams: build menu price datasets and track menu inflation
  • AI agents and RAG apps: give an LLM a clean, structured menu instead of messy HTML

How to use it

  1. Paste one or more restaurant website URLs into Restaurant website URLs.
  2. (Optional) Turn on One row per menu item for a spreadsheet-friendly output.
  3. Click Start and download your data as JSON, CSV, Excel or HTML, or pull it through the API.

Input example

{
"startUrls": [{ "url": "https://www.hattieb.com" }, { "url": "https://zunicafe.com" }],
"flattenItems": false,
"maxPagesPerRestaurant": 6
}

Output example (one restaurant, trimmed)

{
"url": "https://www.hattieb.com",
"status": "ok",
"restaurantName": "Hattie B's Hot Chicken - Birmingham",
"itemCount": 27,
"sectionCount": 9,
"currency": "USD",
"priceStats": { "min": 3.0, "max": 15.5, "median": 7.0, "count": 27 },
"confidence": "high",
"extractionMethods": ["schema.org-jsonld"],
"items": [
{ "section": "On the Bone", "name": "Half Bird - All White", "price": 15.5, "priceText": "15.50",
"description": "Half bird all white meat with choice of heat level", "dietary": [] }
],
"charged": true
}

Statuses: ok, no_menu_found, too_few_items, menu_on_ordering_platform, blocked_by_robots, fetch_error, unsupported_platform. Only ok is charged.

How much does it cost to scrape a restaurant menu?

You pay a flat price per restaurant menu extracted (see the Pricing tab), regardless of how many dishes or PDF pages the menu has. Failed sites are free. A run over 100 restaurant websites usually takes about 1–2 minutes.

Limitations (honest)

  • Menus published only as images or rendered only by JavaScript are not extracted. They are reported as no_menu_found and not charged. In our test on 25 random US restaurant sites, 10 menus were extracted (40%), 3 sites blocked crawlers through robots.txt, and 1 site had its menu only on an ordering platform.
  • Prices come back as printed. Multi-price items like "5.00 / 6.50" keep the full priceText, and price holds the first number.
  • confidence: high means structured markup; medium means the heuristic text or PDF parser was used.

FAQ

Is it legal to scrape restaurant menus? This Actor only reads pages that restaurants publish openly on their own websites. It obeys robots.txt and skips third-party ordering and delivery platforms. You are responsible for how you use the data. Consult a lawyer if unsure.

Can I monitor menu price changes? Yes. Schedule the Actor (for example weekly) and compare items between runs.

Does it work with the API, Make, Zapier, n8n or an AI agent (MCP)? Yes, like every Apify Actor.

Found a menu that should work but doesn't? Open an issue on the Issues tab with the URL. We fix parsers quickly.