Booking.com scraper API
A Booking.com scraper API that turns a place, an address or a pair of coordinates plus your check-in and check-out into property rows: the nightly price for those exact dates in the currency you ask for, the struck-through price and the discount it implies, review score and count, star class, room type, coordinates and a photo. One call, no browser to drive.
$0.02 per delivered property · $2 free every month · Failed runs never billed
$ curl $QD/booking_stays/run \
-H "Authorization: Bearer $QD_API_KEY" \
-d '{"location": "Roma, Italia", "check_in_date": "2026-10-16", "check_out_date": "2026-10-17", "adults": 2, "currency": "EUR", "lang": "it", "country": "it", "max_results": 20}'
{ "status": "done", "count": 20,
"results": [
{
"name": "…",
"property_id": …,
"price": "…",
"price_value": … } ],
"cost": 0.4 }
# 20 propertys × $0.02 · nothing delivered, nothing charged
Try it
Booking.com stays, running now
Change the input and run it against the live collector — nothing to install, no sign-up.
Run it from your own code, on your own inputs
Same collector, same rows — $2 of free API credit every month, no card.
What a Booking.com scraper API does
A hotel rate is not a property of the hotel, it is a property of the stay. The same room is one price on a Tuesday in November and another on New Year's Eve, so a rate you cannot tie to a date is not a rate at all. Check-in and check-out are required inputs here, every row echoes them back, and the price you receive is the one Booking.com was showing for that stay when the run happened.
Search by address and you get the properties around it. That is what a competitive set is: not "hotels in this city" but "what the places next door are charging for the same night". Pass a street address and it is resolved to coordinates before the search, so you do not have to look up any internal destination id first.
The struck-through price is worth as much as the price. When it is there, the property is discounting, and by how much — which is the difference between reading a market and reading a price list.
Limits, in plain numbers
Everything that bounds one run of this collector. No hidden throttles.
Max per run
100 propertys
Price
$0.02 / property
Per 1,000
$20.00
Failed runs
Free zero rows, zero charge
Free every month
$2 no card
Rate limit
60 req/min on the free tier
What one property looks like
Every delivered property carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.
| Field | Type | What it holds |
|---|---|---|
rank | integer | 1-based position in Booking's order. |
name | string | Property name. |
property_id | integer | Booking's own property id. |
price | string | Nightly price as shown. |
price_value | number | Numeric price for the stay requested, taxes and fees included. |
currency | string | Currency of the price. |
strikethrough_value | number | Price before the discount, when Booking shows one. |
discount_pct | integer | Discount implied by the two prices. |
review_score | number | Guest score out of 10. |
review_word | string | Booking's word for that score. |
review_count | integer | Number of reviews. |
stars | integer | Star class; 0 on apartments and B&Bs that have none. |
room_type | string | The unit Booking recommends for this stay. |
area | string | Neighbourhood as Booking names it. |
distance_m | integer | Metres from the point you searched — how close this competitor actually is. |
distance_text | string | The distance as Booking phrases it. |
free_cancellation | boolean | Booking shows a free-cancellation badge on this offer. |
breakfast_included | boolean | Breakfast is included in this price. |
rooms_left_at_price | integer | Scarcity Booking declares: "we have N left at this price". |
taxes_included | boolean | Whether the price already includes taxes and charges — without it two prices are not comparable. |
sustainability | boolean | Property carries a sustainability certification. |
preferred | boolean | Booking "Preferred" partner. |
quality_class | integer | Booking's own 1-5 quality rating, for properties with no star class. |
latitude | number | Property latitude. |
longitude | number | Property longitude. |
country | string | Country code. |
checkin_from | string | Earliest check-in time. |
checkout_until | string | Latest check-out time. |
photo | string | Main photo URL. |
photos | string[] | Every photo Booking returned for the card. |
check_in_date | string | Echo of the request. |
check_out_date | string | Echo of the request. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
location | string | no | City, area or street address, e.g. "Roma, Italia" or "12 Marine Parade, Napier, New Zealand". Resolved to coordinates first; pass latitude/longitude instead to skip that step. |
latitude | number | no | Alternative to location. |
longitude | number | no | Alternative to location. |
check_in_date | string | yes | YYYY-MM-DD |
check_out_date | string | yes | YYYY-MM-DD (after check-in) |
adults | integer | no | Guests (1-30). |
rooms | integer | no | Rooms (1-10). |
currency | string | no | Price currency (EUR, USD, NZD...). |
country | string | no | ISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool. |
lang | string | no | Interface language (hl), e.g. en, it, de. |
max_results | integer | no | How many properties to deliver at most (1–50). You pay only for delivered properties. |
Pricing
Booking.com scraper API pricing
$0.02 per delivered property. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 100 propertys before you spend anything.
Pay as you go
- $2 free credit / month
- 60 requests / min
- List unit prices
Starter
- $15 free credit / month
- 300 requests / min
- 10% off unit prices
Growth
- $50 free credit / month
- 600 requests / min
- 20% off unit prices
Scale
- $250 free credit / month
- 1,200 requests / min
- 30% off unit prices
Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.
Integration
One POST, typed rows
Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/.
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/booking_stays/run \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"location":"Roma, Italia","check_in_date":"2026-10-16","check_out_date":"2026-10-17","adults":2,"currency":"EUR","lang":"it","country":"it","max_results":20}'
What people build with the Booking.com scraper API
Three shapes of work this endpoint was designed around.
Rate shopping
A property checks its own position against the places around it for the same night, on the dates that actually matter to the week ahead.
Revenue management
Run one address across a rolling calendar of stay dates and the demand curve draws itself: which nights the neighbours priced up, which they discounted.
Discount monitoring
The struck-through price shows who is buying occupancy. Track it over a week and you see the promotion before it shows up in your own numbers.
Market and travel research
Price bands by area and star class, computed from rows you can cite, with coordinates on every one of them.
Scarcity watching
Booking says how many rooms are left at that price. Read it across a comp set and you see who is filling up before the rate moves.
Booking.com scraper API versus rolling your own
The differences that actually cost time when you build this in-house.
| DIY scraper | This collector | |
|---|---|---|
| What you get back | A page to parse yourself | Rows with the price already parsed as a number |
| The stay | Dates are yours to encode | Check-in and check-out are required inputs, echoed on every row |
| Around an address | A city, or an id to look up first | Coordinates resolved from the address for you |
| Discount | Not exposed | Struck-through price and the percentage it implies |
| Distance | Yours to compute from coordinates | Metres from the point you searched, on every row |
| What the price includes | Read the page and guess | Taxes, breakfast and free cancellation as fields |
| Billing | Requests, successful or not | Only delivered properties |
Is there an official Booking.com API?
There is, for partners: the Demand API is for affiliates and connected properties, behind approval and a contract, and it serves the inventory of that relationship. This collector reads what a guest searching Booking.com sees, for any place and any dates, with an API key and nothing to sign.
Do I have to give dates?
Yes, and it is the point. Check-in and check-out are required and validated before the run starts, because a nightly price only exists for a stay. Guests default to two and rooms to one.
Can I search around a specific address?
Yes. Pass the address as location and it is resolved to coordinates first, then the search runs around that point — the properties come back ordered by how close they are. If you already hold coordinates, pass latitude and longitude and the run skips that step.
How much does Booking.com scraping cost here?
$0.02 per delivered property. Runs that come back empty are not billed, and there is $2 of free credit every month, no card.
Do I need to handle the anti-bot myself?
No. That is the part you are buying: residential exits, the fingerprint and the retries are ours, and what you receive is JSON with the fields already typed.
Is the price comparable between properties?
That is what taxes_included is for: it says whether the figure already carries taxes and charges. Two prices where that flag differs are not the same number, and the field is there so you are not comparing them by accident.
How many properties per run?
Up to 100, paginated 20 at a time. When a run stops before the number you asked for, it says so in partial with a note explaining why, instead of quietly returning a short list.
Is there a free Booking.com scraper API?
Every account gets $2 of credit every month with no card, which is about 100 delivered propertys on this endpoint at $0.02 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.
How much does one run cost?
Multiply the rows you actually receive by $0.02. A run capped at 100 propertys — the maximum for this collector — costs $2 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.
Run the Booking.com scraper API now
$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.