OpenTable Restaurant Search API Scraper avatar

OpenTable Restaurant Search API Scraper

Pricing

from $0.50 / 1,000 restaurant records

Go to Apify Store
OpenTable Restaurant Search API Scraper

OpenTable Restaurant Search API Scraper

Search OpenTable restaurants by location (city/area/address or lat-lng) with an optional cuisine/keyword term, and export rich records (name, id, profile URL, cuisines, price band, rating, review count, neighbourhood, address, coordinates, photos).

Pricing

from $0.50 / 1,000 restaurant records

Rating

0.0

(0)

Developer

R.L.

R.L.

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

OpenTable Restaurant Search Scraper 🏠 β€” Scrape OpenTable Restaurant Search.com ID, Name, Profile URL, Cuisines

OpenTable Restaurant Search Scraper β€” Search OpenTable restaurants by location (city/area/address or lat-lng) with an optional cuisine/keyword term, and export rich records (name, id, profile URL, cuisines, price band, rating, review count, neighbourhood, address, coordinates, photos). It reads OpenTable Restaurant Search's own API directly, so it's fast, reliable and complete β€” no flaky HTML parsing, no headless browser. Export to JSON, CSV, Excel, or an API.


✨ Why use this OpenTable Restaurant Search Scraper?

  • 🟒 No code required β€” set your input, click Start, download your data.
  • ⚑ Fast & accurate β€” reads OpenTable Restaurant Search's own private API and returns structured JSON, not scraped HTML.
  • 🧾 Rich, structured data β€” every field below, clean and ready to use.
  • πŸ” Full pagination β€” collects results to your maxItems cap.
  • πŸ’Έ Transparent pay-per-result pricing β€” pay only for the rows you get.
  • πŸ“€ Export anywhere β€” JSON, CSV, Excel, XML, or pull it live via the Apify API.

🎯 What can you do with OpenTable Restaurant Search data?

  • Market & competitor research β€” analyse OpenTable Restaurant Search property listings at scale.
  • Price & availability monitoring β€” track changes over time.
  • Data science & trend analysis β€” build clean datasets.
  • Lead generation & enrichment β€” feed OpenTable Restaurant Search data into your own tools.

πŸ“₯ What data does the OpenTable Restaurant Search Scraper extract?

Each row includes: id, name, url, cuisines, priceBand, priceBandId, rating, reviewCount, neighborhood, neighborhoodId, metroId, address, city, state …and more. See the full Data table below.


πŸš€ How to scrape OpenTable Restaurant Search.com (3 steps)

  1. Set your input β€” provide location or q (see the table below; defaults work out of the box).
  2. Pick options β€” filters, a proxyConfiguration, and a maxItems cap.
  3. Run & export β€” click Start, then download the dataset as JSON/CSV/Excel or fetch it via the API.

πŸ”Ž Deep scraping β€” details & reviews

Both are off by default and billed as separate pay-per-event surcharges, so a plain search run stays cheap.

OptionAddsEvent
Include restaurant detailsPhone number (raw digits + formatted), website, opening hours, dining style, dress code, parking, payment options, menu link, popular dishes, max party size, booking window, bookings in the last 24hdetail-row
Include diner reviewsReview text, author, posted/reservation dates, and per-category ratings β€” overall, food, service, ambience, value, noisereviews-row

Reviews are paged automatically to reviewsPerRestaurant and can be ordered by newest, highest rated, lowest rated or recommended. Enrichment runs in parallel (detailConcurrency, default 8) β€” 30 restaurants with both options take roughly 25 seconds rather than several minutes.

⚠️ Details need a US proxy

OpenTable geo-gates the restaurant-profile route. It does not return an error from a non-US IP β€” it simply hangs until the request times out. Measured on the Apify platform, same input, 5 restaurants:

ProxyPhones returnedRun time
Apify Proxy (default datacenter)3 / 5133 s
Apify Proxy β€” RESIDENTIAL, country US5 / 524 s

