Booking.com Attractions Search Scraper
Pricing
from $4.99 / 1,000 results
Booking.com Attractions Search Scraper
Export tours and things to do for a Booking destination—titles, prices, review signals, and photos in structured rows.
Pricing
from $4.99 / 1,000 results
Rating
0.0
(0)
Developer
PowerAI
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Pull tours and activities for a destination you already identified in Booking’s attractions flow: one row per product, with names, pricing hints, review stats, photos, and flags—ready for merchandising, research, or partner reporting.
Who it’s for
- Destination & product teams building activity assortments for a city or region.
- Marketing & partnerships comparing what Booking promotes for a location.
- Analysts who need repeatable exports instead of browsing page by page.
What you can do with it
- Collect many products across result pages until you hit your cap.
- Optional filters and sort when you already know valid values from the same Booking workflow (currency, language, type/price/UFI/label filters).
- Date range fields when you use them in your search context.
How it works (in plain terms)
You provide the location / product id (usually from searchLocation—often a Base64-style string). The tool requests page 1, 2, … of the attractions catalog, merges each product into your dataset, and stops when there are no more products or you reach your maximum row count.
Input
| Field | Required | What it means |
|---|---|---|
ID (id) | Yes | Destination or product identifier from your attractions location search. |
Maximum results (maxResults) | No | Upper limit on how many products to collect (default 100). |
Start / end date (startDate, endDate) | No | Optional dates for sorting context (yyyy-mm-dd or yyyy/mm/dd). |
Sort (sortBy) | No | e.g. trending, lowest price, best reviewed—when supported. |
Currency & language (currency_code, languagecode) | No | Display currency and response language. |
Filters (typeFilters, priceFilters, ufiFilters, labelFilters) | No | Comma-separated tag names from prior search filterOptions when you need them. |
Output
- One row per attraction product until your cap or the end of results.
- Identity & copy: product
id,name, URLslug, andshortDescription. Nested objects often include GraphQL-style__typenamelabels from the upstream API. - Pricing:
representativePricewith charge/public amounts and currency (e.g. INR). - Media:
primaryPhoto, usually with asmallimage URL (long-lived CDN links; treat as snapshot). - Reviews:
reviewsStats—includingallReviewsCount,percentage, andcombinedNumericStats(average,totalreview count used for scoring). - Place:
ufiDetails—city name (bCityName),ufi, andurl.country. - Policies & commerce:
cancellationPolicy(e.g.hasFreeCancellation),offers(nested offeritemswith their own ids),supportedFeatures(e.g.nativeApp). - Merchandising:
flags(e.g. bestseller, recommended-by-travellers, guide badges) withflag,value, andrank. - Every row adds when that record was written (
scrapedAt).
Illustrative shape only: some products may omit or add fields; image URLs are long.
Sample output (one dataset row, trimmed)
{"__typename": "AttractionsProduct","cancellationPolicy": {"__typename": "AttractionsCancellationPolicy","hasFreeCancellation": true},"id": "PR6K7ZswbGBs","name": "Dharavi, Dhobighat, and Mumbai Dabbawallas","slug": "pr6k7zswbgbs-mumbai-half-day-tour","shortDescription": "A must do tour of Mumbai. This is an off-beat 3.5hours tour where you will see Mumbai from a wide...","representativePrice": {"__typename": "AttractionsPrice","chargeAmount": 1852.75,"currency": "INR","publicAmount": 1852.75},"primaryPhoto": {"__typename": "AttractionsPhoto","small": "https://r-xx.bstatic.com/xdata/images/xphoto/300x320/147437415.jpg?k=3269ed4a34e76c66d327cfb870fa07ce95629ab36021dc0b11924f0379ccb046&o="},"reviewsStats": {"__typename": "AttractionsProductReviewStats","allReviewsCount": 0,"percentage": "0","combinedNumericStats": {"__typename": "AttractionsProductCombinedReviewStats","average": 4.7,"total": 87}},"ufiDetails": {"__typename": "AttractionLocationResponse","bCityName": "Mumbai","ufi": -2092174,"url": {"__typename": "AttractionLocationUrl","country": "in"}},"offers": [{"__typename": "Offer","items": [{ "__typename": "OfferItem", "id": "OIEnoHP8TJsB" }]},{"__typename": "Offer","items": [{ "__typename": "OfferItem", "id": "OIMyfydyr7zh" }]}],"supportedFeatures": {"__typename": "AttractionsProductSupportedFeatures","nativeApp": true},"flags": [{"__typename": "AttractionsProductFlags","flag": "recommendedByTravellers","value": true,"rank": 96},{"__typename": "AttractionsProductFlags","flag": "bestseller","value": true,"rank": 1},{"__typename": "AttractionsProductFlags","flag": "aiBadgesExpertGuide","value": true,"rank": 1}],"scrapedAt": "2026-03-25T06:11:09.965Z"}
Good to know
- The
idmust match what searchLocation (or your upstream step) returns; wrong values yield empty or failed searches. - Filter tag names come from a first response’s
filterOptionswhen you need narrow segments. - Use data in line with Booking.com’s terms and applicable laws.