# TheFork Restaurant ## Overview | Property | Value | |----------|-------| | **Status** | active | | **Method** | `GET` | | **Endpoint** | `/v2/thefork/restaurant` | | **Base URL** | `https://api.piloterr.com` | | **Credit Cost** | 2 credits per call | | **Documentation** | https://www.piloterr.com/library/thefork-restaurant | ## Description Extract a full TheFork restaurant profile from a restaurant page URL, including ratings, tags, photo gallery, opening hours, and AI review summaries via browser rendering. ## Authentication - **Key Name:** `x-api-key` - **Location:** HTTP Header - **Get an API key:** https://app.piloterr.com/register ## Example Request ```bash curl --location --request GET 'https://api.piloterr.com/v2/thefork/restaurant' \ --header 'Content-Type: application/json' \ --header 'x-api-key: YOUR_API_KEY' ``` ## Example Response ### Lookup Le Petit Casa, Strasbourg ```json { "id": 668497, "url": "https://www.thefork.fr/restaurant/le-petit-casa-r668497", "name": "Le Petit Casa", "slug": "le-petit-casa", "tags": [ { "id": "1829", "name": "Bas-Rhin (67)", "category": { "id": "21" }, "is_published": true }, { "id": "5779", "name": "Carte Cadeau", "category": { "id": "11" }, "is_published": true }, { "id": "5777", "name": "Déjeuner", "category": { "id": "11" }, "is_published": true }, { "id": "1", "name": "En famille", "category": { "id": "11" }, "is_published": true }, { "id": "1460", "name": "Enfants bienvenus !", "category": { "id": "11" }, "is_published": true }, { "id": "2", "name": "Entre amis", "category": { "id": "11" }, "is_published": true }, { "id": "381", "name": "Traditionnel", "category": { "id": "11" }, "is_published": true }, { "id": "644", "name": "Trip Advisor", "category": { "id": "14" }, "is_published": true }, { "id": "335", "name": "Halal", "category": { "id": "8" }, "is_published": true }, { "id": "470", "name": "Options végétariennes", "category": { "id": "8" }, "is_published": true }, { "id": "2372", "name": "Petit Prix", "category": { "id": "9" }, "is_published": true }, { "id": "312", "name": "Carte Bleue", "category": { "id": "5" }, "is_published": true }, { "id": "314", "name": "Carte Mastercard", "category": { "id": "5" }, "is_published": true }, { "id": "315", "name": "Carte Visa", "category": { "id": "5" }, "is_published": true }, { "id": "4367", "name": "TheFork PAY", "category": { "id": "5" }, "is_published": true }, { "id": "317", "name": "Titres et chèques pour les restaurants", "category": { "id": "5" }, "is_published": true }, { "id": "2699", "name": "UnionPay", "category": { "id": "5" }, "is_published": true }, { "id": "660", "name": "Couscous", "category": { "id": "6" }, "is_published": true }, { "id": "513", "name": "Viande et grillades", "category": { "id": "6" }, "is_published": true }, { "id": "1109", "name": "Place de Haguenau", "category": { "id": "4" }, "is_published": true }, { "id": "1742", "name": "Alsace", "category": { "id": "20" }, "is_published": true }, { "id": "5859", "name": "France", "category": { "id": "20" }, "is_published": true }, { "id": "3461", "name": "Grand Est", "category": { "id": "20" }, "is_published": true }, { "id": "346", "name": "Accès personnes à mobilité réduite", "category": { "id": "10" }, "is_published": true }, { "id": "359", "name": "Anglais parlé", "category": { "id": "10" }, "is_published": true }, { "id": "360", "name": "Français parlé", "category": { "id": "10" }, "is_published": true }, { "id": "466", "name": "Marocain", "category": { "id": "12" }, "is_published": true }, { "id": "460", "name": "Oriental", "category": { "id": "12" }, "is_published": true } ], "uuid": "265f611d-cb85-4ae4-a779-e963df820a4b", "image": "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/b9c443c8-06c8-4d56-8e87-419c66f7eeee.jpg", "images": [ "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/b9c443c8-06c8-4d56-8e87-419c66f7eeee.jpg", "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/e69b12cc-a28a-4d17-b6ff-1a32c51c94ce.jpg", "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/fe8d67df-8d21-481d-ac76-87111a1c3f2f.jpg", "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/5ec87fc3-01ef-4021-8cfd-97a35f14e5d7.jpg", "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/e370aa25-b074-41b8-a8e7-1f643f85af64.jpg", "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/635a90be-2eb1-4592-8841-75f839ed8d8b.jpg", "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/9ae02f81-bc2a-42e7-a3b1-a64714e42771.jpg", "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/30c1c7f4-b466-4728-b777-6f59c8edc606.jpg", "https://cdn.thefork.com/tf-lab/image/upload/restaurant/265f611d-cb85-4ae4-a779-e963df820a4b/ff8bfd1f-a0f2-40c1-a623-61f13b28399a.jpg" ], "address": { "street": "24 Rue Thiergarten", "country": "France", "locality": "Strasbourg", "zip_code": "67000" }, "cuisine": "Marocain", "ratings": { "thefork": { "rating": 9.8, "reviews_count": 1030 }, "tripadvisor": { "rating": 4.8, "reviews_count": 53 } }, "currency": "EUR", "avg_price": 35, "description": null, "geolocation": { "latitude": 48.5853087, "longitude": 7.7378558 }, "is_bookable": true, "reviews_summary": "Le Petit Casa enchante par son ambiance chaleureuse et dépaysante, évoquant un véritable voyage au Maroc. Les clients apprécient les plats marocains raffinés, notamment le couscous aux saveurs équilibrées et les tajines exquis. Le service est irréprochable, avec un accueil chaleureux et des conseils avisés. Une expérience inoubliable à découvrir sans hésitation, avec un excellent rapport qualité-prix.", "opening_time_information": { "opening_hours": { "fri": [ { "end": 870, "start": 720 }, { "end": 1350, "start": 1140 } ], "mon": [ { "end": 870, "start": 720 }, { "end": 1350, "start": 1140 } ], "sat": [ { "end": 870, "start": 720 }, { "end": 1350, "start": 1140 } ], "sun": [], "thu": [ { "end": 870, "start": 720 }, { "end": 1350, "start": 1140 } ], "tue": [ { "end": 870, "start": 720 }, { "end": 1350, "start": 1140 } ], "wed": [ { "end": 870, "start": 720 }, { "end": 1350, "start": 1140 } ] } } } ``` ## Documentation ## Overview Extract the full public profile of any TheFork restaurant page (`/restaurant/{slug}-r{id}`). Returns ratings (TheFork + TripAdvisor), cuisine, average price, address, photo gallery, amenity tags, opening hours, and AI review summaries. TheFork restaurant pages are Next.js SPAs. Photos, tags, ratings, and opening hours are fetched client-side via GraphQL. Piloterr uses **website rendering** to load the page in a browser, wait for the restaurant profile to hydrate, and scrape structured JSON from the rendered DOM. ## Quickstart ``` GET https://api.piloterr.com/v2/thefork/restaurant?query=https://www.thefork.fr/restaurant/salamboo-amilkar-r10892 ``` ## Parameters | Parameter | Type | Required | Description | |---|---|---|---| | `query` | string | yes | Full TheFork `/restaurant/{slug}-r{id}` URL | ## Response fields | Field | Type | Description | |---|---|---| | `id` | integer | TheFork restaurant ID | | `url` | string | Canonical restaurant URL | | `name` | string | Restaurant name | | `slug` | string | URL slug | | `uuid` | string | TheFork UUID | | `cuisine` | string | Primary cuisine | | `currency` | string | Price currency | | `avg_price` | number | Average menu price | | `description` | string \| null | Restaurant description when available | | `image` | string | Main photo URL | | `images` | array | Full photo gallery URLs | | `address` | object | `{ street, locality, zip_code, country }` | | `geolocation` | object | `{ latitude, longitude }` | | `is_bookable` | boolean | Online booking available | | `reviews_summary` | string | AI-generated review summary | | `ratings.thefork.rating` | number | TheFork score (0-10) | | `ratings.thefork.reviews_count` | integer | TheFork review count | | `ratings.tripadvisor.rating` | number \| null | TripAdvisor score | | `ratings.tripadvisor.reviews_count` | integer \| null | TripAdvisor review count | | `tags` | array | Amenity and cuisine tags (`id`, `name`, `category`, `is_published`) | | `opening_time_information.opening_hours` | object | Weekly slots keyed by weekday (`mon`..`sun`), each slot `{ start, end }` in minutes from midnight | ## Notes - Works on all TheFork country domains. - Opening hours use minute offsets (`720` = 12:00, `870` = 14:30). - `description` may be `null` on some listings. - `tags` include payment methods, dietary options, ambiance, and location labels. - Hash parameters in the URL (`#date=...`) are accepted but optional. ## Main use cases - Enrich CRM and directory records with restaurant contact and amenity data - Compare TheFork vs TripAdvisor ratings for reputation monitoring - Extract opening hours and bookability for reservation workflows - Build food discovery apps with photos, cuisine tags, and AI summaries