Restaurant menus as clean JSON, from anywhere on the web
Send a URL, get back categories, items, prices, and descriptions. Handles PDFs, images, ordering iframes, and every major restaurant platform. Multi-source discovery finds the menu even when it's not on the homepage.
One request, one clean response
No scraping rules. No selector maintenance. Just URL in, JSON out.
Request
POST /api/scrape
{
"url": "https://joespizza.com",
"location": "New York, NY",
"max_age_days": 60
}
Response
{
"success": true,
"data": {
"restaurant_name": "Joe's Pizza",
"source_type": "website",
"extraction_method": "html_parse",
"item_count": 47,
"menu": {
"categories": [{
"name": "Pizzas",
"items": [{
"name": "Margherita",
"price": "$18.00",
"description": "San Marzano, basil, fior di latte"
}]
}]
}
}
}
Handles every menu source in the wild
Built for production workloads
Features that matter when you're scraping thousands of menus.
Multi-source discovery
Finds menus across the site, PDFs, and ordering platforms. Automatically picks the best source based on completeness and freshness.
4 freshness tiers
Cache hits return in under 100ms. Choose 1-day, 14-day, 60-day, or 180-day cache. Lower freshness = lower price.
Batch up to 2,000
Submit large batches in one call. Async processing with simple polling. Cancel anytime mid-batch.
Quality scoring
Every extraction gets a completeness grade. Partial, minimal, and error results are never billed.
Vision AI fallback
If a menu is image-only or trapped behind JavaScript, GPT-4o vision takes over. No extra config.
Deduplication built-in
We detect and merge duplicate items across sources. Clean output, no repeats.
What people build with it
From food-tech startups to market research teams.
Restaurant discovery apps
Populate your app with menu data for every restaurant in a city. One batch job, thousands of menus.
Market intelligence
Track pricing and menu changes across chains and competitors. Weekly batches, diff the JSON.
AI training data
Build food-related LLM datasets with structured nutritional, pricing, and category metadata.
POS & inventory systems
Onboard restaurants by importing their current menu in one step. Skip the hour of manual data entry.
Frequently asked
What formats do you handle?
HTML websites, PDF menus (text and scanned), image-based menus (JPG/PNG/WebP), JavaScript-rendered pages, and embedded ordering iframes. The extraction path is chosen automatically — you don't have to tell us what format the menu is in.
How accurate is the extraction?
Every response includes a quality score. We ship only high-quality results to paying calls — partial and minimal extractions are returned but not billed. In our production smoke tests, typical HTML menus land 25-45 items with full category/price/description coverage.
Can I use it for commercial scraping?
Yes. You're responsible for complying with each site's terms of service. We respect robots.txt and do not scrape logged-in or paywalled content.
Apify or direct — which should I pick?
Apify if you want pay-per-run with no commitment, the Apify UI, or need integration with other Apify actors. Direct API if you're doing consistent volume (you save on per-request cost at higher tiers), need webhooks, or want dedicated support.
What about rate limits?
No hard rate limit on direct API keys. The service is designed to handle concurrent batches. If you need guaranteed throughput SLA, contact us about the Business tier.
Start scraping menus in minutes
No setup, no scraper code, no CSS maintenance. One URL, one JSON response.