TheFork Restaurant Reviews Scraper - Multi-Language
Pricing
from $2.29 / 1,000 reviews
TheFork Restaurant Reviews Scraper - Multi-Language
Extract all reviews from any TheFork restaurant across 7 languages. Get ratings, review text, meal dates, reviewer details, photos, and restaurant replies. Automatic deduplication. Export as JSON, CSV, or Excel.
Pricing
from $2.29 / 1,000 reviews
Rating
0.0
(0)
Developer
ClearPath
Maintained by CommunityActor stats
1
Bookmarked
34
Total users
12
Monthly active users
6.3 hours
Issues response
6 days ago
Last modified
Categories
Share
TheFork Review Scraper | All Reviews, All Languages (2026)
| Restaurant Scrapers ➤ | TheFork Scraper | TheFork Reviews | Resy Scraper |
|---|
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
clearpath/thefork-restaurant-reviews on Apify. Call: ApifyClient("TOKEN").actor("clearpath/thefork-restaurant-reviews").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: restaurantUrl (string, required), reviewLanguage (string), sortBy (string: newest/highest_rating/lowest_rating), reviewsSince (string: ISO date/timestamp, only reviews posted on/after it), maxReviews (integer). Full actor spec (input schema with all params/enums/defaults, output dataset fields, README): GET https://api.apify.com/v2/acts/clearpath~thefork-restaurant-reviews/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Pricing: PPE $2.99/1k reviews. Get token: https://console.apify.com/account/integrations
Why This Actor?
The main TheFork Scraper returns reviews in the restaurant's default language only. Many restaurants have reviews in French, English, German, Italian, Spanish, Dutch, and Portuguese, but a single-language query misses most of them.
This actor solves that: it queries each language separately, collects all reviews, and deduplicates by review ID. One restaurant URL in, every review out.
Quick Start
All languages — just a URL, reviews from every language merged and deduplicated:
{"restaurantUrl": "https://www.thefork.com/restaurant/el-lago-r2406"}
Single language — filter to one language:
{"restaurantUrl": "https://www.thefork.fr/restaurant/el-lago-r2406","reviewLanguage": "fr","maxReviews": 200}
Highest-rated first — sort by rating instead of date:
{"restaurantUrl": "https://www.thefork.com/restaurant/el-lago-r2406","sortBy": "highest_rating","maxReviews": 50}
Daily monitoring — only reviews posted since your last check:
{"restaurantUrl": "https://www.thefork.com/restaurant/el-lago-r2406","reviewsSince": "2026-06-10T00:00:00Z"}
Pricing
| Apify Plan | Price per 1,000 Reviews |
| Free | $2.99 |
| Starter | $2.79 |
| Scale | $2.49 |
| Business | $2.29 |
Free Users
New users get 10 free runs with up to 50 reviews per run to test the actor before subscribing. Upgrade your plan for unlimited results.
Use Cases
|
Sentiment Analysis Collect all reviews across languages for NLP analysis. Detect trends in food quality, service, and ambience over time. |
Competitor Monitoring Track what guests say about competing restaurants. Compare ratings, complaint patterns, and response rates. |
|
Reputation Management Export all reviews including restaurant replies. Identify unanswered negative reviews and response gaps. |
Market Research Analyze review volume and ratings across languages to understand tourist vs. local dining patterns. |
|
New Review Monitoring Schedule recurring runs with reviewsSince set to your last check. The run stops as soon as it reaches older reviews, so you only collect (and pay for) genuinely new ones. Pipe new low ratings into alerts or a reputation dashboard.
| |
Parameters
| Parameter | Type | Description |
restaurantUrl | string | TheFork restaurant URL. Any domain works (.com, .fr, .de, .it, .es). |
reviewLanguage | string | "All languages" iterates every language and merges. Or pick one: en, fr, de, it, es, nl, pt. Default: all |
sortBy | string | Review order: newest, highest_rating, or lowest_rating. With "All languages", applied within each language. Default: newest |
reviewsSince | string | Only reviews posted on/after this date (UTC). Accepts 2026-06-10 or 2026-06-10T14:30:00Z. Stops early, so you only collect new reviews. Forces newest order. Default: empty (all) |
maxReviews | integer | Max reviews to collect across all languages. 0 = no limit. Default: 0 |
Output
Each review is a flat dataset item with 28 fields:
Restaurant rating summary — overall rating (1-10 scale), total review count, and the category scores for food, service, and ambience, plus the restaurant's TripAdvisor rating (1-5 scale) and review count when available. These restaurant-level fields are identical on every row, so a single review gives you the full summary. The summary is also written to the run's key-value store under OUTPUT, so it is available even for restaurants that have ratings but no written reviews.
Review data — rating (1-10 scale), review text, meal date, creation date, status, restaurant reply, photos, likes
Reviewer data — first name, last name, username, avatar URL, total review count
Output Example
{"restaurant_id": "61beac0c-ba99-45d2-b7e5-70e067c86be7","restaurant_name": "El Lago","restaurant_overall_rating": 9.5,"restaurant_overall_review_count": 367,"restaurant_food_rating": 9.6,"restaurant_service_rating": 9.6,"restaurant_ambience_rating": 9.4,"restaurant_review_count": 172,"restaurant_tripadvisor_rating": null,"restaurant_tripadvisor_review_count": null,"review_id": "ac9a66c7-25b1-11f0-b007-0e8af7bd4d53","created_at": "2025-04-30T10:55:48.569Z","updated_at": "2025-04-30T10:55:48.569Z","rating_value": 10,"meal_date": "2025-04-29T18:00:00.000Z","status": "PUBLISHED","review_body": "Love this place & the serenity, excellent food & amazing champagne/wine list","restaurant_reply_body": null,"restaurant_reply_status": null,"reviewer_id": "0be0b618-0202-4c66-ab88-da0067ce7f61","reviewer_first_name": "Jose","reviewer_last_name": "T.","reviewer_username": "Jose T.","reviewer_avatar_url": null,"reviewer_review_count": 2,"photos": [{"title": null,"description": null,"image_url": "https://cdn.thefork.com/tf-lab/image/upload/f_auto,q_auto,w_800,c_limit/customer/61beac0c.../a39a94be.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/61beac0c.../a39a94be.jpg","created_ts": "2025-04-30T10:57:34.768Z","likes": 0}],"likes": 0,"language": "en"}
API Integration
Python
from apify_client import ApifyClientclient = ApifyClient("your_token")run = client.actor("clearpath/thefork-restaurant-reviews").call(run_input={"restaurantUrl": "https://www.thefork.com/restaurant/el-lago-r2406","reviewLanguage": "all","maxReviews": 500,})for review in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{review['language']} | {review['rating_value']} | {review['review_body'][:80]}")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'your_token' });const run = await client.actor('clearpath/thefork-restaurant-reviews').call({restaurantUrl: 'https://www.thefork.com/restaurant/el-lago-r2406',reviewLanguage: 'all',maxReviews: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`${items.length} reviews collected`);
Supported Languages
|
EN English |
FR French |
DE German |
IT Italian |
ES Spanish |
NL Dutch |
PT Portuguese |
The actor auto-detects which languages have reviews for each restaurant. Set reviewLanguage to "all" to iterate all of them, or pick a specific code.
Data Export
|
JSON NLP pipelines, APIs |
CSV Spreadsheets, reporting |
Excel Dashboards, presentations |
FAQ
How is this different from the main TheFork Scraper?
The main scraper returns reviews in one language per restaurant (the domain's default). This actor iterates all 7 languages separately, collecting reviews that only appear in non-default language buckets. It also deduplicates automatically.
Are reviews deduplicated?
Yes. The same review can appear in multiple language buckets. The actor tracks review IDs and skips duplicates.
Do I need a TheFork account?
No. All data is publicly available.
How many reviews can I extract?
No limit. Set maxReviews to 0 for all reviews. Restaurants typically have between 50 and 5,000 reviews across all languages.
Can I use any TheFork domain?
Yes. URLs from thefork.com, thefork.fr, thefork.de, thefork.it, and thefork.es all work.
Support
|
Need help? Email max@mapa.slmail.me or open an issue in the Issues tab. |
Legal Compliance
Extracts publicly available review data from TheFork. Users must comply with applicable data protection regulations (GDPR, CCPA) and TheFork's terms of service.
Built by Clearpath