Extract restaurant listings from any TheFork search or city browse page. Returns structured cards with ratings, cuisine, average price, address, geolocation, bookability, AI review summaries, and pagination metadata.
TheFork is a Next.js single-page application. Search results (RestaurantCard components) and availability data are loaded via GraphQL after the initial HTML shell. A plain HTTP request returns an empty page skeleton. Piloterr uses website rendering to execute JavaScript, wait for restaurant cards to render, and extract structured JSON from the live DOM.
GET https://api.piloterr.com/v2/thefork/search?query=https://www.thefork.fr/search?cityId=529135&date=2026-06-13&hour=660&partySize=8&timezone=Europe%2FParis
Copy the full URL from thefork.fr. Use pagination.next_url for the next page (anchor-based: #list25, #list50, ...).
| Format |
Example |
| Search with filters |
https://www.thefork.fr/search?cityId=529135&date=2026-06-13&hour=660&partySize=8 |
| City listing |
https://www.thefork.fr/restaurants/strasbourg-c529135 |
| Parameter |
Type |
Required |
Description |
query |
string |
yes |
Full TheFork /search or /restaurants/{city}-c{id} URL |
| Field |
Type |
Description |
results |
array |
Restaurant listing cards |
results[].id |
integer |
TheFork restaurant ID |
results[].url |
string |
Restaurant page URL |
results[].name |
string |
Restaurant name |
results[].slug |
string |
URL slug |
results[].uuid |
string |
TheFork UUID |
results[].image |
string |
Main photo URL |
results[].rating |
number |
TheFork score (0-10) |
results[].reviews_count |
integer |
Number of reviews |
results[].cuisine |
string |
Primary cuisine label |
results[].currency |
string |
Price currency (e.g. EUR) |
results[].avg_price |
number |
Average menu price |
results[].address |
string |
Full formatted address |
results[].geolocation |
object |
{ latitude, longitude } |
results[].is_bookable |
boolean |
Online booking available |
results[].timeslots |
array |
Available time slots when date/hour filters are set |
results[].review_snippets |
array |
Highlighted customer review excerpts |
results[].reviews_summary |
string |
AI-generated review summary |
pagination.current |
integer |
Current page number |
pagination.next |
integer | null |
Next page number |
pagination.next_url |
string | null |
Next page URL with anchor |
pagination.total_pages |
integer |
Total pages |
pagination.total_count |
integer |
Total matching restaurants |
pagination.per_page |
integer |
Results on this page |
pagination.has_next_page |
boolean |
Whether a next page exists |
- Works on all TheFork country domains (
thefork.fr, thefork.com, thefork.it, ...).
hour is minutes from midnight (660 = 11:00).
timeslots may be empty when no date/time filter is applied.
- Pass
results[].url to TheFork Restaurant for tags, gallery, opening hours, and TripAdvisor ratings.
- Build restaurant lead lists by city, cuisine, and availability
- Monitor competitor ratings and average prices across markets
- Feed hospitality analytics with geolocated dining data
- Check real-time bookability and time slots for a given date and party size