Booking Scraper API (Python)
A Python client for pulling hotel rate data off Booking.com search pages, built on the ScrapingBee web scraping API. Give it a destination and a pair of dates, and it returns a list of properties with name, nightly price, review score, and location as JSON. Rendering, residential proxies, and field extraction are handled on ScrapingBee's side.
Booking.com is one of the more defended travel sites, with heavy JavaScript and anti-bot challenges, so a direct request rarely returns usable data. This Booking scraper renders each search in a real browser and routes it through residential proxies, with a one-flag escalation to Stealth mode for pages that sit behind a challenge.
Install
pip install booking-scraper-api
Quickstart
from booking_scraper_api import BookingScraper
scraper = BookingScraper(api_key="YOUR_SCRAPINGBEE_API_KEY")
result = scraper.search(
destination="Rome, Lazio, Italy",
checkin="2026-10-25",
checkout="2026-10-26",
adults=2,
rooms=1,
)
for hotel in result["hotels"]:
print(hotel["name"], hotel["price"], hotel["score"])
New accounts get 1,000 free credits at ScrapingBee, no card needed.
Returned data
search() returns a dictionary with a hotels list, one entry per property card:
{
"hotels": [
{
"name": "Hotel Example Roma",
"price": "€180",
"score": "8.9",
"location": "Trevi, Rome"
}
]
}
The fields map to the CSS selectors from ScrapingBee's data extraction rules; pass your own extract_rules to pull amenities, room types, or photos as well.
Methods and options
search(destination, checkin, checkout, adults=2, rooms=1, offset=0, **options)returns structured hotels for one results page. Booking.com pages in steps of 25, sooffset=25is page two.scrape(url, extract_rules=None, **options)fetches any Booking.com URL, returning HTML or JSON.
Options that override the defaults:
| Option | Default | Purpose |
|---|---|---|
render_js |
True |
Render the page in a headless browser |
premium_proxy |
True |
Route through residential proxies |
stealth_proxy |
False |
Escalate to Stealth mode for anti-bot pages |
country_code |
"us" |
Proxy country |
wait |
5000 |
Milliseconds to wait after load |
When Booking blocks a plain request
If a search returns empty or a challenge page, set stealth_proxy=True. Stealth mode is built for aggressive anti-bot defenses and forces JavaScript rendering:
result = scraper.search("Paris", "2026-11-10", "2026-11-12", stealth_proxy=True)
Credit cost
With residential proxies and JavaScript rendering, each request costs 25 ScrapingBee credits. A Stealth request costs 75. See ScrapingBee pricing for the full table before you scale.
Requirements and scope
Python 3.8 or newer and a ScrapingBee API key. This is an independent wrapper on the public ScrapingBee API, not affiliated with Booking.com, and it targets public search pages only.
Links
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file booking_scraper_api-0.0.1.tar.gz.
File metadata
- Download URL: booking_scraper_api-0.0.1.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f09c827eef46b89bf8429a13678f03d9964424c670986af4235d7a62efc47643
|
|
| MD5 |
344991771824b4e7e10135ba88e2a3dd
|
|
| BLAKE2b-256 |
e34c50e49d63005bc3c9c64cbdf4c42c872a3911f2dd35c13f9af2fdab230e7e
|
File details
Details for the file booking_scraper_api-0.0.1-py3-none-any.whl.
File metadata
- Download URL: booking_scraper_api-0.0.1-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4514ba5a8a4ff46f56abe3db39cf8a3e02b7cfd31de0c44dfa37d0f7eebf201
|
|
| MD5 |
e98890098ebfbab70fc01db1e9888ae4
|
|
| BLAKE2b-256 |
c9be1d066e917448d7e6ea84f6ec6e093b820cc1867a17463d5302709dbba8fc
|