TheFork Scraper | Restaurants, Menus and Ratings avatar

TheFork Scraper | Restaurants, Menus and Ratings

Pricing

from $5.05 / 1,000 restaurants

Go to Apify Store
TheFork Scraper | Restaurants, Menus and Ratings

TheFork Scraper | Restaurants, Menus and Ratings

TheFork scraper (LaFourchette, ElTenedor): type a city and get every restaurant as one flat row, 20 restaurants in 5 seconds with 123 fields each. Cuisine, average price, TheFork and Tripadvisor ratings, address, GPS, opening hours, full menu with prices, offers, Michelin awards, reviews. No login.

Pricing

from $5.05 / 1,000 restaurants

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

TheFork Scraper (LaFourchette, ElTenedor) | Restaurants, Menus and Ratings (2026)

TheFork restaurants, 123 fields each, from any search.

From SilentFlow. Creators of Facebook Search Scraper and Pinterest Scraper, with 540,000+ combined lifetime runs.

Every restaurant TheFork lists in a city, one flat row each, with its ratings, menu prices, opening hours and offers. 20 Paris restaurants in about 5 seconds.

Why choose this actor?

Copying restaurants out of TheFork 25 at a time? Building a prospect list without prices, ratings or hours? Stuck with a scraper that only takes TheFork links and hands back nested arrays your spreadsheet cannot filter?

  • More data on every restaurant. On our Paris test run, 120 fields were filled on the restaurants we saved: cuisine, average price, TheFork rating with its food, service and ambience scores, Tripadvisor rating, GPS, hours for each day, the full menu with dish prices, set menus, the current discount, Michelin and Insider awards, amenities, photos, up to 20 latest reviews and the restaurants nearby. The most used TheFork actor shows 104 fields in its example.
  • Type a city, not a link. Start from a city or a district name (Paris, Lyon, Montmartre), add a cuisine (sushi Lyon), paste any TheFork page, or list restaurant ids. Three ways in, where the most used TheFork actor takes TheFork pages only. Typing Paris opens the 3,337 restaurants TheFork lists there.
  • Columns you can filter right away. Opening hours come one column per weekday, menu prices as cheapest, dearest and average dish, amenities as true or false: outdoor dining, wheelchair access, Wi-Fi, vegan options and seven more. Sort a city by rating, keep the restaurants open on Sunday, drop the ones without a terrace, without writing a formula.

Try TheFork Scraper

Try your first restaurants

Paste this input in the actor's Input tab, or keep the prefilled one, and press Start:

{
"searchQueries": ["Paris"],
"maxItems": 20
}

You get 20 Paris restaurants in about 5 seconds, each one a row with its menu, hours, ratings and offers. The Apify Free plan covers runs like this one every month, so you can check the data before you scale to a whole city.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

