Website Menu Enrichment Scraper avatar

Website Menu Enrichment Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Website Menu Enrichment Scraper

Website Menu Enrichment Scraper

Restaurant Website Menu Scraper & Enrichment extracts structured menu data, menu sections, and prices from restaurant websites. It is designed for Apify workflows that start with Google Maps or local business discovery and then enrich each restaurant record with website-only menu coverage

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Gyanendra Thakur

Gyanendra Thakur

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Restaurant Website Menu Scraper & Enrichment

Restaurant Website Menu Scraper & Enrichment extracts structured menu data, menu sections, and prices from restaurant websites. It is designed for Apify workflows that start with Google Maps or local business discovery and then enrich each restaurant record with website-only menu coverage.

Best use cases

  • Enrich Google Maps restaurant leads with website menu data
  • Capture menu sections, item names, descriptions, and prices
  • Re-scrape restaurant websites on a freshness window instead of every run
  • Run direct website menu scraping from raw startUrls

What the Actor does

For each restaurant record or website URL, the Actor:

  1. prioritizes likely menu pages such as /menu, /food-menu, /drinks, /lunch, and /dinner
  2. stays on the same website domain
  3. extracts menu items from JSON-LD and DOM content
  4. normalizes prices into numeric values and currency codes when possible
  5. groups menu items into menu sections
  6. caches fresh results in website-menu-enrichment-cache

Input

Use either discovery records or direct website URLs.

{
"restaurants": [
{
"restaurantId": "abc123",
"name": "Example Bistro",
"website": "https://examplebistro.com",
"googleMapsUrl": "https://maps.google.com/...",
"location": "Austin, TX",
"mapsMenuItemCount": 2,
"needsWebsiteEnrichment": true,
"websiteTargets": ["https://examplebistro.com/menu", "https://examplebistro.com"]
}
],
"sourceDiscoveryRunId": "run-123",
"maxPagesPerSite": 5,
"maxConcurrency": 5,
"freshnessWindowDays": 7,
"forceRefresh": false
}

You can also run the Actor with:

{
"startUrls": [{ "url": "https://examplebistro.com/menu" }]
}

Output

Each dataset item includes:

  • restaurantId
  • name
  • website
  • sourceDiscoveryRunId
  • menuSourcePages
  • pagesScanned
  • menuSections
  • normalizedItems
  • menuItemCount
  • currency
  • confidenceScore
  • scrapeStatus
  • scrapedAt

Possible scrapeStatus values:

  • completed
  • completed_partial
  • cached
  • skipped_missing_website
  • skipped_not_requested
  • no_menu_found
  • menu_link_found
  • failed

Notes

  • Same-domain crawling only
  • Best results come from discovery records with websiteTargets
  • Proxy configuration is optional and exposed in the input schema
  • Local storage/ output is for development only and is not uploaded by apify run