Menu Scraper

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.

$80 per 1,000 on Apify  ·  or subscribe direct from $150/mo

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

Restaurant Websites PDF Menus Image Menus Toast Square Online ChowNow BentoBox Popmenu DoorDash Uber Eats Grubhub

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.