Residential US is therefore the default β€” details work out of the box, no configuration needed. It is not a speed penalty: a 100-record search-only run took 18.5 s on residential vs 16.1 s on datacenter, and used only 0.00012 GB of residential transfer (~860k records per 10 GB).

The difference is platform usage cost β€” that same run was $0.0028 residential vs $0.0004 datacenter. Search and reviews are not geo-gated, so for large search-only jobs switching proxyConfiguration to a datacenter group is the cheaper choice; keep residential whenever details are on.


βš™οΈ Input

FieldTypeDefaultDescription
locationstringNew York, NYCity, area, or address to search around (e.g. "New York, NY", "San Francisco"). Resolved to coordinates at run time.
qstring–Optional cuisine or keyword (e.g. "sushi", "Indian").
latnumber–Optional latitude override; skips the location lookup.
lonnumber–Optional longitude override; skips the location lookup.
maxItemsinteger100Maximum number of restaurants to return (0 = all pages).
includeDetailsbooleanfalseFetch each restaurant's full profile: phone number, website, opening hours, dining style, dress code, parking, payment options, menu link and popular dishes. One extra request per restaurant, billed as a separate detail-row event. Requires a US proxy β€” this route is geo-gated and simply hangs from non-US IPs.
includeReviewsbooleanfalseFetch diner reviews per restaurant β€” text, author, dates and the per-category ratings (food, service, ambience, value, noise). Billed as a separate reviews-row event.
reviewsPerRestaurantinteger20How many reviews to fetch for each restaurant (paged automatically). Only used when reviews are enabled.
reviewsSortenumnewestReviewWhich reviews come first. β€” one of newestReview, highestRating, lowestRating, recommended
detailConcurrencyinteger8How many restaurants to enrich in parallel (1-20). Raise for speed, lower to be gentler on the API and your proxy.
proxyConfigurationobjectApify ProxyRoute requests through Apify Proxy (defaults to RESIDENTIAL/US). Search works from any egress, but restaurant details are geo-gated to US IPs β€” enable Apify Proxy (RESIDENTIAL, country US) when using the details option.

Example input

{
"location": "New York, NY",
"maxItems": 100,
"includeDetails": false,
"includeReviews": false,
"reviewsPerRestaurant": 20,
"reviewsSort": "newestReview",
"detailConcurrency": 8,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}

πŸ“€ Output

Each result is a JSON object like this:

{
"id": "108541",
"name": "Sofi Restaurant",
"url": "https://www.opentable.com/restaurant/profile/108541",
"cuisines": [
"Italian"
],
"priceBand": "$31 to $50",
"priceBandId": "3",
"rating": 4.7,
"reviewCount": 159,
"neighborhood": "South Loop",
"neighborhoodId": "82",
"metroId": "3",
"address": "616 South Dearborn",
"city": "Chicago",
"state": "IL",
"postalCode": "60605",
"country": "United States",
"latitude": 41.8737957,
"longitude": -87.629455,
"images": [
"https://resizer.otstatic.com/v4/photos/67602167-3?width=105&height=105",
"https://resizer.otstatic.com/v4/photos/67602167-3?width=160&height=160",
"…+6 more"
],
"photosCount": 0,
"description": "Born in Milan to a renowned restaurant family, Chef/Owner Maurizio Michi has always had a passion for cooking.\nThis Northern Italian Restaurant features clas…",
"features": [
"RESERVATION",
"ONLINE_WAITLIST",
"…+2 more"
],
"firstNextAvailableTime": "2026-08-22T16:30",
"phone": "3127535502",
"phoneFormatted": "(312) 753-5502",
"website": "http://www.sofichicago.com/",
"menuUrl": null,
"hours": "Mon–Thu, Sun 4:00 pm–10:00 pm\nFri, Sat 4:00 pm–10:30 pm",
"diningStyle": "Casual Elegant",
"dressCode": "Business Casual",
"parkingInfo": "Street Parking",
"paymentOptions": [
"AMEX",
"Discover",
"…+2 more"
],
"popularDishes": [
"Gnocchi Genovese",
"Tagliatelle Bolognese",
"…+6 more"
],
"maxPartySize": 8,
"maxAdvanceDays": 90,
"isTakeoutEnabled": true,
"hasGenderNeutralRestroom": true,
"currencyCode": "USD",
"resosInLastDay": 24,
"reviewsFetched": 3,
"reviews": [
{
"…": "16 fields"
},
{
"…": "16 fields"
},
"…+1 more"
]
}

