OpenTable Restaurant & Reservation Availability Scraper
Pricing
from $18.91 / 1,000 restaurant results
OpenTable Restaurant & Reservation Availability Scraper
Scrape OpenTable restaurants by location or URL: name, cuisines, price band, rating, review count, neighborhood, address, phone, coordinates, booking URL, plus optional reservation time slots. Export to JSON, CSV or Excel.
Pricing
from $18.91 / 1,000 restaurant results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
OpenTable Restaurant Scraper
Here is one real result, with every field the actor returns:
{"query": "New York","restaurantName": "Nobu Downtown","restaurantId": "4528","opentableUrl": "https://www.opentable.com/r/nobu-downtown-new-york","bookingUrl": "https://www.opentable.com/r/nobu-downtown-new-york","cuisines": ["Japanese"],"primaryCuisine": "Japanese","priceBand": "$50 and over","priceLevel": "$$$$","overallRating": 4.7,"reviewCount": 5436,"recentReservationCount": 129,"neighborhood": "Financial District","addressStreet": "195 Broadway","city": "New York","state": "NY","postalCode": "10007","country": null,"address": "195 Broadway, New York, NY, 10007","phone": "(212) 219-0500","website": null,"latitude": 40.7108399,"longitude": -74.0095723,"popularDishesAndTags": [],"diningStyle": "Casual Elegant","topReview": "We love nobu downtown. The 630 reservation is perfect for families! Amazing food and service. Always a great time!","aiVibe": "Casual Elegant","aiBestFor": ["date night", "business dinner", "families"],"aiHighlights": ["Exceptional Japanese cuisine", "Highly rated with 4.7 stars", "Great for families with early reservations", "Renowned for outstanding service"],"aiPriceValue": "Premium","source": "opentable.com","observedAt": "2026-08-20T18:52:51.706Z"}
The most complete OpenTable restaurant scraper available. It returns every field OpenTable exposes on its search and restaurant pages, from ratings and review counts to price band, neighborhood, full address, phone, coordinates and a highlighted review, plus derived fields like a coarse price level and an optional AI summary, and gives you three ways to target exactly the restaurants you need: by location, by cuisine or name, or by direct restaurant URL.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
- Related scrapers
What it does
This actor collects restaurant listings from OpenTable and returns clean, flat records ready for CSV, Excel or JSON. For each restaurant you get its name, cuisines, price band and a coarse price level ($ to $$$$), overall rating, review count, recent reservation activity, neighborhood, full address, phone when public, map coordinates, a highlighted review snippet and the OpenTable booking URL.
You can search three ways:
- By location (for example New York, Chicago or Brooklyn).
- By cuisine, dish or restaurant name combined with a location.
- By pasting one or more OpenTable restaurant URLs to scrape those exact restaurants.
An optional AI summary add-on adds a vibe phrase, who the restaurant is best for, standout highlights and a price-value verdict.
Quickstart
Provide a location, optionally a search term, and a result cap:
{"locationQuery": "New York","searchTerm": "Italian","maxResults": 25}
Input reference
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
locationQuery | string | one of these | City, neighborhood or area to search. | "New York" |
searchTerm | string | optional | Cuisine, dish or restaurant name to narrow the search. | "Italian" |
restaurantUrls | array | one of these | OpenTable restaurant URLs to scrape exactly, skipping search. | ["https://www.opentable.com/r/nobu-downtown-new-york"] |
aiRestaurantSummary | boolean | optional | Add an AI summary per restaurant (paid add-on, off by default, disabled on free plans). | false |
maxResults | integer | optional | Maximum restaurants to collect. Free plans are capped at 10. | 25 |
Provide either a locationQuery or searchTerm, or one or more restaurantUrls.
Output reference
| Name | Type | Description |
|---|---|---|
query | string | Location or search that produced this restaurant. |
restaurantName | string | Restaurant name. |
restaurantId | string | OpenTable restaurant id. |
opentableUrl | string | OpenTable restaurant page URL. |
bookingUrl | string | OpenTable reservation/booking URL. |
cuisines | array | Cuisines served. |
primaryCuisine | string | Primary cuisine. |
priceBand | string | Price band label as shown on OpenTable. |
priceLevel | string | Coarse price level ($ to $$$$). |
overallRating | number | Overall rating out of 5. |
reviewCount | integer | Total number of reviews. |
recentReservationCount | integer | Recent reservations booked on OpenTable. |
neighborhood | string | Neighborhood or area. |
addressStreet | string | Street address. |
city | string | City or locality. |
state | string | State or region. |
postalCode | string | Postal code. |
country | string | Country when listed. |
address | string | Full formatted address. |
phone | string | Phone number when public. |
website | string | Official website when listed. |
latitude | number | Latitude. |
longitude | number | Longitude. |
popularDishesAndTags | array | Popular dishes, dining styles, awards and tags. |
diningStyle | string | Dining style. |
topReview | string | Highlighted snippet from a top review. |
aiVibe | string | AI one-phrase vibe (AI add-on). |
aiBestFor | array | AI occasions it is best for (AI add-on). |
aiHighlights | array | AI standout highlights (AI add-on). |
aiPriceValue | string | AI price-value verdict (AI add-on). |
source | string | Data source. |
observedAt | string | ISO timestamp collected. |
Example output record
{"query": "Italian in New York","restaurantName": "Patrizias of Brooklyn","restaurantId": "1006366","opentableUrl": "https://www.opentable.com/r/patrizias-of-brooklyn","bookingUrl": "https://www.opentable.com/r/patrizias-of-brooklyn","cuisines": ["Italian"],"primaryCuisine": "Italian","priceBand": "$31 to $50","priceLevel": "$$$","overallRating": 4.3,"reviewCount": 468,"recentReservationCount": 11,"neighborhood": "Williamsburg","addressStreet": "35 Broadway","city": "Brooklyn","state": "NY","postalCode": "11249","country": null,"address": "35 Broadway, Brooklyn, NY, 11249","phone": "(718) 218-9272","website": null,"latitude": 40.710908,"longitude": -73.967365,"popularDishesAndTags": [],"diningStyle": "Casual Dining","topReview": null,"aiVibe": null,"aiBestFor": [],"aiHighlights": [],"aiPriceValue": null,"source": "opentable.com","observedAt": "2026-08-20T18:42:07.998Z"}
Run via API and CLI
Start a run with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~opentable-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"locationQuery":"New York","searchTerm":"Italian","maxResults":25}'
Or with the Apify CLI:
apify call scrapers_lat/opentable-scraper \--input '{"locationQuery":"New York","searchTerm":"Italian","maxResults":25}'
Fetch results
Download the dataset items once the run finishes:
$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=json"
Swap format=json for csv or xlsx to export a spreadsheet.
Billing and limits
- Pay per result: you are charged once per restaurant returned, not per page fetched.
- The AI summary is an optional add-on, off by default, and is charged only when a usable summary is produced.
- Failed or empty runs return no results and are not charged.
- Free Apify plans are capped at 10 results per run and cannot enable paid add-ons.
- A spend cap is respected: once your configured maximum charge is reached, the run stops returning billable results.
FAQ and troubleshooting
How do I scrape a specific restaurant? Paste its OpenTable URL into restaurantUrls.
Why is website sometimes null? OpenTable does not publish an external website for every restaurant; the field is null when it is not listed.
Can I search by cuisine only? Combine a cuisine in searchTerm with a locationQuery for the best results.
Do I need a proxy or login? No. Anti-bot handling is fully managed inside the actor and no OpenTable account or cookies are required.
Related scrapers
More scrapers at scrapers.lat.
