Resy Restaurants & Availability Scraper avatar

Resy Restaurants & Availability Scraper

Pricing

from $0.02 / 1,000 venue rows

Go to Apify Store
Resy Restaurants & Availability Scraper

Resy Restaurants & Availability Scraper

🍽️ Find public Resy restaurant profiles and availability by city, keyword, or URL. Export venue data for hospitality and travel research.

Pricing

from $0.02 / 1,000 venue rows

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Find Resy restaurants, venue details, and public reservation availability by city, neighborhood, keyword, or Resy URL.

What does Resy Restaurants & Availability Scraper do?

This Apify Actor helps you collect public restaurant information from Resy searches. It returns venue profiles together with optional public availability times for a selected date and party size. Use it to monitor dining markets, build hospitality datasets, enrich travel products, or research restaurants in Resy-supported cities.

Who is it for?

Resy Restaurants & Availability Scraper is built for teams that need structured restaurant discovery data without manually searching Resy page by page.

Who is this Resy scraper for?

  • 🍽️ Restaurant market-intelligence teams tracking local dining supply
  • 🏨 Hotel concierge and travel teams building recommendation lists
  • 📍 Local lead-generation teams finding restaurants by city or cuisine
  • 📊 Hospitality analysts comparing neighborhoods, cuisines, and price ranges
  • 🧭 Travel apps that need structured venue discovery data
  • 🧪 Data teams prototyping Resy-based market research workflows

Why use this actor?

  • Search by city, neighborhood, cuisine, keyword, or Resy URL
  • Save structured venue rows to an Apify dataset
  • Include public availability timestamps when Resy exposes them
  • Export to JSON, CSV, Excel, Google Sheets, S3, or your own API
  • Run on demand, schedule daily checks, or integrate from code

What data can it extract?

FieldDescription
venueIdResy venue ID
nameRestaurant name
urlPublic Resy venue URL
cityResy city/location
neighborhoodNeighborhood when available
addressFormatted public address when available
latitudeVenue latitude
longitudeVenue longitude
cuisineCuisine labels
priceRangeDollar-sign price range
venueDescriptionPublic Resy description/editorial note
imagesVenue image URLs
tagsCuisine and collection tags
availabilityDateDate checked
partySizeParty size checked
availableTimesPublic reservation start times
sourceUrlSearch URL or generated source URL
scrapedAtTimestamp when the row was saved

How much does it cost to scrape Resy restaurants?

The actor uses pay-per-event pricing. There is a small run-start charge and a per-venue charge for each saved restaurant row. Your total cost depends mainly on maxResults and whether you enable availability checks. Start with a small run such as 25 venues, confirm the output, then scale your search.

How to scrape Resy restaurants

  1. Open the actor on Apify.
  2. Enter a city, neighborhood, cuisine, keyword, or Resy URL.
  3. Choose a date and party size if you want availability times.
  4. Set maxResults to the number of venue rows you need.
  5. Run the actor.
  6. Download the dataset or connect it to your workflow.

Input options

cityOrLocation

Use a city, neighborhood, restaurant keyword, or cuisine term. Examples:

  • New York
  • Brooklyn sushi
  • Chicago steakhouse
  • Los Angeles Italian

searchUrl

Paste a Resy city, search, or venue URL when you want to anchor the run to a known Resy page. If cityOrLocation is empty, the actor derives a search term from this URL.

date

Use YYYY-MM-DD format. If omitted, the actor checks the current date.

partySize

The number of diners for availability checks. The default is 2.

includeAvailability

When enabled, the actor checks public availability for each venue. When disabled, the actor only returns venue profile fields and runs faster.

maxResults

Maximum number of venue rows to save. Use a low value for test runs.

proxyConfiguration

Proxy use is optional. Most public searches work without a proxy. If your run is blocked, try Apify Proxy with datacenter proxies before residential proxies.

Example input

{
"cityOrLocation": "New York",
"date": "2026-07-05",
"partySize": 2,
"includeAvailability": true,
"maxResults": 25,
"proxyConfiguration": {
"useApifyProxy": false
}
}

Example output

{
"venueId": "87134",
"name": "Brooklyn Chop House - Downtown FIDI",
"url": "https://resy.com/cities/new-york-ny/venues/brooklyn-chop-house-downtown-fidi",
"city": "New York",
"neighborhood": "Financial District",
"address": null,
"latitude": 40.71164941860875,
"longitude": -74.00596236132077,
"cuisine": ["Steakhouse"],
"priceRange": "$$$",
"venueDescription": "Only in New York does a chop house serve LSD...",
"images": ["https://image.resy.com/..."],
"tags": ["Steakhouse"],
"availabilityDate": "2026-07-05",
"partySize": 2,
"availableTimes": [],
"sourceUrl": "https://resy.com/cities/new-york",
"scrapedAt": "2026-07-05T08:00:00.000Z"
}

