Scraper API

Booking.com Scraper API

for hotel prices, availability, and reviews

Search Booking.com and get hotel availability as clean JSON. One request returns each property with its room, per-stay price, discount, review score, and cancellation policy, for any destination and dates, with proxies handled for you.

SUCCESS
99.9%

of requests succeed

P50
1.3s

median response

P95
1.6s

95% finish faster

PRICE
$0.75

per 1k hotel searches at volume

Stop maintaining scrapers

Booking.com changes overnight. Your code shouldn't care.

  • A parser per page layout
  • Headless browsers to keep warm
  • Nulls when the markup drifts
  • Retry logic for failed batches
  • Fix the parsers again next week
One integration commit replaces a backlog you’ll never finish.
scraper | git log
hotfix: markup changed, nulls in price
fix: selector drift after redesign
fix: headless Chrome OOM under load
chore: bump browser pool memory
fix: nested JSON path changed again
hotfix: date parser breaks on locales
fix: pagination broke after redesign
chore: re-run failed batch overnight
fix: currency field moved again
fix: retry storm on timeouts
hotfix: markup changed, nulls in price
fix: selector drift after redesign
fix: headless Chrome OOM under load
chore: bump browser pool memory
fix: nested JSON path changed again
hotfix: date parser breaks on locales
fix: pagination broke after redesign
chore: re-run failed batch overnight
fix: currency field moved again
fix: retry storm on timeouts
hotfix: markup changed, nulls in price
fix: selector drift after redesign
fix: headless Chrome OOM under load
chore: bump browser pool memory
fix: nested JSON path changed again
hotfix: date parser breaks on locales
fix: pagination broke after redesign
chore: re-run failed batch overnight
fix: currency field moved again
fix: retry storm on timeouts
hotfix: markup changed, nulls in price
fix: selector drift after redesign
fix: headless Chrome OOM under load
chore: bump browser pool memory
fix: nested JSON path changed again
hotfix: date parser breaks on locales
fix: pagination broke after redesign
chore: re-run failed batch overnight
fix: currency field moved again
fix: retry storm on timeouts
feat: integrate HasData API
Code Examples

One GET Request. That's the whole integration.

Start with just a query. Add more parameters when your use case needs them.

request example
curl -G 'https://api.hasdata.com/scrape/booking/search' \
	--data-urlencode 'keyword=Paris' \
	--data-urlencode 'checkInDate=2026-06-01' \
	--data-urlencode 'checkOutDate=2026-06-05' \
	--data-urlencode 'rooms=1' \
	--data-urlencode 'adults=2' \
	--data-urlencode 'children=0' \
	--header 'x-api-key: <YOUR_API_KEY>' \
	--header 'Content-Type: application/json'
keyword * Search Query
Free-text destination query. Usually a city, region or neighborhood (e.g. `Paris`, `Manhattan, New York`); a specific property name is also accepted.
sort Sort Order
Sort order applied by Booking.com to the results page.
checkInDate * Check-in Date
Check-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`.
checkOutDate * Check-out Date
Check-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`.
rooms * Rooms
Number of rooms to book.
adults * Adults
Number of adult guests across all rooms.
children * Children Count
Number of child guests across all rooms (0–10). Pass `0` if there are no children.
childrenAges Children Ages
Comma-separated list of child ages, one entry per child (each `0`–`17`). Required when `children > 0` and the number of ages must equal `children`. Example: `1,3,7`
price[min] Price Min
Minimum total price for the stay, in the requested `currency`. Must be `>= 10`. Required if `price[max]` is omitted.
price[max] Price Max
Maximum total price for the stay, in the requested `currency`. Must be `>= 20` and greater than `price[min]`. Required if `price[min]` is omitted.
bedrooms Bedrooms
Minimum number of bedrooms in the property.
bathrooms Bathrooms
Minimum number of bathrooms in the property.
propertyType[] Property Type
Filter by property type. Multiple values are combined with OR.
rating[] Star Rating
Filter by official star rating. Multiple values are combined with OR.
reviewScore[] Review Score
Filter by minimum guest review score bucket. Multiple values are combined with OR.
distanceFromCenter[] Distance from Center
Filter by distance from the destination center. Multiple values are combined with OR.
propertyAccessibility[] Property Accessibility
Filter by property-level accessibility features. Multiple values are combined with OR.
meals[] Meals
Filter by available meal plans. Multiple values are combined with OR.
facilities[] Hotel Facilities
Filter by property-level facilities. Multiple values are combined with OR.
roomFacilities[] Room Facilities
Filter by in-room facilities. Multiple values are combined with OR.
roomAccessibility[] Room Accessibility
Filter by in-room accessibility features. Multiple values are combined with OR.
bedPreference[] Bed Preference
Filter by bed configuration. Multiple values are combined with OR.
reservationPolicy[] Reservation Policy
Filter by reservation flexibility. Multiple values are combined with OR.
onlinePayment[] Online Payment
Filter by online payment options.
travelGroup[] Travel Group
Filter by travel-group oriented stay options. Multiple values are combined with OR.
language Language
Language of the Booking.com interface and localized fields in the response.
currency Currency
Currency of the prices returned in the response. Use `hotelCurrency` to keep each property's native currency.
page Page Number
Page number of the search results. Booking.com returns 25 results per page; pass `2` for results 26–50, `3` for 51–75, etc.
TRY ALL 28 PARAMETERS FREE
Response

