Resy Scraper - Restaurants, Ratings, Contacts & Reservations avatar

Resy Scraper - Restaurants, Ratings, Contacts & Reservations

Pricing

from $5.00 / 1,000 restaurant scrapeds

Go to Apify Store
Resy Scraper - Restaurants, Ratings, Contacts & Reservations

Resy Scraper - Restaurants, Ratings, Contacts & Reservations

Scrape Resy restaurants by city, cuisine or URL: name, full address, phone, website, cuisine, price band, ratings, neighborhood, geo, restaurant group and live reservation availability. Turn dining venues into B2B leads. Export to JSON, CSV or Excel.

Pricing

from $5.00 / 1,000 restaurant scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Resy Scraper — Restaurants, Ratings, Contacts & Reservations

Extract complete restaurant data from Resy — by city, by cuisine, or by URL. Get every venue's name, full street address, phone, website, cuisine, price band, Resy rating, neighborhood, geo-coordinates, restaurant group and optional live reservation availability. Every dining venue is a ready-to-use B2B lead: a contactable restaurant with phone, website, location and a quality score.

No login, no cookies, no browser — this actor reads Resy's own public data API directly, so the output is first-party and reliable.

Why this Resy scraper?

Most restaurant scrapers return a name and a star rating and call it done. This actor pulls the full venue record from Resy's data API and ships the richest dataset in the category — including the contact fields that turn a listing into a lead:

DataTypical scrapersThis actor
Restaurant name, cuisine, price band
Resy rating + number of ratingspartial
Phone number
Website + menu link✅ when published
Full street address + ZIP + cross streetspartial
Neighborhood, city, state, countrypartial
Latitude / longitude + timezone
Restaurant group / operator (multi-location)
Cross-platform IDs (Google, Foursquare)✅ when mapped
Editorial description & "why we like it"✅ when published
Live reservation availability (open slots)✅ opt-in
Lead score (0–100) per venue
One clean dataset, no empty columns

Use cases

  • Lead generation — restaurants are active buyers of POS, reservation, marketing, delivery, payroll, supply and insurance products. Score them by quality and reach (leadScore, phone, website) and export straight to your CRM.
  • Restaurant-group prospectingvenueGroupName and venueGroupSize surface multi-location operators, the highest-value accounts for B2B sales.
  • Market & competitive research — map a city's dining scene by cuisine, price band, neighborhood and rating; benchmark venues and track new openings.
  • Reservation intelligence — see which sought-after restaurants have open tables on a given date and party size.
  • Directory & app enrichment — power restaurant guides, concierge tools and travel apps with standardized records, geo-coordinates and images.
  • Sales territory planning — pull every Resy venue in a metro with full addresses and coordinates for route and territory planning.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Resy Scraper, enter one or more Cities (e.g. New York, NY), or Search terms (e.g. sushi), and click Start.
  3. Watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the Apify API.

Input