Tips for better Resy results

  • Use broad city searches first, then narrow by cuisine or neighborhood.
  • Keep maxResults low while testing a new market.
  • Disable availability if you only need venue profile data.
  • Use a future date when checking reservation availability.
  • Run the actor daily if you need trend monitoring.

Availability notes

Availability is public and can change quickly. A venue may appear in search but have no public slots for your selected date and party size. In that case, the row is still useful because it contains venue profile and location fields.

Common use cases

  • Build a local restaurant lead list
  • Monitor new restaurants in a city
  • Compare Resy coverage by neighborhood
  • Track available dining slots for concierge planning
  • Enrich travel guides with restaurant profile data
  • Analyze cuisine and price distribution in a market

Integrations

You can connect the dataset to:

  • Google Sheets for operations teams
  • BigQuery or Snowflake for analytics
  • Zapier or Make for alerts
  • Slack for availability monitoring
  • S3 for archival exports
  • Your backend through the Apify API

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/resy-restaurants-availability-scraper').call({
cityOrLocation: 'New York',
date: '2026-07-05',
partySize: 2,
maxResults: 25
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/resy-restaurants-availability-scraper').call(run_input={
'cityOrLocation': 'New York',
'date': '2026-07-05',
'partySize': 2,
'maxResults': 25,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~resy-restaurants-availability-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"cityOrLocation":"New York","date":"2026-07-05","partySize":2,"maxResults":25}'

MCP usage

Use the Apify MCP server with tools enabled for this actor:

https://mcp.apify.com/?tools=fetch_cat/resy-restaurants-availability-scraper

Claude Code setup:

$claude mcp add apify-resy --url "https://mcp.apify.com/?tools=fetch_cat/resy-restaurants-availability-scraper"

Claude Desktop JSON config:

{
"mcpServers": {
"apify-resy": {
"url": "https://mcp.apify.com/?tools=fetch_cat/resy-restaurants-availability-scraper"
}
}
}

Example prompts:

  • "Find 25 Resy restaurants in New York and summarize cuisines."
  • "Check public Resy availability for Chicago steakhouse results tomorrow."
  • "Export the Resy venue dataset to a table grouped by neighborhood."

Scheduling

Schedule recurring runs to monitor restaurant availability or new venue search results. Daily runs are useful for concierge teams and market analysts. Weekly runs are usually enough for broad venue discovery.

Data freshness

The actor collects live public data at run time. Restaurant profiles and availability can change after your run finishes. For operational decisions, rerun close to the time you need the data.

Limits

  • The actor returns public Resy data only.
  • It does not book reservations.
  • It does not log in to user accounts.
  • Some venues may not expose availability for every date or party size.
  • Very narrow searches may return fewer rows than maxResults.

Legality

This actor collects public restaurant discovery data and does not perform bookings, account actions, or private-data access.

This actor is designed for public restaurant discovery data. Use the results responsibly and follow Apify's Terms of Service, Resy's public website terms, and applicable laws. Do not use the actor for spam, harassment, credentialed access, or automated booking abuse.

FAQ

Does this actor book reservations?

No. It only extracts public venue and availability information. It does not place holds, complete bookings, or access private accounts.

Can I monitor the same city every day?

Yes. Use an Apify schedule and keep maxResults aligned with the size of the market you want to monitor.

Troubleshooting

Why are availableTimes empty?

The venue may not have public slots for the selected date and party size, or availability may have changed before the lookup. Try a future date, a different party size, or disable availability if you only need venue profiles.

Why did I get fewer rows than requested?

The search term may be too narrow. Use a broader city or cuisine query, then filter the dataset after export.

Should I use a proxy?

Start without a proxy. If a run is blocked, enable Apify Proxy and try datacenter proxies first.

Changelog

0.1

  • Initial Resy venue search and public availability extraction.

Support

If you need a new field or a specific Resy workflow, open an Apify issue with a sample input and expected output.

Field reference recap

  • venue identity
  • public URL
  • location
  • cuisine
  • price range
  • description
  • images
  • tags
  • availability date
  • party size
  • available times
  • source URL
  • scrape timestamp

Best first run

Use this small input to verify output quality before scaling:

{
"cityOrLocation": "New York",
"date": "2026-07-05",
"partySize": 2,
"includeAvailability": true,
"maxResults": 10
}