TheFork Europe Restaurant Directory & Review Scraper
Pricing
from $1.60 / 1,000 record scrapeds
TheFork Europe Restaurant Directory & Review Scraper
Extract restaurant listings and diner reviews from TheFork across European markets. Get venue details (address, cuisine, price band, Michelin distinctions, opening hours, menu, promotions) and full review history (ratings, text, dates, replies), joined by restaurant ID.
Pricing
from $1.60 / 1,000 record scrapeds
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
TheFork Restaurant Directory & Review Scraper
Scrape restaurant listings and diner reviews from TheFork, the dominant reservation platform in France, Spain and Italy. Returns venue details — address, cuisine, price band, Michelin distinctions, opening hours, menu items, active promotions — and full review history, joined by restaurant ID in one dataset.
TheFork Scraper Features
- Covers restaurants across TheFork's European markets — France, Spain, Italy, the UK, Germany, and more, no city or country filter required.
- Returns 28 fields per record, split across two row types: restaurant venue rows and diner review rows.
- Joins reviews to their restaurant via
restaurant_id, so a distributor prospecting a city gets the venue list and its review volume in one run, not two datasets to reconcile. - Extracts active promotions (
promo_offer) and live booking availability (booking_slots_available) — the signals that tell you which venue is trying to fill covers. - Pulls Michelin distinctions, average price band, full opening hours by day, and the venue's menu with item-level pricing.
- Reviews carry rating, text, visit date, reviewer alias, and the restaurant's own reply when it left one.
Who Uses TheFork Restaurant Data?
- POS and restaurant-tech vendors — build a prospect list of venues by cuisine, price band, and city, then prioritize outreach using promotion activity as a buying signal.
- Food-service distributors — map accounts across a market and cross-reference review volume against your existing customer list.
- Reputation-management agencies — pull a venue's full review history to pitch a response strategy, backed by actual numbers instead of a screenshot.
- Market researchers — track price bands, cuisine mix, and Michelin distribution across a city or country over time.
- Beverage and hospitality brands — identify venues by cuisine and price tier for account mapping, or just to see who's discounting and why.
How TheFork Scraper Works
- Set
maxItems— the maximum number of records (restaurant + review rows combined) you want back. Leave everything else alone; the scraper covers TheFork's full European catalog by default. - The scraper walks TheFork's restaurant catalog and visits each venue's page, pulling address, cuisine, pricing, hours, menu, and Michelin status.
- For every restaurant, it also pages through that venue's diner reviews — rating, text, visit date, and any management reply — up to 400 reviews per venue.
- Records land in your dataset as they're found. Stop the run early and you keep everything collected so far.
Input
{"maxItems": 500}
| Field | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 10 | Maximum number of records to save (restaurant + review rows combined). Restaurants are discovered from the full TheFork European catalog, so a small value still spans many cities and countries. Set to 0 for no cap. |
TheFork Scraper Output Fields
Restaurant rows
{"restaurant_id": "717120","name": "Mâche","cuisine_types": ["French"],"street": "61 Rue de Chabrol","postal_code": "75010","city": "Paris","city_id": "415144","country": "France","latitude": 48.8769636,"longitude": 2.3509406,"price_band": "80.00 EUR","michelin_distinction": "MICHELIN","rating_avg": 9.6,"rating_count": 655,"opening_hours": {"mon": [],"tue": [{ "opens": "19:00", "closes": "21:00" }]},"booking_slots_available": true,"promo_offer": "-20%","menu_items": [{ "name": "Menu memphis - 4 temps", "description": null, "price": 80, "currency": "EUR" }],"photos": ["https://cdn.thefork.com/tf-lab/image/upload/restaurant/.../photo.jpg"],"restaurant_url": "https://www.thefork.com/restaurant/mache-r717120"}
| Field | Type | Description |
|---|---|---|
restaurant_id | string | TheFork's numeric venue ID — the r<id> in the restaurant URL, and the join key to review rows. |
name | string | Restaurant name. |
cuisine_types | array | Cuisine types the venue serves. |
street | string | Street address. |
postal_code | string | Postal code. |
city | string | City name. |
city_id | string | TheFork's numeric city ID. |
country | string | Country name. |
latitude / longitude | number | Venue coordinates. |
price_band | string | Average price, formatted with currency (e.g. "80.00 EUR"). |
michelin_distinction | string | "MICHELIN" when the venue carries a Michelin distinction, otherwise absent. |
rating_avg | number | Average diner rating (0-10 scale). |
rating_count | integer | Total number of ratings behind rating_avg. |
opening_hours | object | Opening intervals by day (mon-sun), each an array of {opens, closes} in 24-hour time. |
booking_slots_available | boolean | Whether the venue currently shows live booking availability. |
promo_offer | string | Active discount, e.g. "-20%", when the venue is running one. |
menu_items | array | Menu items with name, description, price, and currency. |
photos | array | Venue photo URLs. |
restaurant_url | string | Canonical TheFork URL for the venue. |
Review rows
{"review_id": "0c217ddf-57de-40f6-87f2-ac1dbcc79f79","review_restaurant_id": "717120","review_rating": 10,"review_text": "Excellent","review_date": "2026-08-15T18:30:00.000Z","review_author_alias": "Flavien D.","review_management_reply": "Thank you so much for your nice review"}
| Field | Type | Description |
|---|---|---|
review_id | string | TheFork's review ID. |
review_restaurant_id | string | Matches restaurant_id on the venue row — the join key. |
review_rating | number | Diner's rating for this visit (0-10 scale). |
review_text | string | Review text. |
review_date | string | Visit date (ISO 8601). |
review_author_alias | string | Reviewer's display name as shown on TheFork. |
review_management_reply | string | The restaurant's reply to the review, when it left one. |
Every record also carries a scraped_at timestamp.
FAQ
How do I scrape TheFork restaurant data?
Set maxItems and run. TheFork Scraper pulls venue details and review history from TheFork's full European catalog — no city, country, or search term required to get started.
What data can I get from TheFork?
Restaurant details (address, cuisine, price band, Michelin status, hours, menu) and diner reviews (rating, text, date, reviewer alias, management replies), joined by restaurant ID. Both row types land in the same dataset.
Does this cover restaurants outside France?
Yes. TheFork operates across France, Spain, Italy, the UK, Germany, Switzerland, Belgium, the Netherlands, Portugal, and Sweden, and this scraper walks the full catalog by default — it isn't scoped to one country.
Can I limit how many reviews come back per restaurant?
Not per-restaurant, but the scraper caps review pagination at 400 per venue on its own, so one heavily-reviewed restaurant can't crowd out the rest of a run. Set maxItems to control the total record count across the run.
Do I need an account or API key for TheFork?
No. TheFork Scraper works from restaurant and review pages that are publicly visible — no login required.
Need More Features?
Need a different field, a filtered subset, or another region prioritized? File an issue or get in touch.
Why Use TheFork Scraper?
- One dataset, not two — venue details and review history joined by
restaurant_id, so you're not reconciling a separate restaurants export against a separate reviews export. - Full catalog by default — most alternatives scope you to one city or search term; this one walks TheFork's European catalog out of the box, and a small
maxItemsstill spans many cities. - Demand signals included —
promo_offerandbooking_slots_availabletell you which venues are actively discounting or showing open tables, not just their static listing details.