Booking Attractions Scraper
Pricing
from $1.20 / 1,000 attraction chargeds
Booking Attractions Scraper
Get things-to-do search results and reviews from Booking. Talks directly to Booking.com's own mobile app API, no login or API key needed. Split from the mature, published booking-all-in-one-api for a focused, single-purpose workflow.
What does Booking.com Attractions Scraper do?
Booking.com Attractions Scraper searches Booking.com things-to-do by destination — confirmed live: a real Bangkok search returned 1994 real results with real prices, ratings, and review counts. Three modes in one Actor: search (destination -> attraction list, with optional full detail per result), detail (one attraction's full detail by slug), and reviews (paginated reviews for one attraction, with an optional review-filter schema).
It talks directly to the same internal API the official Booking.com Android app uses, reverse-engineered by capturing live traffic from a real device. No Booking.com account, no API key of your own. This is the attractions slice of Booking.com All-in-One API, split out as its own focused Actor.
Why use Booking.com Attractions Scraper?
- Real results, confirmed live — 1994 real things-to-do with real prices, ratings, and review counts for a real Bangkok search
- Automatic destination resolution — pass a plain city name; this Actor resolves it to a
ufifor you (the same id space as hotels'dest_id) - Real paginated reviews — confirmed live: 20 review ids per page, zero overlap between pages
- A dedicated review-topic filter endpoint — a genuinely separate call from both search and the reviews themselves, confirmed live its rating filter genuinely narrows results
- No account needed — every request works fully anonymously
- Use cases: things-to-do content aggregation, review analysis, destination research bots
Input
Mode is auto-detected from which fields are set (slug -> detail, id -> reviews, otherwise search) if mode is left empty.
| Field | Type | Description |
|---|---|---|
mode | string | search | detail | reviews |
ufi | integer | Search mode. Destination id (same space as hotels' dest_id), e.g. -3414440 for Bangkok. |
query | string | Search mode. Free-text destination, resolved to ufi automatically. Ignored if ufi is set. |
page / limit | integer | Search mode: result page/page size. Reviews mode: review page/page size. Default page 1, limit 20. |
includeDetail | boolean | Search mode. Fetch full attraction detail for every result. Default false. |
maxItems | integer | Search mode: max attractions pushed. Reviews mode: max reviews pushed. |
slug | string | Detail mode. The FULL slug string from a search result, e.g. prvajppfwe7k-the-newest-luxury-5-star-bangkok-chao-phraya-dinner-cruise. The short id alone will NOT resolve (404). |
id | string | Reviews mode. The SHORT id field from a search result, e.g. PRvAjpPfwE7K — not the slug. |
rating | string | Reviews mode. An option id from the review filter schema, e.g. 5. |
includeFilters | boolean | Reviews mode. Also push one row with the review filter/sort schema first. Default false. |
Example (search):
{ "query": "Bangkok", "maxItems": 20 }
Example (detail):
{ "slug": "prvajppfwe7k-the-newest-luxury-5-star-bangkok-chao-phraya-dinner-cruise" }
Example (reviews):
{ "id": "PRvAjpPfwE7K", "rating": "5", "includeFilters": true }
Output
Search mode: one row per attraction. Detail mode: one { "type": "detail", ... } row. Reviews mode: one { "type": "review", ... } row per review (trimmed example):
{"id": "PRvAjpPfwE7K","name": "The Newest Luxury 5-Star Bangkok Chao Phraya Dinner Cruise","slug": "prvajppfwe7k-the-newest-luxury-5-star-bangkok-chao-phraya-dinner-cruise","representativePrice": { "currency": "IDR", "chargeAmount": 854312.9 }}
Known limitations
- No currency override. Three different ways of passing a currency override were each tried live by the parent Actor's own README and every one was rejected by the API's own input validation — prices reflect a fixed account-level currency this Actor cannot override.
- Detail and reviews genuinely need different identifiers from the same search result (full
slugvs. shortid) — this is a real API quirk, not an inconsistency in this Actor. - This is an unofficial, reverse-engineered integration, not affiliated with or endorsed by Booking.com B.V. Behavior may change if Booking.com changes its API.
Pricing
Pay-per-event: $0.0015 per attraction result (FREE plan; BRONZE/SILVER/GOLD/PLATINUM/DIAMOND get automatic discounts based on your Apify plan). Covers search results, detail rows, and reviews.