MenuMiner - Restaurant Menu Scraper
Pricing
from $2.20 / 1,000 results
MenuMiner - Restaurant Menu Scraper
Extract restaurant menu data from public HTML and JSON-LD pages: restaurant name, categories, menu items, prices, and source URLs. Fast Cheerio-based scraper with clean dataset output and clear status notes for unsupported, blocked, or JS-rendered sites.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
Techionik
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
MenuMiner โ Restaurant Menu Scraper ๐ฝ๏ธ
๐ฝ๏ธ Overview
MenuMiner โ Restaurant Menu Scraper extracts structured restaurant menu data from public menu pages that expose menu items through server-rendered HTML or JSON-LD structured data.
It is designed to be fast, lightweight, and cost-efficient by using Cheerio-only scraping instead of browser automation.
Use MenuMiner to collect restaurant names, menu categories, item names, prices, and source URLs in a clean dataset format ready for restaurant research, food-tech platforms, pricing analysis, delivery catalog building, automation workflows, and data pipelines.
โ What This Actor Extracts
When a supported menu is found, each dataset row can include:
restaurantNameโ detected restaurant namecategoryโ menu category such as Appetizers, Mains, Desserts, DrinksitemNameโ menu item namepriceโ extracted menu item pricemenuPageUrlโ source URL where the item was found
If a menu is not detected, blocked, or unsupported, the Actor returns a clear status row instead of leaving the result empty.
๐ฆ Output Fields
โ Successful Menu Item Output
| Field | Description |
|---|---|
restaurantName | Name of the restaurant |
category | Menu category, if available |
itemName | Name of the menu item |
price | Extracted item price |
menuPageUrl | Source menu page URL |
โ ๏ธ Unsupported / Failed Page Output
| Field | Description |
|---|---|
restaurantName | Detected restaurant name or domain fallback |
menuPageUrl | URL that was checked |
status | Status such as no_menu_found, blocked_or_protected, or request_failed |
note | Clear explanation of why the menu was not extracted |
๐ Best Use Cases
MenuMiner is ideal for:
- Restaurant menu data collection
- Menu item and price extraction
- Food delivery catalog research
- Restaurant directory enrichment
- Menu price monitoring
- Competitive restaurant analysis
- Food-tech data pipelines
- Local business intelligence
- Market research
- Google Sheets, Make, n8n, Zapier, API, and database workflows
โ๏ธ How It Works
MenuMiner follows a clean and reliable extraction process:
- Loads each provided public menu URL
- Checks for JSON-LD structured menu data
- Scans server-rendered HTML for menu categories, items, and prices
- Detects the restaurant name from structured data, meta tags, page title, or domain
- Normalizes extracted prices
- Removes duplicate menu rows
- Filters promotional or non-menu text
- Saves clean menu items to the Apify dataset
- Returns a clear status note when a page is unsupported, blocked, or failed
๐ Input Example
{"startUrls": [{"url": "https://example-restaurant.com/menu"}],"maxPages": 5}
๐ Output Example
Successful Menu Item
{"restaurantName": "Example Restaurant","category": "Appetizers","itemName": "Garlic Bread","price": "$6.99","menuPageUrl": "https://example-restaurant.com/menu"}
Unsupported Page Example
{"restaurantName": "Example Restaurant","menuPageUrl": "https://example-restaurant.com/menu","status": "no_menu_found","note": "No menu data was detected in static HTML or JSON-LD. This actor supports server-rendered HTML and structured JSON-LD only."}
โ Supported Pages
MenuMiner works best with restaurant websites where menu data is visible in:
- Public restaurant menu pages
- Static HTML
- Server-rendered HTML
- JSON-LD structured data
- Direct ordering menu category pages
- Pages where menu item names and prices appear in the page source
โ Not Supported
This Actor does not bypass restrictions or extract menu data from pages where the menu is not available in public HTML or JSON-LD.
Unsupported cases may include:
- JavaScript-rendered menus
- React or Vue menus loaded after page load
- API-only ordering widgets
- Iframe-based menus
- PDF menus
- Image-only menus
- Login-protected menus
- Bot-protected websites
- Pages returning HTTP 403
- Websites where menu content is hidden from static HTML
๐ Good Input URLs
For best results, use direct public menu pages.
Good examples include:
- Restaurant menu pages
- Public HTML menu pages
- Ordering category pages with visible items and prices
- Pages where menu data appears in the page source
- Pages using JSON-LD menu schema
Avoid using:
- Restaurant homepages without visible menu items
- Pages that require button clicks to load the menu
- PDF-only menus
- Image-only menus
- Protected ordering platforms
- JavaScript-only menu widgets
๐ก Recommended Settings
For One Restaurant Menu
{"startUrls": [{"url": "https://example-restaurant.com/menu"}],"maxPages": 1}
For Multiple Menu Pages
{"startUrls": [{"url": "https://restaurant-one.com/menu"},{"url": "https://restaurant-two.com/menu"},{"url": "https://restaurant-three.com/menu"}],"maxPages": 10}
๐ Key Features
- Fast Cheerio-only scraping
- No browser automation required
- Lower runtime cost than browser-based scrapers
- Extracts restaurant names
- Extracts menu categories
- Extracts menu item names
- Extracts prices
- Supports JSON-LD menu data
- Supports server-rendered HTML menus
- Normalizes prices
- Removes duplicate rows
- Filters promotional and non-menu text
- Returns clear status notes for unsupported pages
- Provides clean structured dataset output
- Simple input configuration
- Easy to connect with APIs and automation tools
๐ง Data Quality Approach
MenuMiner is designed to produce clean and practical menu datasets.
It uses:
- JSON-LD menu extraction
- HTML menu scanning
- Restaurant name detection
- Price normalization
- Duplicate row removal
- Promotional text filtering
- Generic text filtering
- Professional status notes for unsupported pages
This keeps the output useful for business, research, and automation workflows.
๐ Output Access
After the run finishes, you can access the extracted menu data from:
- Apify Dataset
- Dataset API
- Overview table
- JSON export
- CSV export
- Excel export
- XML export
- Apify integrations
- Webhooks
โ ๏ธ Notes and Limitations
- Only publicly accessible menu data is extracted.
- The Actor does not bypass login walls, paywalls, API restrictions, or bot protections.
- JavaScript-rendered menus may not be supported.
- PDF, image, and iframe menus are not supported by this Cheerio-only version.
- The quality of results depends on how the restaurant website exposes its menu data.
- For best results, provide direct menu page URLs instead of restaurant homepages.
๐ฏ Why Use MenuMiner?
MenuMiner โ Restaurant Menu Scraper is a fast and cost-efficient way to extract structured restaurant menu data from public HTML and JSON-LD pages.
It is ideal for users who need clean menu items, categories, prices, and source URLs without the cost and complexity of browser-based scraping.
๐ ๏ธ Technology
Built with:
- Apify SDK
- Crawlee
- CheerioCrawler
- Cheerio
โ Status
Production-ready for public restaurant menu extraction from supported HTML and JSON-LD menu pages.