🧾 Data table

FieldTypeDescription
idtextID
nametextName
urllinkProfile URL
cuisinesarrayCuisines
priceBandtextPrice band
priceBandIdtextPrice band id
ratingnumberRating
reviewCountnumberReview count
neighborhoodtextNeighbourhood
neighborhoodIdtextNeighbourhood id
metroIdtextMetro id
addresstextAddress
citytextCity
statetextState
postalCodetextPostal code
countrytextCountry
latitudenumberLatitude
longitudenumberLongitude
imagesarrayPhoto URLs
photosCountnumberPhotos count
descriptiontextDescription
featuresarrayFeatures
firstNextAvailableTimetextFirst next available
phonetextPhone
phoneFormattedtextPhone (formatted)
websitelinkWebsite
menuUrllinkMenu
hourstextOpening hours
diningStyletextDining style
dressCodetextDress code
parkingInfotextParking
paymentOptionsarrayPayment options
popularDishesarrayPopular dishes
maxPartySizenumberMax party size
maxAdvanceDaysnumberBooking window (days)
isTakeoutEnabledtextTakeout
hasGenderNeutralRestroomtextGender-neutral restroom
currencyCodetextCurrency
resosInLastDaynumberBookings last 24h
reviewsFetchednumberReviews fetched
reviewsarrayReviews

πŸ’° Pricing β€” pay per result

This actor uses pay-per-event pricing: you pay only for the rows it delivers.

You scrapePrice
Restaurant record$0.50 per 1,000 rows
Restaurant details$0.50 per 1,000 rows
Diner reviews$0.50 per 1,000 rows

πŸ”Œ Use the OpenTable Restaurant Search Scraper via API

Run it programmatically with the Apify API:

curl -X POST "https://api.apify.com/v2/acts/opentable-api-scraper/runs?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"location": "New York, NY",
"maxItems": 100,
"includeDetails": false,
"includeReviews": false,
"reviewsPerRestaurant": 20,
"reviewsSort": "newestReview",
"detailConcurrency": 8,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}'

Or with the Apify CLI: apify call opentable-api-scraper -i input.json -o.


❓ FAQ

Do I need an account or API key for OpenTable Restaurant Search?

No. The actor talks to OpenTable Restaurant Search's public/mobile API for you β€” you only need an Apify account.

Do I need a proxy?

A proxy is recommended for reliable runs; set proxyConfiguration (Residential is safest for geo-restricted or bot-protected sites).

What export formats are supported?

JSON, CSV, Excel, XML, JSONL, RSS, or live via the Apify API and dataset endpoints.

Is scraping this legal?

You are responsible for how you use the data. Scrape only public property listing data and comply with OpenTable Restaurant Search.com's Terms and applicable law (e.g. GDPR/CCPA for personal data).


πŸ› οΈ How it works

The actor impersonates OpenTable Restaurant Search's official app/site and calls its private API the same way the app does, then normalises each response into the flat record above. No browser, no HTML scraping β€” just clean, structured data.


πŸ“Œ Good to know

  • Scrape only public property listing data and respect OpenTable Restaurant Search.com's Terms of Service and robots policy.
  • For personal data, comply with GDPR/CCPA and applicable law β€” you are the data controller.
  • Fields can be null when OpenTable Restaurant Search doesn't expose them for a given record.

⭐ Found this useful?

Give the OpenTable Restaurant Search Scraper a star on Apify and check out my other apify-*-api-scraper actors.