OpenTable + Resy Scraper
Pricing
from $2.70 / 1,000 restaurants
OpenTable + Resy Scraper
Scrape OpenTable and Resy restaurant data by city, cuisine, search query, URL, or slug. Export ratings, prices, photos, source links, and Resy availability.
Pricing
from $2.70 / 1,000 restaurants
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
🍽️ OpenTable + Resy scraper for restaurant data
OpenTable + Resy Scraper collects public restaurant data from OpenTable and Resy in one Apify Actor. Search by city, cuisine, or keyword, or paste direct venue URLs and slugs when you already know the restaurants you want to export.
Use this OpenTable + Resy scraper when you need restaurant names, source IDs, profile URLs, cuisines, prices, ratings, review counts, neighborhoods, photos, and source context in one dataset. Direct Resy venue runs also check availability for the selected date and party size, so you can monitor reservation context without opening each restaurant page by hand.
For a quick first run, keep the prefilled New York Italian search with OpenTable + Resy selected and Restaurant limit set to 150. The Actor will return one row per restaurant and interleave OpenTable and Resy results under the same total limit.
✅ What this Actor does
- Searches OpenTable, Resy, or both platforms in one run.
- Searches by city, cuisine, keyword, reservation date, and party size.
- Accepts direct OpenTable and Resy venue URLs or slugs.
- Saves one dataset row per restaurant profile.
- Extracts source IDs, source URLs, names, cuisines, price bands, ratings, review counts, neighborhoods, photos, and scrape timestamps when the source returns them.
- Adds OpenTable-specific fields such as recent reservation counts, feature flags, and private dining flags when available.
- Adds Resy-specific fields such as venue type, description, contact data, and direct venue availability snapshots when available.
- Lets you filter saved rows by country, price range, and minimum rating when those fields are available.
- Works with Apify dataset exports, API clients, schedules, webhooks, and integrations.
- Creates restaurant charge events only for saved restaurant profiles.
This Actor focuses on public restaurant data from OpenTable and Resy. It does not place reservations, book tables, scrape private account data, ask for cookies, or use user-provided OpenTable or Resy API keys.
📦 Data you can extract
Each saved restaurant row can include:
platform:opentableorresyentityId,sourceId,sourceSlug, andsourceUrlnameandrecordTypeprimaryCuisineandcuisinesprice.label,price.bandId, andprice.currencySymbolrating.average,rating.reviewCount, andrating.sourceaddress,coordinates, andneighborhoodcontact.phoneandcontact.websitewhen availablemedia.coverImageUrlandmedia.imageUrlsopenTable.recentReservationCount,openTable.features, andopenTable.privateDiningresy.venueType,resy.description, andresy.availabilitysource.targetType,source.inputTarget,source.query,source.city,source.cuisine, andsource.rankscrapedAt
OpenTable and Resy do not expose every field for every venue. Empty or missing source fields are left out instead of being guessed.
🔎 How to run it
- Choose Restaurant platform: OpenTable, Resy, or both.
- Choose Target type:
- Search by city or cuisine for discovery runs.
- Direct venue URLs or slugs for known restaurants.
- For search runs, set City, Cuisine, and optional Search query.
- For direct runs, paste OpenTable or Resy venue URLs or slugs.
- Set Restaurant limit to cap the total saved rows.
- Run the Actor and export the dataset as JSON, CSV, Excel, or through the Apify API.
The default input is built for a small first run. Once the output shape fits your workflow, raise the row limit, schedule repeat runs, or call the Actor from your own app.
🧾 Input options
| Field | What it does |
|---|---|
platform | Selects OpenTable, Resy, or both platforms. |
targetType | Chooses search mode or direct venue mode. |
city | Sets the city for search runs and location context. |
query | Adds an optional restaurant name, neighborhood, or dining keyword. |
cuisine | Searches by dining style such as italian, sushi, or steakhouse. |
restaurantTargets | Accepts OpenTable or Resy venue URLs and slugs for direct runs. |
country | Keeps rows from a selected country when the source provides country data. |
priceRange | Keeps rows in a selected price band. |
minRating | Keeps rows with this rating or higher when ratings are available. |
availabilityDate | Sets the date for Resy direct venue availability checks. |
partySize | Sets the guest count for reservation and availability context. |
reservationDate | Sets the OpenTable search date context. |
maxItems | Caps the total restaurant rows saved by the run. |
🧪 Example input
{"platform": "both","targetType": "search","city": "New York","cuisine": "italian","partySize": 2,"reservationDate": "2026-07-15","availabilityDate": "2026-07-15","maxItems": 150}
For direct venue runs:
{"platform": "both","targetType": "direct","restaurantTargets": ["https://www.opentable.com/r/sofias-of-little-italy-new-york","https://resy.com/cities/ny/venues/carbone"],"city": "New York","partySize": 2,"availabilityDate": "2026-07-15","maxItems": 2}
📄 Example output
{"platform": "resy","recordType": "restaurant","entityId": "resy:6194","sourceId": 6194,"sourceSlug": "carbone","sourceUrl": "https://resy.com/cities/ny/venues/carbone","name": "Carbone","address": {"line1": "181 Thompson Street","city": "New York","state": "NY","postalCode": "10012","country": "United States","countryCode": "US","formatted": "181 Thompson Street, New York, NY, 10012, United States"},"resy": {"availability": {"day": "2026-07-15","partySize": 2,"slotCount": 0,"slots": []}},"source": {"targetType": "direct","inputTarget": "https://resy.com/cities/ny/venues/carbone","city": "New York","rank": 1},"scrapedAt": "2026-06-12T19:34:00.000Z"}
The exact fields depend on what OpenTable or Resy returns for each restaurant.
💳 Pricing
This Actor uses pay-per-event pricing. You pay a small one-time Actor start charge and one Restaurant event for each restaurant profile saved to the dataset.
The restaurant event is the main pricing unit. Runs that find no matching restaurants finish cleanly and do not create restaurant events.
⚠️ Limits and caveats
- Resy availability is checked for direct Resy venue runs. Search rows focus on restaurant discovery data.
- OpenTable direct URLs are resolved through public search data. Very stale or removed URLs may not resolve.
- OpenTable and Resy can return different fields for different restaurants, cities, and dates.
- Availability changes quickly. Treat saved Resy slots as a point-in-time snapshot.
- The Actor does not book reservations, hold tables, bypass source restrictions, or scrape private account data.
❓ FAQ
🔁 Can I scrape OpenTable and Resy in the same run?
Yes. Choose both for platform. Search runs interleave OpenTable and Resy rows under the same maxItems cap.
🔐 Do I need OpenTable or Resy cookies?
No. The Actor is built for public restaurant data and does not ask for user cookies, passwords, or API keys.
🗓️ Can I check Resy availability?
Yes, for direct Resy venue targets. Add a Resy venue URL or slug, set availabilityDate and partySize, and the row will include a Resy availability snapshot when the source returns it.
🧩 Why are some fields missing from a row?
OpenTable and Resy do not return the same data for every restaurant. The Actor saves fields that the source provides and avoids filling gaps with guessed data.
📝 Changelog
- 0.1: Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Other actors
- Google Maps Shared List Scraper ↗ - Export saved places from public Google Maps shared lists.
- Yellow Pages Scraper ↗ - Collect business listings by keyword, location, search URL, or listing URL.
- DoorDash Reviews Scraper ↗ - Extract public DoorDash review previews from restaurant store pages.
- Facebook Reviews Scraper ↗ - Export public Facebook Page recommendations for local business research.
- Business Address Scraper ↗ - Find physical business addresses published on company websites.
Made with ❤️ by Maxime Dupré