Restaurant Menu Scraper avatar
Restaurant Menu Scraper

Pricing

Pay per usage

Go to Apify Store
Restaurant Menu Scraper

Restaurant Menu Scraper

Extract restaurant menus, prices & reviews from delivery platforms. Get menu items, pricing, ratings & restaurant info. Perfect for market research & food delivery apps.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Vhub Systems

Vhub Systems

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Scrapes restaurant data and detailed menus from MenuPages.com (powered by Grubhub).

Features

  • Scrapes restaurant listings by city and state
  • Extracts detailed menu items with prices and descriptions
  • Optional cuisine type filtering
  • Outputs structured JSON data

Data Collected

For each restaurant:

FieldDescription
nameRestaurant name
fullAddressComplete address string
addressStructured address (street, city, state, zip)
phoneContact phone number
cuisineTypesArray of cuisine categories
priceRangePrice indicator ($, $$, $$$)
coordinatesLatitude and longitude
imageRestaurant image URL
menu.sectionsMenu sections with items
menu.totalItemsTotal menu items count

For each menu item:

  • name - Item name
  • description - Item description
  • price - Price (numeric)
  • currency - Currency code (USD)

Input Configuration

{
"city": "new-york",
"state": "ny",
"cuisineType": "italian",
"maxResults": 50,
"includeMenuItems": true
}

Parameters

ParameterTypeDefaultDescription
citystring"new-york"City slug (lowercase, hyphenated)
statestring"ny"Two-letter state code
cuisineTypestringnullFilter by cuisine (optional)
maxResultsinteger50Maximum restaurants to scrape
includeMenuItemsbooleantrueInclude detailed menu items

Supported Cities

Common examples:

  • ny-new-york (New York)
  • ny-brooklyn (Brooklyn)
  • il-chicago (Chicago)
  • ca-los-angeles (Los Angeles)
  • ca-san-francisco (San Francisco)
  • pa-philadelphia (Philadelphia)
  • fl-miami (Miami)
  • tx-houston (Houston)
  • wa-seattle (Seattle)
  • nv-las-vegas (Las Vegas)
  • ma-boston (Boston)

Example Output

{
"name": "Joe's Pizza",
"url": "https://menupages.com/joes-pizza/123-main-st-new-york",
"fullAddress": "123 Main St, New York, NY 10001",
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US"
},
"phone": "+12125551234",
"cuisineTypes": ["Pizza", "Italian"],
"priceRange": "$$",
"coordinates": {
"latitude": 40.7128,
"longitude": -74.0060
},
"menu": {
"sections": [
{
"name": "Pizzas",
"items": [
{
"name": "Margherita",
"description": "Fresh mozzarella, tomato sauce, basil",
"price": "18.00",
"currency": "USD"
}
]
}
],
"totalSections": 5,
"totalItems": 42
},
"scrapedAt": "2026-01-31T12:00:00.000Z"
}

Usage

On Apify Platform

  1. Go to the actor page
  2. Configure input parameters
  3. Run the actor
  4. Download results from the Dataset tab

Locally

npm install
npm start

Set input via INPUT.json file or environment variables.

Rate Limits

The scraper uses reasonable concurrency (5 requests) to avoid overloading the source. For large-scale scraping, consider using Apify proxies.

This scraper collects publicly available data. Please review MenuPages' Terms of Service and robots.txt before use. Use responsibly.