You have access to the TheFork Scraper on Apify: silentflow/thefork-scraper
It scrapes TheFork (thefork.com, formerly LaFourchette and ElTenedor) restaurants. One dataset row per restaurant.
Input (no field is required, give at least one of the first three):
- searchQueries (array of strings): cities, towns or districts, optionally with a cuisine. Examples: "Paris", "Lyon", "Montmartre", "sushi Lyon", "Italian restaurants in Milan"
- startUrls (array of strings): TheFork pages: a city (https://www.thefork.com/restaurants/paris-c415144), a filtered list (.../paris-c415144/italian-t436, .../promotions, a district), or a restaurant (https://www.thefork.com/restaurant/new-delhi-palace-r751236). Any TheFork country site.
- restaurantIds (array of strings): TheFork restaurant ids, the number after -r in a restaurant address. Example: "35146"
- maxItems (integer, default 100): restaurants to save for the whole run
- cuisine (string, optional): a TheFork cuisine applied to searchQueries: italian, french, japanese, chinese, indian, spanish, mediterranean, pizzeria, vegan-cuisine...
- offersOnly (boolean, default false): keep only restaurants running a TheFork discount
Output per restaurant (136 data fields, flat, camelCase, null when TheFork has no value):
- identity: id (TheFork id, string), uuid, name, url, slug
- content: cuisine, cuisineTypes[], description, chefName, specialties[], atmosphere[], features[], dietaryOptions[], paymentMethods[], collections[], insiderSelections[], safetyMeasures[], tags[], highlightedTags[], distinctions[], mostMentionedDishes[], mostMentionedFeatures[], reviewsSummary
- measures: rating (out of 10), ratingLabel, reviewCount, monthlyReviewCount, ratingCount, writtenReviewCount, foodRating, serviceRating, ambienceRating, recentAverageRating, ownerReplyRate (0 to 1), tripadvisorRating (out of 5), tripadvisorReviewCount, reviewLanguages{lang: count}, priceRange (1 to 4), averagePrice, currency, menuPriceMin, menuPriceMax, menuPriceAverage, mainCoursePriceAverage
- place: address, street, postalCode, city, cityId, country, countryCode (ISO), areas[], district, region, latitude, longitude, transport, parking
- hours: openingHours{monday: ["12:00-15:00"], ...}, mondayHours ... sundayHours ("Closed" on closing days), isOpenSunday
- booking: isBookable, hasAvailability, availableTimes[] (free times today), reservationsToday, hasOffers, discountPercent, promotion, eventName, deals[], isSuperYums, yumsOffers[], payAtTable, payAtTableYums, acceptsGiftCards, acceptsTheForkPay, hasLoyaltyProgram, isAffiliated
- awards: michelinStars, michelinUrl, michelinReview, isMichelinGuide, isInsider, insiderDescription, isTopHost, isTopRated, isNewRestaurant, theforkAwards, topChartRank, topChartSize, topChartLocation, guideAwards[]
- amenities (true/false): hasOutdoorDining, isKidFriendly, isGoodForGroups, isWheelchairAccessible, isDogFriendly, hasAirConditioning, hasWifi, isPrivatizable, hasVegetarianOptions, hasVeganOptions, hasGlutenFreeOptions
- menu: menu[{name, items[{name, description, price, isMainDish}]}], menuSectionCount, menuItemCount, setMenus[{name, courses[{name, items[]}], hasAvailability, updatedAt}], setMenuCount, pdfMenuPages, menuUrl
- media: mainPhotoUrl, photos[], photoCount, customerPhotos[], customerPhotoCount, foodPhotoCount, menuPhotoCount, menuPhotoUrl
- reviews: reviews[{id, rating, text, mealDate, author, authorReviewCount, likes, photos[], ownerReply}] (up to 20 latest), reviewsUrl, latestReviewId, latestReviewDate, latestReviewRating, latestReviewText, latestReviewAuthor, latestReviewAuthorReviewCount
- extras: faq[{question, answer}], nearbyRestaurants[{id, name, url, cuisine, rating, reviewCount, averagePrice, currency, address}], metaTitle, metaDescription
- meta: searchQuery, position (rank in the TheFork list), scrapedAt (RFC 3339)
Dates are RFC 3339 UTC. Use apify-client for Python or JavaScript: client.actor("silentflow/thefork-scraper").call(run_input={...}), then read the default dataset.

How to scrape TheFork restaurants

Get every restaurant of a city

Type the city as you would say it. TheFork's 121 main cities are recognized in English and in their local names (Milano, Genรจve, Den Haag); any other town is placed on the map first.

{
"searchQueries": ["Barcelona"],
"maxItems": 200
}

Build a list of Japanese restaurants in Lyon

Add the cuisine to the place, or pick it in the Cuisine field. On our test run, Lyon gave 38 Japanese restaurants on TheFork.

{
"searchQueries": ["Lyon"],
"cuisine": "japanese",
"maxItems": 50
}

Track the discounts around a district

A district or a neighbourhood gives the restaurants around it. Turn on the offers filter to keep only those running a discount right now, with the percentage and the offer name on each row.

{
"searchQueries": ["Montmartre"],
"offersOnly": true,
"maxItems": 30
}

Input parameters

ParameterTypeDefaultWhat it does
searchQueriesarray of stringsprefilled with ParisCities, towns or districts, one per line. A cuisine in the line narrows it: sushi Lyon, Italian restaurants in Milan.
startUrlsarray of stringsnoneTheFork pages: a city, a filtered list, a district, the offers of a city, or a restaurant page. Any TheFork country site.
restaurantIdsarray of stringsnoneTheFork restaurant ids, the number after -r at the end of a restaurant address.
maxItemsinteger100Restaurants to save for the whole run, across every line.
cuisinestringanyKeep only this cuisine in the cities and places you typed. Pick one or type another TheFork cuisine.
offersOnlybooleanfalseKeep only the restaurants running a TheFork discount.

No field is required: give at least one city, page or id. Restaurants named one by one (pages and ids) are read first, so a long city list never crowds them out of maxItems. A restaurant found by two lines is saved once.

Accepted formats:

  • Places: Paris, paris, Genรจve, Geneva, The Hague, Lyon, Saint-Tropez, Montmartre, Paris 11th.
  • Place with cuisine: sushi Lyon, Lyon japanese, Italian restaurants in Milan, Barcelona, Middle Eastern, pizza Rome.
  • City and list pages: https://www.thefork.com/restaurants/paris-c415144, .../paris-c415144/italian-t436, .../paris-c415144/promotions, .../paris-c415144/paris-8th-a534, with ?p=3 to start on page 3. Pages of thefork.fr, thefork.es, thefork.it and the other country sites work the same way.
  • Restaurant pages: https://www.thefork.com/restaurant/l-atelier-de-joel-robuchon-etoile-champs-elysees-r35146, its /menu and /reviews pages, and the same page on any country site.
  • Ids: 35146 or r35146.

What data can you extract from TheFork?

Each row is one restaurant, with 136 data fields in 12 groups plus 3 fields that say where the row comes from. On our four test runs (Paris, a Barcelona Italian list with one restaurant id, Japanese restaurants in Lyon, offers around Montmartre), 115 to 120 fields were filled on at least half of the rows. A field TheFork leaves empty for a restaurant comes back as null, a list as [], never as an invented value.

GroupFieldsWhat you get
Identity5id (the TheFork id in the address), uuid, name, url, slug
Content18cuisine and every cuisine type, description, chef, specialties, atmosphere, features, dietary options, payment methods, TheFork collections, Insider selections, tags, distinctions, dishes and features diners mention most
Measures21TheFork rating and label, review and rating counts, reviews this month, food, service and ambience scores, average of the latest reviews, owner reply rate, Tripadvisor rating and count, review languages, price range, average price, currency, cheapest, dearest and average dish, average main course
Place14full address, street, postal code, city and its TheFork id, country and ISO code, areas and landmarks, district, region, latitude, longitude, public transport, parking
Hours9the week as an object, one column per weekday (Closed on closing days), open on Sunday
Booking and offers17bookable, free times today, bookings today, offer flag, discount percent, offer and event names, deals, Yums offers, pay at the table, gift cards, TheFork Pay, loyalty program
Awards14Michelin stars, guide link and review, Michelin selection, Insider, Top Host, top rated, new restaurant, TheFork Awards, top chart rank and size, guide awards such as Gault & Millau
Amenities11outdoor dining, kid-friendly, good for groups, wheelchair access, dog-friendly, air-conditioning, Wi-Fi, can be privatized, vegetarian, vegan and gluten-free options, each true or false
Menu7the ร  la carte menu by section with each dish, description and price, set menus with their courses, counts, PDF menu pages, menu page link
Media8main photo, restaurant photos, diners' photos, photo counts, menu photo
Reviews8up to 20 latest reviews with rating, text, meal date, diner, likes, photos and owner reply, plus the latest one in flat columns
Extras4the restaurant's FAQ on TheFork, the 20 restaurants TheFork lists nearby with their rating and price, page title and description

The amenity flags read TheFork's own filters: true when TheFork lists the feature on the restaurant, false when it does not. The id and url never change for a restaurant, so you can join runs week after week. Photo links are TheFork's own image addresses. Dates (mealDate, latestReviewDate, updatedAt, scrapedAt) are RFC 3339 in UTC.

Output example

One real row from our Paris test run (Tamada, Paris 5th). Long lists are cut to their first items here; the actor returns them in full.

{
"id": "376243",
"uuid": "59058db8-4783-4430-8f82-c5e5bba58154",
"name": "Tamada",
"url": "https://www.thefork.com/restaurant/tamada-r376243",
"slug": "tamada",
"cuisine": "Eastern Europe",
"cuisineTypes": ["Eastern Europe", "European"],
"description": null,
"chefName": null,
"specialties": ["Barbecue", "Chicken", "Dumpling"],
"atmosphere": ["Gift cards", "Homemade cuisine", "Lunch", "Outdoor dining"],
"features": ["Can be privatized", "English spoken", "Open sunday", "Wifi"],
"dietaryOptions": ["Vegetarian dishes"],
"paymentMethods": ["Check", "Credit Card", "TheFork Pay", "UnionPay"],
"collections": ["Black Friday", "TheFork Festival", "TheFork SUMMER!"],
"insiderSelections": [],
"safetyMeasures": [],
"tags": ["Check", "Credit Card", "TheFork Pay", "UnionPay", "Visa", "Voucher"],
"highlightedTags": ["SUPER_YUMS", "TF_PAY", "GIFT_CARD"],
"distinctions": [],
"mostMentionedDishes": ["Khinkali", "Khachapuri"],
"mostMentionedFeatures": ["Georgian atmosphere and traditional music", "Small, cosy, family-friendly dining room"],
"reviewsSummary": null,
"rating": 9.3,
"ratingLabel": "Excellent",
"reviewCount": 499,
"monthlyReviewCount": 12,
"ratingCount": 499,
"writtenReviewCount": 194,
"foodRating": 9.4,
"serviceRating": 9.3,
"ambienceRating": 9,
"recentAverageRating": 9.15,
"ownerReplyRate": 0.15,
"tripadvisorRating": 4.4,
"tripadvisorReviewCount": 78,
"reviewLanguages": {"en": 24, "fr": 167, "it": 2, "ru": 1},
"priceRange": 2,
"averagePrice": 26,
"currency": "EUR",
"menuPriceMin": 2,
"menuPriceMax": 28,
"menuPriceAverage": 15.15,
"mainCoursePriceAverage": 23.33,
"address": "143 Boulevard Saint-Michel, 75005, Paris",
"street": "143 Boulevard Saint-Michel",
"postalCode": "75005",
"city": "Paris",
"cityId": "415144",
"country": "France",
"countryCode": "FR",
"areas": ["Paris - Centre", "Port-Royal"],
"district": "Paris 5th",
"region": "Ile-de-France",
"latitude": 48.8411429,
"longitude": 2.3377273,
"transport": "Le restaurant se situe ร  quelques mettre de la station Port Royal (RER B)",
"parking": "Le stationnement dans les rue environnantes est assez facile.",
"openingHours": {
"friday": ["12:00-20:00"],
"monday": ["12:00-20:00"],
"saturday": ["12:00-20:00"],
"sunday": ["12:00-20:00"],
"thursday": ["12:00-20:00"],
"tuesday": ["12:00-20:00"],
"wednesday": ["12:00-20:00"]
},
"mondayHours": "12:00-20:00",
"tuesdayHours": "12:00-20:00",
"wednesdayHours": "12:00-20:00",
"thursdayHours": "12:00-20:00",
"fridayHours": "12:00-20:00",
"saturdayHours": "12:00-20:00",
"sundayHours": "12:00-20:00",
"isOpenSunday": true,
"isBookable": true,
"hasAvailability": true,
"availableTimes": ["12:00", "12:30", "13:00", "13:30"],
"reservationsToday": 2,
"hasOffers": true,
"discountPercent": 50,
"promotion": "50% off during TheFork Festival",
"eventName": "TheFork Festival",
"deals": ["Yums x2"],
"isSuperYums": true,
"yumsOffers": [{"yums": 1000, "discount": 20, "minimumSpend": 30, "currency": "EUR"}],
"payAtTable": true,
"payAtTableYums": 0,
"acceptsGiftCards": true,
"acceptsTheForkPay": true,
"hasLoyaltyProgram": false,
"isAffiliated": true,
"michelinStars": null,
"michelinUrl": null,
"michelinReview": null,
"isMichelinGuide": false,
"isInsider": false,
"insiderDescription": null,
"isTopHost": false,
"isTopRated": false,
"isNewRestaurant": false,
"theforkAwards": null,
"topChartRank": null,
"topChartSize": null,
"topChartLocation": null,
"guideAwards": [],
"hasOutdoorDining": true,
"isKidFriendly": false,
"isGoodForGroups": false,
"isWheelchairAccessible": false,
"isDogFriendly": false,
"hasAirConditioning": false,
"hasWifi": true,
"isPrivatizable": true,
"hasVegetarianOptions": true,
"hasVeganOptions": false,
"hasGlutenFreeOptions": false,
"menu": [
{
"name": "Plats",
"items": [
{"name": "Khinkali", "description": "(5 Grands ravioles farcies ร  la viande hachรฉe de bล“uf)", "price": 19, "isMainDish": false},
{"name": "Khinkali vegetarien", "description": "(3 Grands ravioles aux รฉpinards et fromage, dans une sauce blanche a lโ€™yaourt, aneth et lโ€™ail)", "price": 18, "isMainDish": false}
]
}
],
"menuSectionCount": 4,
"menuItemCount": 13,
"setMenus": [
{
"name": "Menu dejeuner",
"courses": [
{"name": "Entrees", "items": ["Potage du jour (se renseigner auprรจs de serveur/se)", "Entrรฉe du jour (se renseigner auprรจs de serveur/se)"]},
{"name": "Plats", "items": ["Plat du jour (se renseigner auprรจs de serveur/se)", "Shkmeruli (poulet dans une sauce ร  lโ€™ail )", "Lobio (haricots rouges mijotรฉs au feu doux)"]}
],
"hasAvailability": false,
"updatedAt": "2026-02-16T06:15:06Z"
}
],
"setMenuCount": 1,
"pdfMenuPages": 2,
"menuUrl": "https://www.thefork.com/restaurant/tamada-r376243/menu",
"mainPhotoUrl": "https://cdn.thefork.com/tf-lab/image/upload/restaurant/59058db8-4783-4430-8f82-c5e5bba58154/9102552a-4e0a-45c4-81ee-b30ab5421a98.jpg",
"photos": [
"https://cdn.thefork.com/tf-lab/image/upload/restaurant/59058db8-4783-4430-8f82-c5e5bba58154/9102552a-4e0a-45c4-81ee-b30ab5421a98.jpg",
"https://cdn.thefork.com/tf-lab/image/upload/restaurant/59058db8-4783-4430-8f82-c5e5bba58154/23c6b51a-43b3-4f60-9df5-0afd6937b773.jpg"
],
"photoCount": 92,
"customerPhotos": [
"https://cdn.thefork.com/tf-lab/image/upload/f_auto,q_auto,w_800,c_limit/customer/59058db8-4783-4430-8f82-c5e5bba58154/ec30a159-40da-4bd8-aed0-9db04c2c2c1d.jpg",
"https://cdn.thefork.com/tf-lab/image/upload/f_auto,q_auto,w_800,c_limit/customer/59058db8-4783-4430-8f82-c5e5bba58154/f610b1b4-d40e-44b0-96a5-d0ffbf06d4bc.jpg"
],
"customerPhotoCount": 73,
"foodPhotoCount": 66,
"menuPhotoCount": 2,
"menuPhotoUrl": "https://cdn.thefork.com/tf-lab/image/upload/pg_1/menu/59058db8-4783-4430-8f82-c5e5bba58154/7013d96c-c0c6-4965-bbd1-2a2f14d9b017.jpg",
"reviews": [
{
"id": "26681b29-0dd6-4d28-b1db-157db03d7971",
"rating": 9.5,
"text": "The food was delicious โ˜บ๏ธ",
"mealDate": "2026-10-02T17:30:00Z",
"author": "Saule A.",
"authorReviewCount": 6,
"likes": 0,
"photos": [
"https://cdn.thefork.com/tf-lab/image/upload/f_auto,q_auto,w_800,c_limit/customer/59058db8-4783-4430-8f82-c5e5bba58154/e43ac88b-9c4a-439e-9ee5-34f638555c49.jpg"
],
"ownerReply": null
}
],
"reviewsUrl": "https://www.thefork.com/restaurant/tamada-r376243/reviews",
"latestReviewId": "26681b29-0dd6-4d28-b1db-157db03d7971",
"latestReviewDate": "2026-10-02T17:30:00Z",
"latestReviewRating": 9.5,
"latestReviewText": "The food was delicious โ˜บ๏ธ",
"latestReviewAuthor": "Saule A.",
"latestReviewAuthorReviewCount": 6,
"faq": [
{"question": "Can I reserve at Tamada right now?", "answer": "Yes, Tamada has availability on TheFork currently. Do not hesitate, reserve your table on TheFork!"},
{"question": "Does Tamada have special offers currently?", "answer": "Yes, Tamada is offering TheFork Festival Reserve your table and enjoy your special discount now on TheFork!"}
],
"nearbyRestaurants": [
{"id": "803041", "name": "Solluna", "url": "https://www.thefork.com/restaurant/solluna-r803041", "cuisine": "French", "rating": 8.6, "reviewCount": 212, "averagePrice": 18, "currency": "EUR", "address": "75006, Paris"}
],
"metaTitle": "Tamada in Paris - Restaurant Reviews, Menu and Prices | TheFork",
"metaDescription": "TheFork Festival. Book a table at Tamada in Paris. Find restaurant reviews, menu, prices, and hours of operation for Tamada on TheFork.",
"searchQuery": "Paris",
"position": 3,
"scrapedAt": "2026-10-21T03:05:24Z"
}

Advanced usage

Follow the same restaurants every week

Schedule a run on a list of ids to watch ratings, review counts, discounts and free times move. The id stays the same from run to run, so each week joins on it.

{
"restaurantIds": ["35146", "751236", "16173"],
"maxItems": 3
}

Map a restaurant's local competition

Each row already carries the 20 restaurants TheFork lists nearby, with their rating and average price. Run the restaurant you care about to get its competitor set in one row, then run those ids to compare menus and scores.

{
"startUrls": ["https://www.thefork.com/restaurant/new-delhi-palace-r751236"],
"maxItems": 1
}

Scan several cities in one run

Every line is read in turn until maxItems. Raise the cap to cover each city in full; a restaurant found twice is saved once.

{
"searchQueries": ["Paris", "Lyon", "Marseille", "Bordeaux"],
"maxItems": 2000
}

Start from a TheFork page you already filtered

Filter on TheFork (a cuisine, a district, the offers) and paste the address. The actor reads that list page after page, in TheFork's order, and position keeps the rank.

{
"startUrls": [
"https://www.thefork.com/restaurants/paris-c415144/italian-t436",
"https://www.thefork.com/restaurants/madrid-c328022/promotions"
],
"maxItems": 150
}

Benchmark menu prices by cuisine

Take one cuisine across two cities and compare averagePrice, menuPriceAverage and mainCoursePriceAverage side by side in the Menus and prices view of the dataset.

{
"searchQueries": ["Milan", "Rome"],
"cuisine": "italian",
"maxItems": 100
}

FAQ

What is TheFork? TheFork is Europe's restaurant booking site, with restaurants in France, Spain, Italy, Portugal, the Netherlands, Belgium, Switzerland, Austria, Germany, Sweden and a few cities beyond. It was LaFourchette in France and ElTenedor in Spain: lafourchette.com and eltenedor.es now open TheFork's French and Spanish sites. Paris alone lists 3,337 restaurants.

What does one row contain? One restaurant: its identity, cuisine, ratings, prices, address and GPS, hours, booking and offers, awards, amenities, full menu, photos, latest reviews, FAQ and nearby restaurants, 136 data fields in all. The table above lists each group.

Do I need a TheFork account? No. Everything returned is public on TheFork. There is no login and nothing to set up: type a city and press Start.

How do I find a restaurant id? It is the number after -r at the end of a TheFork restaurant address: https://www.thefork.com/restaurant/new-delhi-palace-r751236 has the id 751236. You can also paste the whole address in TheFork pages.

Can I get every restaurant in a city? Yes. Typing a city opens TheFork's full list for it (3,337 restaurants in Paris) and the actor reads it page after page until maxItems. Set maxItems above the city's count to take them all. On our test run, 60 Paris restaurants over three result pages took 20 seconds.

Does it return phone numbers or emails? No. TheFork does not show them on its public restaurant pages. Each row gives the full address, GPS coordinates and the TheFork page of the restaurant.

Why are some fields empty? TheFork fills them only when the restaurant does. On our Paris test run, opening hours were on 13 of 20 restaurants, a chef's name on a quarter of them, Michelin details on the starred ones only. An empty field comes back as null, so a missing value is never mistaken for a real one.

How many reviews do I get per restaurant? Up to the 20 latest, with text, rating, meal date, the diner and the owner's reply, plus the review counts, the food, service and ambience scores and the review languages. For thousands of reviews per restaurant, use a dedicated TheFork reviews actor.

How fresh is the data? Live. Every run reads TheFork at the time it runs: today's free times, today's bookings and the discounts running now. Schedule the actor to keep a history.

Can I combine a place, a cuisine and the offers filter? Yes. searchQueries: ["Paris"] with cuisine: "japanese" and offersOnly: true returns the Japanese restaurants of Paris running a discount right now, with the percentage on each row.

Which languages is the data in? English labels for cuisines, tags and features. Restaurant names, descriptions, menus and reviews stay in the language the restaurant and its diners wrote them in.

More SilentFlow scrapers

๐Ÿ›’ E-commerce

๐Ÿ’ผ Jobs

๐Ÿ  Real estate

๐Ÿ“ฃ Social media

๐Ÿข Business data

โœˆ๏ธ Travel

๐ŸŽฏ Lead generation

๐Ÿ”Ž SEO

๐Ÿ“ˆ Marketing

๐Ÿงฐ More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available restaurant listings, menus, ratings and reviews from TheFork. It does not bypass any login, paywall or CAPTCHA, and never uses a TheFork account. Users are responsible for complying with TheFork's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). Review rows carry diners' first names and initials and their photos, which can be personal data: handle them accordingly, keep only what you need, and honor removal requests. TheFork is a trademark of its owner; this Actor is not affiliated with or endorsed by TheFork. The data returned is informational; verify accuracy for regulated use cases.

TheFork Scraper by SilentFlow: every restaurant of a city, with its menu, ratings, hours and offers, ready for your spreadsheet.