Resy Scraper
Pricing
from $4.00 / 1,000 results
Resy Scraper
[๐ฐ $4.0 / 1K] Extract restaurants from Resy by city, keyword, cuisine, or URL โ full venue details plus optional real-time reservation availability.
Pricing
from $4.00 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Pull restaurants from Resy at scale โ names, cuisines, neighborhoods, full addresses with coordinates, price bands, ratings, phone numbers, websites, social handles, photos, and platform IDs for every venue, plus optional real-time reservation time-slots for any date. Built for restaurant-tech teams, market analysts, and lead-gen agencies who need clean, structured Resy data across US dining markets without building and maintaining their own scraper.
Why This Scraper?
- ~40 fields per restaurant โ name, cuisine tags, neighborhood, full street address with latitude/longitude, IANA time zone, phone, website, social profiles, photos, price band, rating, and review count, all in one flat row.
- Real reservation availability, opt-in โ flip one switch to embed every bookable time-slot for a chosen date; a single popular venue returned up to ~90 slots in a single day during testing, each with start/end time, table type, and party size.
- Reservation times included at no extra per-slot cost โ every restaurant stays one result, with its time-slots attached as a list inside it, so availability never multiplies your bill.
- Party sizes from 1 to 20 โ check solo-diner counters or large-group tables; the actor queries the exact party size you ask for.
- Three cross-referencing platform IDs per venue โ Resy venue ID, Google Place ID, and Foursquare ID, so you can join Resy records straight into Google or Foursquare datasets.
- 15 curated cuisine filters โ American, French, Italian, Japanese, Korean, Mexican, Mediterranean, Seafood, Steakhouse, Sushi, Thai, and more, each running a focused city search.
- Four input modes in one run โ search by city, free-text keyword, cuisine, or pasted Resy venue and city URLs, combinable in a single run.
- Coverage across US dining markets โ New York, Los Angeles, Chicago, San Francisco, and beyond, all verified, with sustained pagination and
maxResults: 0for unlimited pulls.
Use Cases
Market Research
- Map the dining landscape of a city by cuisine, price band, and neighborhood
- Track which restaurants list on Resy in a target market over time
- Benchmark price bands ($โ$$$$) across neighborhoods
- Build cuisine-mix profiles for entire metro areas
Lead Generation
- Build restaurant contact lists with phone, website, and social profiles
- Target venues by cuisine, neighborhood, or rating threshold
- Identify high-traffic restaurants by review count for sales outreach
- Enrich CRM records with verified venue addresses and coordinates
Competitive Intelligence
- Monitor reservation availability and prime-time slot scarcity at rival venues
- Compare booking windows and table types across competitors
- Track which venues offer waitlists versus open tables
- Watch party-size limits and large-party policies in a market
Restaurant Tech & Data Enrichment
- Power dining-discovery and reservation apps with structured venue feeds
- Join Resy venues to Google or Foursquare records via shared platform IDs
- Feed real-time slot availability into booking dashboards
- Geocode and map venues using built-in latitude/longitude
Getting Started
Scrape a City
The simplest run โ just a city:
{"city": "new-york-ny","maxResults": 50}
Search by Cuisine and Keyword
{"city": "los-angeles-ca","query": "sushi","cuisine": ["japanese", "seafood"],"maxResults": 100}
Include Reservation Availability
{"city": "chicago-il","query": "italian","maxResults": 25,"includeAvailability": true,"reservationDate": "2026-06-05","partySize": 2}
Scrape Specific Restaurants by URL
{"startUrls": ["https://resy.com/cities/new-york-ny/venues/eccolo-italian-restaurant"],"includeAvailability": true,"partySize": 4}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
city | string | "new-york-ny" | City to search on Resy. Enter a city name, Resy city code, or URL slug (e.g. "New York", "london", "los-angeles-ca"). |
query | string | "" | Free-text search by restaurant name, cuisine, or keyword (e.g. "sushi", "Carbone", "rooftop"). Leave empty to return all restaurants in the city. |
startUrls | array | [] | Paste Resy restaurant or city page URLs to scrape directly. Use instead of, or alongside, the city/keyword search. |
Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
cuisine | array | [] | Narrow results to one or more common cuisines. Each selection runs a focused search for that cuisine in the city. Leave empty to include all cuisines. |
maxResults | integer | 100 | Maximum number of restaurants to return. Set to 0 for unlimited. |
includeDetails | boolean | true | Fetch each restaurant's full profile โ ratings, street address, website, phone, social links, description, and photos. Turn off for faster, lighter results with just the core fields. |
Cuisine options: American, Chinese, Cocktail Bar, French, Indian, Italian, Japanese, Korean, Mediterranean, Mexican, New American, Seafood, Steakhouse, Sushi, Thai.
Reservation Availability
| Parameter | Type | Default | Description |
|---|---|---|---|
includeAvailability | boolean | false | Also fetch real-time reservation time-slots for each restaurant. Each restaurant stays a single result โ the time-slots are attached as a list inside it. |
reservationDate | string | today | Date to check availability, in YYYY-MM-DD format. Leave empty to use today. Only used when availability is enabled. |
partySize | integer | 2 | Number of guests for the reservation (1โ20). Only used when availability is enabled. |
Output
Each restaurant is returned as a single flat record. When reservation availability is enabled, the bookable time-slots are embedded as a slots list inside the same record.
{"recordType": "venue","id": 443,"name": "Eccolo","urlSlug": "eccolo-italian-restaurant","url": "https://resy.com/cities/new-york-ny/venues/eccolo-italian-restaurant","neighborhood": "SoHo","locality": "New York","region": "NY","country": "US","address": "200 Lafayette St","postalCode": "10012","latitude": 40.7203,"longitude": -73.9981,"timeZone": "America/New_York","phone": "+12125551234","website": "https://eccolo-nyc.com","socialLinks": ["https://instagram.com/eccolonyc"],"cuisine": ["Italian"],"type": "Italian","priceRange": "$$$","currencyCode": "USD","rating": 4.7,"ratingCount": 1820,"minPartySize": 1,"maxPartySize": 8,"images": ["https://image.resy.com/abc.jpg"],"description": "A modern Italian trattoria in SoHo...","metaDescription": "Book a table at Eccolo on Resy.","keywords": ["italian", "trattoria", "soho"],"collections": ["Hot New Restaurants"],"googlePlaceId": "ChIJ1234567890","foursquareId": "4a1b2c3d4e5f","venueGroup": "Eccolo Hospitality","awards": [],"largePartyMessage": "For parties of 9+, please call.","waitlistAvailable": true,"slotCount": 3,"slots": [{"startTime": "2026-06-05 18:00:00","endTime": "2026-06-05 20:00:00","type": "Dining Room","configId": "rgs://resy/443/...","hasAddOns": false,"shiftDay": "2026-06-05","date": "2026-06-05","partySize": 2}],"scrapedAt": "2026-05-29T14:00:00Z"}
Core & Identity
| Field | Type | Description |
|---|---|---|
recordType | string | Always "venue". |
id | integer | Resy venue ID. |
name | string | Restaurant name. |
urlSlug | string | Resy URL slug. |
url | string | Canonical Resy venue URL. |
type | string | Venue type. |
cuisine | array | Cuisine tags. |
description | string | Venue description. |
metaDescription | string | SEO meta description. |
keywords | array | Keyword tags. |
collections | array | Resy collections the venue appears in. |
images | array | Photo URLs. |
venueGroup | string | Parent venue group or operator. |
awards | array | Awards and badges. |
scrapedAt | string | ISO timestamp of the extraction. |
Location
| Field | Type | Description |
|---|---|---|
neighborhood | string | Neighborhood. |
locality | string | City. |
region | string | State or region. |
country | string | Country. |
address | string | Street address. |
postalCode | string | ZIP or postal code. |
latitude | number | Latitude. |
longitude | number | Longitude. |
timeZone | string | IANA time zone. |
Contact & Social
| Field | Type | Description |
|---|---|---|
phone | string | Phone number. |
website | string | Restaurant website. |
socialLinks | array | Social profile URLs (Instagram, Twitter/X, Facebook). |
Ratings & Price
| Field | Type | Description |
|---|---|---|
priceRange | string | Price band ($โ$$$$). |
currencyCode | string | Currency code. |
rating | number | Average rating. |
ratingCount | integer | Number of ratings. |
minPartySize | integer | Minimum party size accepted. |
maxPartySize | integer | Maximum party size accepted. |
largePartyMessage | string | Large-party note. |
waitlistAvailable | boolean | Whether a waitlist is offered. |
Platform IDs
| Field | Type | Description |
|---|---|---|
googlePlaceId | string | Google Place ID. |
foursquareId | string | Foursquare ID. |
Reservation Availability
slotCount is the number of bookable slots found (0 when availability is off). slots is the embedded list of time-slots, each with the fields below.
| Field | Type | Description |
|---|---|---|
slotCount | integer | Number of bookable slots found for the date and party size. |
slots | array | Embedded list of reservation time-slots (populated only when availability is enabled). |
slots[].startTime | string | Slot start time. |
slots[].endTime | string | Slot end time. |
slots[].type | string | Room or table type. |
slots[].configId | string | Booking configuration token for the slot. |
slots[].hasAddOns | boolean | Whether add-ons are available. |
slots[].shiftDay | string | Service shift day. |
slots[].date | string | Reservation date (YYYY-MM-DD). |
slots[].partySize | integer | Party size queried. |
Tips for Best Results
- Use the URL slug form for
city(e.g.los-angeles-ca,san-francisco-ca) for the most reliable market resolution; plain city names and Resy city codes also work. - Leave
queryempty to browse every restaurant in a city, or set it to a name, dish, or vibe ("rooftop", "omakase") to focus the search. - Each cuisine you pick runs its own focused city search, so selecting several cuisines widens coverage rather than narrowing it โ combine cuisines to sweep a market.
- Turn on
includeAvailabilityonly when you need bookable times; it queries each restaurant for the chosen date and adds one extra lookup per venue. - Availability is a snapshot โ prime dinner slots at popular venues turn over fast, so re-run close to your target date for the freshest open tables.
- Set
maxResultsto0for an exhaustive pull of a city, or cap it for quick samples; the actor overshoots the final page rather than cutting it short. - Leave
includeDetailson (the default) for the richest records โ full address, website, social links, ratings, and photos. Turn it off for large, fast market sweeps when you only need core fields (name, neighborhood, cuisine, coordinates, price band). - Combine
startUrlswith a city search in one run to pull specific known venues alongside a broad market sweep.
Pricing
$4.00 per 1,000 results โ a single flat rate that undercuts the typical Resy data tier, with no compute charges and no per-slot surcharge for availability.
| Results | Estimated Cost |
|---|---|
| 100 | $0.40 |
| 1,000 | $4.00 |
| 10,000 | $40.00 |
| 100,000 | $400.00 |
A "result" is one restaurant record, including any embedded reservation time-slots โ so availability never multiplies your bill. No compute charges โ you only pay per result returned. Apify platform fees are additional.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n โ Workflow automation
- Google Sheets โ Direct spreadsheet export
- Slack / Email โ Notifications on new results
- Webhooks โ Trigger custom APIs on run completion
- Apify API โ Full programmatic access
Legal & Ethical Use
This scraper collects publicly available restaurant information from Resy. Use the data responsibly and in compliance with Resy's terms of service and all applicable laws, including data-protection regulations such as GDPR and CCPA. Do not use the data to harass businesses, send unsolicited bulk communications, or for any unlawful purpose. You are responsible for how you use the data you collect.