{
"cities": ["New York, NY", "Los Angeles, CA"],
"searchTerms": ["sushi", "steakhouse"],
"maxResults": 200,
"enrichVenueDetails": true,
"includeAvailability": false,
"priceBands": ["3", "4"],
"minRating": 4,
"monitorMode": false
}
  • cities — cities to scrape every Resy restaurant in (New York, NY, Austin, TX, Miami, FL, …). Major Resy markets are resolved to a precise map search for full coverage; any other city falls back to a name search.
  • searchTerms — free-text Resy searches: a cuisine (sushi, steakhouse), a neighborhood, or a specific restaurant name (Le Bernardin). Each term is searched separately.
  • venueUrls — direct Resy venue URLs (https://resy.com/cities/new-york-ny/venues/le-bernardin).
  • maxResults (default 100) — cap on restaurant records for the whole run.
  • enrichVenueDetails (default true) — open each restaurant's Resy profile for the full record (street address, website, menu link, editorial description, restaurant group, timezone, Google/Foursquare IDs). One fast extra API call per restaurant.
  • includeAvailability (default false) — also return bookable reservation slots for reservationDate and partySize. Note: when on, Resy returns only restaurants with open tables on that date.
  • reservationDate / partySize — date (YYYY-MM-DD) and party size for availability checks.
  • priceBands / cuisineFilter / minRating — keep only venues matching these filters.
  • monitorMode (default false) — emit only restaurants not seen in previous runs (see below).

Output

One record per restaurant (type: "restaurant"):

{
"type": "restaurant",
"resyId": 834,
"name": "Le Gratin",
"profileUrl": "https://resy.com/cities/new-york-ny/venues/le-gratin",
"address": "5 Beekman St",
"neighborhood": "Lower Manhattan",
"city": "New York",
"region": "NY",
"postalCode": "10038",
"country": "United States",
"latitude": 40.7116,
"longitude": -74.0068,
"timezone": "EST5EDT",
"cuisines": ["French"],
"primaryCuisine": "French",
"priceRangeId": 2,
"priceRange": "$$",
"rating": 4.64,
"ratingCount": 6972,
"phone": "+12125979020",
"website": "https://www.legratinnyc.com/",
"venueGroupName": "Dinex",
"venueGroupSize": 9,
"isMultiLocationGroup": true,
"googlePlaceId": "ChIJ...",
"description": "Le Gratin is a French restaurant in the Lower Manhattan neighborhood of New York.",
"imageUrl": "https://image.resy.com/...",
"leadScore": 93,
"searchLocation": "New York, NY",
"scrapedAt": "2026-06-24T12:00:00.000Z"
}

With includeAvailability on, each record also carries bookableSlots (time + table type), bookableSlotCount, availabilityDate and availabilityPartySize.

Use the Restaurants, Leads and Reservation availability dataset views to switch between column sets.

What to expect (field coverage)

Verified across multiple cities, you can typically expect:

FieldCoverage
name, city, region, neighborhood, cuisine, price band, rating, geo, profile URL~100%
phone~100%
website, full street address, ZIP, timezone, description~90–100% (with enrichVenueDetails)
restaurant group, Google place IDusually present
menu link, Foursquare ID, editorial tagline / "why we like it", cross streetspresent only when Resy publishes them

A blank field means Resy doesn't publish that value for that venue — not that scraping failed. Nothing is dropped, so you always get the richest record available.

Monitoring mode — only new restaurants

Turn on monitorMode to make the actor remember which restaurants it has already returned and emit only restaurants not seen in previous runs — perfect for tracking new restaurant openings in a market. It stores seen venue ids in a named key-value store (monitorStoreName, one per tracked market).

This complements Apify Schedules and does not conflict with them: Schedules decide when the actor runs (e.g. every morning), and monitoring mode decides what is new in each run. Use both together to get a daily feed of just-opened restaurants in your target cities.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/resy-scraper').call({
cities: ['New York, NY'],
maxResults: 200,
enrichVenueDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} restaurants`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new restaurant leads straight into your CRM.
  • Slack — get notified when a monitored city adds new restaurants.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "list every Resy restaurant in Austin with phone and website" and let it run the scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete local-business & restaurant lead-gen stack:

Tips

  • Whole-metro coverage: put the city in cities (e.g. Chicago, IL) — major Resy markets use a precise map search that returns every venue, paginated to your maxResults.
  • Cuisine by city: combine cities with cuisineFilter, or add cuisines to searchTerms for the most precise targeting.
  • Cost control: turn off enrichVenueDetails for a fast, cheap pass with the search-feed record (name, phone, cuisine, price, rating, neighborhood, geo); turn it on to add website, full address, menu and group data.
  • Best leads first: sort the dataset by leadScore to surface rated, contactable, premium and multi-location venues at the top.
  • Recurring monitoring: combine Schedules with monitorMode to capture only newly listed restaurants.

FAQ

How do I scrape every restaurant in a city? Put the city in cities (e.g. New York, NY). Major Resy markets resolve to a precise map search for full coverage; other cities use a name search.

Does it need a Resy account or API key? No. This actor reads Resy's own public data API — the same data the Resy website shows — with no login, cookie or key.

Where do the phone and website come from? From the restaurant's own Resy profile. Phone is on nearly every venue; website is published by most. When a venue doesn't list one, the field is simply absent.

Can I get individual customer reviews? Resy exposes an aggregate rating (average + number of ratings), which this actor returns. Individual review text is not part of Resy's public venue data, so it is not included.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

How do I monitor new restaurant openings? Turn on monitorMode and create a Schedule; each run returns only restaurants not seen before. Add a webhook to push them into your CRM.

Is scraping Resy legal? This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (e.g. GDPR/CCPA for personal data) and Resy's terms.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.