Every property, one predictable schema

Each result carries the same keys, room, per-stay price, review score, and policies. Map the fields once and forget about it.

results.json
[
  {
    "hotelId": 54332,
    "title": "Alyss Saphir Cambronne Eiffel",
    "url": "https://www.booking.com/hotel/fr/alyss-saphir-cambronne-eiffel.html",
    "room": "Twin Room",
    "beds": 2,
    "bedTypes": ["2 twin beds"],
    "location": {
      "locationTitle": "15th arr., Paris",
      "address": "62 Rue De La Croix Nivert",
      "city": "Paris",
      "latitude": 48.8450976,
      "longitude": 2.2973811,
      "mainDistance": "2.6 miles from downtown"
    },
    "price": {
      "pricePerStayRaw": "$431.40",
      "pricePerStayParsed": 431.4,
      "priceBeforeDiscountParsed": 468.92,
      "currency": "USD"
    },
    "rating": 3,
    "reviews": { "score": 8, "count": 1758, "text": "Very Good" },
    "policies": { "freeCancellation": false, "noPrepayment": false }
  }
]
Fields in results
hotelId / title / url number / string

Booking.com ID, property name, and page

room / beds / bedTypes string / number / string[]

Offered room, bed count, and bed layout

location object

Address, city, coordinates, distance to center

price.pricePerStayParsed number

Total stay price as a number

price.priceBeforeDiscountParsed number

Pre-discount price when there's an offer

reviews.score / count / text number / string

Review score out of 10, count, and its label

policies object

freeCancellation, noPrepayment, and more

What We Offer

An all-in-one scraping service

Every feature you need to collect data from thousands to millions of requests.

Loved by developers

Teams that deleted their scraper

Now it's the part of the pipeline they don't think about

4.8 ★★★★★
across 100+ reviews on 5 platforms
Trustpilot Trustpilot ★★★★★

HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.

Denver Sinclair
Denver Sinclair
Capterra Capterra ★★★★★

We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.

JN
Jacob N.
Trustpilot Trustpilot ★★★★★

Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.

Arnold Foster
Arnold Foster
Trustpilot Trustpilot ★★★★★

I needed to scrape some information they didn't already support, and they wrote the code for me right away, which was super nice of them.

Hussein Ali
Hussein Ali
Clutch Clutch ★★★★★

We were particularly impressed with how easily we could integrate HasData into our existing workflow.

TB
Taras Bazyshyn
CEO at BAZTDL Sp. z o.o
Pricing

Plans that get cheaper at scale

Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.

Free
$0 /mo
One-time free trial
100 hotel searches to start
1 concurrent request
Team seats
Community support
Start free
Startup
$41 /mo
$2.04 / 1k hotel searches
20K hotel searches / month
15 concurrent requests
Team seats
Email support
Get started
Business
Recommended
$83 /mo
$0.82 / 1k hotel searches
100K hotel searches / month
30 concurrent requests
Team seats
Priority email support
Get started
Enterprise
$208 /mo
$0.69 / 1k hotel searches
50 concurrent requests
Team seats
Dedicated account manager
Get started
Monthly hotel search volume
Free 100K 500K 2M 6M 10M
Best fit
Business
hotel searches / mo
100K
Concurrency
30
$ / 1k hotel searches
$0.82
$83 /mo
Get Started

Start with 100 free hotel searches. No credit card required.

FAQ

Questions, answered

1 Grab your API key 2 Send a GET request 3 Get structured JSON

Your first hotel search
is minutes away

100 hotel searches free · no credit card