TheFork Scraper - Restaurants, Reviews & Menus
Pricing
from $3.99 / 1,000 restaurants
TheFork Scraper - Restaurants, Reviews & Menus
Extract restaurant data, reviews, menus with prices, and photos from TheFork. Get ratings, Michelin stars, TripAdvisor scores, contact details, booking availability, and 100+ fields. Supports 5 languages. Export as JSON, CSV, Excel.
Pricing
from $3.99 / 1,000 restaurants
Rating
0.0
(0)
Developer

ClearPath
Actor stats
1
Bookmarked
7
Total users
3
Monthly active users
11 hours ago
Last modified
Categories
Share
TheFork Scraper | Restaurant Data, Reviews, Menus & Photos (2026)
| Restaurant Scrapers ➤ | TheFork Scraper | TheFork Reviews | Resy Scraper |
|---|
Extract complete restaurant data from TheFork across France, Germany, Italy, Spain, and the UK. Phone numbers, emails, addresses, full menus with dish prices, all reviews, photos, Michelin stars, TripAdvisor ratings, and booking availability. 100+ fields per restaurant.
Quick Start
Basic — Scrape restaurants in a city
{"searchLocation": "Paris"}
URL input — Scrape specific pages
{"startUrls": ["https://www.thefork.com/restaurant/l-imperatif-r660609","https://www.thefork.com/restaurants/paris-c415144"]}
Advanced — Filtered search with limits
{"searchLocation": "Barcelona","language": "es","cuisineTagIds": ["436", "452"],"minRating": 8,"maxPrice": 40,"promotionsOnly": true,"sort": "avgRate","maxRestaurants": 200,"maxReviews": 500,"maxPhotos": 50}
Input Parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
startUrls | array | TheFork URLs to scrape. Supports restaurant, city, and search pages. | — |
searchLocation | string | City, neighborhood, or address to search. Typos and non-English names work. | — |
language | string | Output language and TheFork domain. Options: en, fr, de, it, es. | en |
reviewLanguage | string | Filter reviews by language. all returns default domain language. Options: all, en, fr, de, it, es, nl, pt. | all |
includeReviews | boolean | Fetch reviews for each restaurant. Set false to skip reviews entirely and speed up scraping. | true |
sort | string | Sort order for location searches. Options: popularity, avgRate, quality, promotion, newRestaurant, price, lastMonthAvg, lastMonthReservation. | popularity |
bestRated | boolean | Only return top-rated restaurants. | false |
promotionsOnly | boolean | Only return restaurants with active promotions. | false |
minPrice | integer | Minimum average price per person (EUR). | — |
maxPrice | integer | Maximum average price per person (EUR). | — |
minRating | number | Minimum TheFork rating (1-10). | — |
maxRating | number | Maximum TheFork rating (1-10). | — |
cuisineTagIds | array | Filter by cuisine type. 32 options including French, Italian, Japanese, Vegan, Seafood, etc. | all |
maxRestaurants | integer | Max restaurants to scrape. Set 0 for unlimited. | 100 |
maxReviews | integer | Reviews per restaurant, newest first. Set 0 for all. | 100 |
maxPhotos | integer | Customer photos per restaurant. Official photos always included. Set 0 for all. | 20 |
Output
Each restaurant includes 100+ fields organized into these categories:
Output Example
{"id": "d878352e-a8c6-4483-9e99-f74a59b68078","legacy_id": 35146,"slug": "l-atelier-de-joel-robuchon-etoile-champs-elysees","url": "https://www.thefork.com/restaurant/l-atelier-de-joel-robuchon-etoile-champs-elysees-r35146","name": "L'Atelier de Joel Robuchon Etoile - Champs Elysees","cuisine": "French","description": null,"chef_name": "Eric Bouchenoire","phone": "+33147237575","is_bookable": true,"is_new": false,"vacation": null,"has_available_offers": false,"main_photo_url": "https://cdn.thefork.com/tf-lab/image/upload/f_auto,q_auto,w_664,h_374/restaurant/d878352e-a8c6-4483-9e99-f74a59b68078/6e4e9b01-6174-4f6b-b379-d4afdbdaf15d.jpg","food_requirements": ["Gluten free", "Locally produced", "Organic food", "Vegetarian dishes"],"payment_accepted": ["American Express", "Apple Pay", "Mastercard", "MobilePay", "Visa"],"rate_distinction": "Excellent","avg_price": 97.0,"avg_price_currency": "EUR","thefork_rating": 9,"thefork_review_count": 2463,"tripadvisor_rating": 4,"tripadvisor_review_count": 1658,"country": "France","locality": "Paris","street": "30 Rue Vernet","zip_code": "75008","formatted_address": "30 Rue Vernet, 75008, Paris","latitude": 48.8723858,"longitude": 2.2970681,"parking": "Service voiturier","transport": "Metro Charles de Gaulle- Etoile (M1, M9, RER A)","michelin": {"stars": 1,"link": "https://guide.michelin.com/en/ile-de-france/paris/restaurant/l-atelier-de-joel-robuchon-etoile","review": "With no less than two establishments in the French capital, Joel Robuchon's renowned Ateliers are literally making their way around the world..."},"michelin_distinctions": [{"value": "MICHELIN_1_star","description": "One MICHELIN Star: High quality cooking, worth a stop!"}],"michelin_review": "With no less than two establishments in the French capital...","michelin_link": "https://guide.michelin.com/en/ile-de-france/paris/restaurant/l-atelier-de-joel-robuchon-etoile","is_insider": true,"is_top_host": false,"top_chart_rank": null,"highlighted_review_rating": 10,"highlighted_review_content": "The food was delicious! And the mashed potatoes are a thing of beauty, you have to try. Service was exceptional and everyone was very nice and helpful with ordering.","highlighted_review_reviewer_name": "Jim R.","yums_is_super": false,"yums_count": 100,"has_reservations_today": 2,"customer_photos_total": 687,"food_photos_total": 582,"header_photos": [{"id": "6e4e9b01-6174-4f6b-b379-d4afdbdaf15d","resizedImageUrls": {"url664x374": "https://cdn.thefork.com/tf-lab/image/upload/f_auto,q_auto,w_664,h_374,c_fill/restaurant/d878352e-.../6e4e9b01-....jpg","url1080x": "https://cdn.thefork.com/tf-lab/image/upload/f_auto,q_auto,w_1080,c_fill/restaurant/d878352e-.../6e4e9b01-....jpg"}}// ... 8 more header photos],"highlighted_tag": [{ "text": "INSIDER", "highlightType": "INSIDER" },{ "text": "MICHELIN", "highlightType": "MICHELIN_1_star" },{ "text": "French", "highlightType": "DEFAULT" }// ... more tags],"tags": [{ "id": "2102", "name": "1 star MICHELIN" },{ "id": "2311", "name": "INSIDER" },{ "id": "434", "name": "French" },{ "id": "81", "name": "Champs-Elysees" },{ "id": "21", "name": "Arc de Triomphe" },{ "id": "383", "name": "Fine Dining" },{ "id": "1288", "name": "Sommelier" },{ "id": "374", "name": "Valet parking" }// ... 30+ more tags],"menus": [{"name": "A la carte","menu_type": "A_LA_CARTE","updated_ts": "2026-02-27T16:16:42.148Z","sections": [{"name": "Starter","items": [{"name": "LA LANGOUSTINE","description": "en papillote croustillante au basilic","price": 75.0,"is_main_dish": false},{"name": "LE CAVIAR IMPERIAL DE SOLOGNE","description": "les 50 grammes","price": 120.0,"is_main_dish": false}// ... more starters]},{"name": "Main course","items": [{"name": "LE HOMARD \"FRITE\"","description": "roti au beurre demi-sel ravigote d'une emulsion epicee aux aromates","price": 89.0,"is_main_dish": true},{"name": "LA CAILLE","description": "en duo de foie gras de canard caramelisee aux eclats de chataigne","price": 68.0,"is_main_dish": true}// ... more main courses]},{"name": "Dessert","items": [{"name": "LA FAMEUSE CREME CARAMEL DE JOEL ROBUCHON","description": null,"price": 24.0,"is_main_dish": false}// ... more desserts]}// ... more sections (cheese, drinks, etc.)]},{"name": "Menu \"Signature\"","menu_type": "MENU","price": 220.0,"price_currency": "EUR","description": "ENTREES + PLATS + DESSERTS"},{"name": "Menu a composer, seulement au dejeuner","menu_type": "MENU","price": 95.0,"price_currency": "EUR","description": "ENTREES + PLATS + FROMAGE OU DESSERT + BOISSON CHAUDE"}// ... more menus (vegetarian menu, etc.)],"bookable_intervals": [{"date": "2026-03-05","isToday": true,"intervals": [{ "start": 720, "end": 915 },{ "start": 1140, "end": 1395 }]}// ... 6 more days],"feature_categories": [{"name": "Features","category": "ESSENTIALS","features": [{ "name": "Air-conditioning" },{ "name": "Wheelchair Accessible" },{ "name": "Wifi" }// ... more features]},{"name": "Languages spoken","category": "SPOKEN_LANGUAGES","features": [{ "name": "English spoken" }, { "name": "French spoken" }]},{"name": "Other services","category": "OTHER","features": [{ "name": "Bar" },{ "name": "Cellar" },{ "name": "Sommelier" },{ "name": "Valet parking" }// ... more services]}],"legal_website": "http://www.joel-robuchon.com/","legal_email": "reservationetoile@atelierjr.fr","exchange_rates": [{"yumsCost": 1000,"discountMoney": { "value": 2000, "currency": { "isoCurrency": "EUR" } }}],"reviews": [{"id": "cb6c346e-2699-4405-b24d-521787524d63","created_at": "2026-02-08T15:53:14.834Z","rating_value": 6,"meal_date": "2026-02-07T12:00:00.000Z","status": "PUBLISHED","review_body": "We had lunch at L'Atelier de Joel Robuchon yesterday. The service was lacking...","restaurant_reply_body": null,"reviewer_first_name": "Germanus","reviewer_last_name": "P.","reviewer_username": "Germanus P.","reviewer_review_count": 1,"photos": [{"title": "IMG_4171.jpeg","image_url": "https://cdn.thefork.com/tf-lab/image/upload/f_auto,q_auto,w_800,c_limit/customer/d878352e-.../0032a3ad-....jpg","preview_url": "https://cdn.thefork.com/tf-lab/image/upload/f_auto,q_auto,g_auto:subject,w_488,h_488,c_fill/customer/d878352e-.../0032a3ad-....jpg","created_ts": "2026-02-08T15:59:47.144Z","likes": 0}// ... more review photos],"likes": 0}// ... up to 2,463 more reviews]}
Pricing — Pay Per Event (PPE)
Two billable events:
- Restaurant scraped — charged per restaurant extracted (includes the first 100 reviews)
- Review scraped — charged per review beyond the 100 included with each restaurant
| Tier | Per 1,000 restaurants | Per 1,000 reviews (beyond 100) |
|---|---|---|
| Regular | $5.99 | $3.99 |
| Bronze | $5.33 | $3.49 |
| Silver | $4.66 | $2.99 |
| Gold | $3.99 | $2.49 |
Free Usage
Free plan includes 5 runs with up to 5 restaurants per run — enough to evaluate the output before committing.
How to Scrape TheFork Restaurant Data
Using URLs
Paste any TheFork URL directly:
- Restaurant page —
https://www.thefork.com/restaurant/l-imperatif-r660609 - City page —
https://www.thefork.com/restaurants/paris-c415144 - Search URL — Copy a filtered search URL from TheFork, filters are preserved
Mix URL types freely. Each is processed independently.
Using Location Search
Enter any location name in searchLocation. Accepts cities, neighborhoods, addresses, landmarks. Typos and non-English names are handled automatically:
"Paris","Barclona","Milano","Montmartre","Champs-Elysees"
Combine with filters (cuisineTagIds, minPrice, maxPrice, minRating, bestRated, promotionsOnly, sort) to narrow results.
Combining Both
Use startUrls and searchLocation together. URLs are processed first, then location search adds more results.
API Integration
Python
from apify_client import ApifyClientclient = ApifyClient("your_token")run = client.actor("YOUR_ACTOR_ID").call(run_input={"searchLocation": "Paris","language": "fr","maxRestaurants": 50,"maxReviews": 200,})for restaurant in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{restaurant['name']} — {restaurant['thefork_rating']}/10 — {restaurant['avg_price']}€")for review in restaurant.get("reviews", []):print(f" [{review['rating_value']}/10] {review['review_body'][:80]}")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'your_token' });const run = await client.actor('YOUR_ACTOR_ID').call({searchLocation: 'Rome',language: 'it',cuisineTagIds: ['436'],maxRestaurants: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Found ${items.length} Italian restaurants in Rome`);
Advanced Usage
Scrape Italian restaurants in Barcelona with promotions
{"searchLocation": "Barcelona","language": "es","cuisineTagIds": ["436"],"promotionsOnly": true,"sort": "promotion","maxRestaurants": 200}
Extract all reviews for specific restaurants
{"startUrls": ["https://www.thefork.com/restaurant/l-imperatif-r660609"],"maxReviews": 0,"reviewLanguage": "fr"}
Budget-friendly restaurants in Berlin
{"searchLocation": "Berlin","language": "de","maxPrice": 25,"bestRated": true,"sort": "avgRate","maxRestaurants": 100}
Restaurant data only, no reviews
{"searchLocation": "London","includeReviews": false,"maxRestaurants": 500}
High-volume city export with minimal reviews
{"searchLocation": "London","maxRestaurants": 2000,"maxReviews": 10,"maxPhotos": 0}
Data Export
Results are available in multiple formats:
- JSON — Nested structures (menus, reviews, photos) fully preserved
- CSV — Flat fields, arrays serialized
- Excel — Spreadsheet-ready
Automation
- Scheduled runs — Daily, weekly, or monthly data refreshes
- Webhooks — Get notified when a run completes
- API — Integrate into your data pipeline programmatically
FAQ
Q: What data does TheFork Scraper extract? A: Everything visible on a TheFork restaurant listing: name, contact info (phone, email), full menus with dish prices, all customer reviews, photos, ratings (TheFork + TripAdvisor), Michelin data, booking availability, promotions, tags, and more. Over 100 fields per restaurant.
Q: How many restaurants can I scrape?
A: No hard limit. Set maxRestaurants to control how many results come back from search/city pages. Direct restaurant URLs are always processed regardless of this limit.
Q: How fast is it? A: Approximately 1,000 restaurants in under 60 seconds for basic data. Deep review extraction (hundreds of reviews per restaurant) adds only a few seconds.
Q: Do I need a TheFork account? A: No. The scraper works without any login or authentication.
Q: Which countries are supported?
A: All countries where TheFork operates: France, Germany, Italy, Spain, UK, Belgium, Netherlands, Portugal, Switzerland, Austria, and others. Set the language parameter to match your target market.
Q: Can I filter reviews by language?
A: Yes. Use reviewLanguage to get reviews in English, French, German, Italian, Spanish, Dutch, or Portuguese. Default returns reviews matching your selected domain language.
Q: How are reviews sorted?
A: Reviews are returned newest first. Set maxReviews to control how many you get per restaurant. Set 0 to get all available reviews. Set includeReviews to false to skip reviews entirely.
Q: What about Michelin restaurants? A: Michelin data is included when available: star distinctions, Michelin review text, and a link to the Michelin Guide page.
Q: Can I get full menu prices? A: Yes. The output includes complete a la carte menus and preset/fixed menus with every dish name, description, price, and section (starters, mains, desserts, wine list).
Q: Is there a free trial? A: Yes. Free plan includes 5 runs with up to 5 restaurants per run. Enough to evaluate the data quality and format before upgrading.
Q: How does the pricing work for reviews?
A: The first 100 reviews per restaurant are included in the restaurant scrape cost. Reviews beyond 100 are charged separately. If you only need recent reviews, keep the default maxReviews: 100 and pay nothing extra.
Getting Started
1. Try it free
- Sign up for Apify — no credit card required
- Open TheFork Scraper
- Enter a city name or paste a TheFork URL
- Click Start and inspect the results
2. Configure
- Input — Paste URLs or enter a search location
- Filters — Set cuisine, price range, rating, promotions
- Limits — Control restaurants, reviews, and photos per run
- Language — Pick your target locale
3. Scale
- Use the API for programmatic access
- Schedule recurring runs for fresh data
- Set up webhooks for pipeline automation
Legal Compliance
This scraper extracts publicly available data from TheFork listings. Users are responsible for complying with TheFork's terms of service and applicable data protection regulations (GDPR, CCPA). Use extracted data responsibly and in accordance with local laws.
Contact data: Phone numbers and email addresses are included when publicly listed. Comply with anti-spam regulations when using contact information.
Support
- Email: max@mapa.slmail.me
- Bugs: Issues tab on the Actor page
- Features: Email or issues
Start Scraping TheFork Restaurants Now
Complete restaurant intelligence from Europe's largest dining platform.

