Use case

Proxies for Booking.com: Reading the Price a Local Guest Actually Sees

Proxies for Booking.com: why the site prices by the visitor's IP country (Country Rates, Genius, mobile rates), how it blocks scrapers, which proxy type fits, and honest setup.

HProxy Team··13 min read
HProxy.Use case

Free proxies won't hold up here.

Shared datacenter IPs get flagged and dropped fast. When it has to hold, gaming, streaming, accounts, you need mobile and residential IPs that read as a real device, from $0.44/GB, pay as you go.

See plans & pricing

Booking.com is the largest hotel booking site on earth, and it decides what price to show you before you have typed a single letter. The currency comes from your IP address. Some discounts only exist for visitors whose IP sits in a country the hotel chose to target. Others only appear once you log in, or only on the mobile app. Proxies for Booking.com exist because of that design: to read the price a guest in Madrid or Bangkok actually sees, the request has to leave from an IP in Madrid or Bangkok, and to read thousands of those prices on a schedule, the requests have to look like thousands of separate guests instead of one machine.

We run a proxy network, so we see both ends of this job: what people buy to collect Booking.com data (hotel rate monitoring for a revenue team, market research for an investor, price tracking for a deal site, a rate-shopping product that sells to hotels) and what comes back as a support ticket once a setup starts eating challenges. This page is the practical version for Booking.com specifically. The sector-wide background lives in travel fare aggregation, the sibling sites in proxies for Expedia and proxies for Airbnb, and the hotel-side buyer's guide in proxies for hotel rate monitoring. One note on naming: our older post on proxies for booking is about reservation systems (restaurant tables, campsites, appointments), not this site.

What proxies are best for Booking.com?

Rotating residential proxies pinned to the country whose prices you want, because Booking.com localizes currency and several discount layers by the visitor's IP country, and because its bot management challenges datacenter ranges long before it challenges a home connection. Hold a sticky residential or ISP exit for any stateful flow (a logged-in Genius account, a walk through the booking funnel to the final price). Datacenter is only for light, occasional checks, and mobile is the rare last resort.

Three price layers, and only one of them is about the hotel

Most scraping guides treat the Booking.com price as one number that varies by date. It is closer to a stack, and the stack is the reason proxies matter here more than on an ordinary retail site.

The first layer is currency. Booking.com picks the display currency from the client IP's geographical location (ScrapFly, how to scrape Booking.com). You can override it with the selected_currency parameter, and the response sets cookies that keep that currency on later pages, but the default a real guest sees is decided by where their connection sits.

The second layer is the one almost nobody outside the hotel industry knows about. Booking.com sells its hotel partners a product called Country Rates: targeted discounts aimed at guests from chosen markets. In Booking.com's own partner documentation, country rates are only visible to guests using Booking.com from an IP address matching the country the hotel is targeting (Booking.com for Partners, Country Rates; the wording is quoted in Hotel Link's guide to the feature). The discount stacks on top of the hotel's other promotions and on Genius. A hotel in Lisbon can quietly offer German guests 10 percent off for the whole year, and a scraper reading Lisbon prices from a Dutch datacenter will never see it. The number it collects is real, but it is not the number a German guest is shown.

The third layer is about identity rather than place. Genius member prices appear once you are logged in, and Mobile Rates are shown to guests on the mobile app or mobile site. Neither depends on the exit country, but both depend on session state, which decides whether you can rotate freely or have to hold one IP for a while.

Why a single office IP misreads Booking.com
  1. Base rate

    set by the hotel

  2. Country Rate

    IP country must match

  3. Genius price

    logged-in members

  4. Mobile Rate

    app or mobile site

  5. Price shown

    differs by guest

Source: Booking.com partner documentation for Country Rates, Genius and Mobile Rates

For a hotel watching its competitors, this stack is the whole problem: your own office IP shows you one version of the market, and the version your guests see may carry a discount you cannot detect from where you sit. That is why rate-shopping products shop from residential exits in the guest's country, and why we wrote the hotel-side version of this page separately.

Why the data matters: scale, and a market that just changed

Booking.com reports more than 28 million accommodation listings, including over 6.6 million homes, apartments and other unique places to stay, available in 43 languages (Booking.com, about). It is part of Booking Holdings, alongside Agoda, Kayak and Priceline. For most of the world it is the reference price for a hotel room, which is why hotels, aggregators and analysts all read it.

Two things made reading it more valuable recently. The European Commission designated Booking a gatekeeper under the Digital Markets Act on 13 May 2024, with obligations applying from 14 November 2024 (European Commission), and Booking removed its parity clauses for properties in the European Economic Area from 2 December 2024 (Tourism Review). Those clauses used to stop hotels from selling cheaper on their own sites than on Booking.com. With them gone, the gap between a hotel's direct price and its Booking.com price is a live number that changes daily, and both sides want to measure it.

The other change is legal, and it cuts the other way. Ryanair sued Booking.com over scraping of Ryanair's own site. A Delaware jury found in July 2024 that Booking.com had violated the Computer Fraud and Abuse Act, with damages of exactly $5,000, the statute's minimum threshold. In January 2025 the judge granted Booking.com judgment as a matter of law, ruling that Ryanair had not proven $5,000 of loss under the statute (Technology & Marketing Law Blog). Ryanair appealed, then dropped it when the two companies signed a partnership agreement on 26 August 2025 that put Ryanair flights on Booking.com, Kayak, Priceline and Agoda (Booking Holdings). The lesson for anyone scraping Booking.com is not that scraping is safe. It is that the largest travel company in the world spent five years in court over it, and that proxies change nothing about the legal question.

Booking.com, 2024 to 2025: the market moved and the lawsuit ended
  1. 2024-05-13

    Designated a DMA gatekeeper

    European Commission

  2. 2024-07-19

    Jury finds CFAA violation in Ryanair v. Booking

    $5,000, the statutory minimum

  3. 2024-12-02

    Parity clauses removed for EEA properties

    hotels may price lower elsewhere

  4. 2025-01-22

    Verdict overturned on the $5,000 loss threshold

    judgment as a matter of law

  5. 2025-08-26

    Ryanair and Booking Holdings sign a partnership

    appeal ends

Source: European Commission, Technology & Marketing Law Blog, Tourism Review, Booking Holdings press release

How Booking.com blocks you

At small volume, Booking.com serves plain HTML with the property cards in it, and a careful script with a normal browser header set reads it fine. At scale, ScrapFly's own guide puts it plainly: Booking will start to either block you or serve captchas, which hinders or completely disables the scraper (ScrapFly). Scraping-tool vendors report both Akamai and HUMAN (formerly PerimeterX) signatures on Booking.com pages (Automatio), which means the checks run at the edge on the TLS handshake and header order before your request reaches a page, not only on the IP.

Three behaviours draw the challenge fastest. Datacenter IP ranges, which commercial bot management distrusts by default. A request rhythm that looks like a monitor (the same city, every hour, on the clock). And a client that throws away the cookies Booking.com hands it, because a real guest carries a session across pages and a scraper that starts fresh every request does not. The GraphQL endpoint that powers the search page, booking.com/dml/graphql, expects the same session cookies and headers the page itself sends; call it bare and it fails.

Which proxy type fits: residential, datacenter, ISP, or mobile

Datacenter proxies are cheap and fast, and on Booking.com they are the first thing challenged. Keep them for a handful of manual checks or for testing your parser, never for a scheduled run. They also fail the Country Rate test: a datacenter IP in Germany is still a datacenter IP, and it is not the connection a German guest books from.

Rotating residential proxies are real home connections drawn from a pool, a fresh IP per request or per short sticky window, pinned to a country. They pass the reputation checks that turn datacenter away, and they are the only exit that reads Country Rates the way the targeted guest does. This is the workhorse for Booking.com search and hotel pages (background in what is a residential proxy). Metered by the gigabyte, and Booking.com pages are heavy, so trim what you download.

ISP proxies are static residential IPs on datacenter hardware: one address that does not change, registered to a consumer ISP. That is what a logged-in Genius account or a walk through the booking funnel needs, because a session that hops countries mid-flow gets dropped or flagged.

Mobile proxies are carrier IPs shared by many handsets. Booking.com sells Mobile Rates, so a mobile exit plus a mobile user agent is the honest way to read those, but most collection jobs never need the tier.

Booking.com jobProxy typeWhy
Search and hotel pages across dates and citiesRotating residential, country-pinnedReads Country Rates and currency as a local guest; survives per-IP limits
Competitor rate shopping for a hotelRotating residential in each source marketThe guest's country decides the price shown
Genius member pricesSticky residential or ISPLogged-in session must hold on one IP
Booking funnel to the final priceISP (static residential)Stateful flow, session and cookies persist
Mobile RatesMobile, with a mobile user agentDiscounts shown to mobile devices only
Parser testing, one-off checksDatacenter or free listCheapest where nothing is at stake

Free versus paid for Booking.com

A free proxy from a public list will open one Booking.com search page from another country, sometimes, and that is a useful thing when all you want is to see whether a price differs in Spain. Our free proxy list refreshes every few minutes across 100+ countries, and the free proxy checker confirms an IP is alive and exiting where it claims before you waste a request. What free cannot do is sustain a schedule: the working pool is overwhelmingly datacenter space, the addresses die within minutes, and Booking.com challenges shared datacenter IPs on sight. We measured exactly how far a batch of free proxies gets against Booking.com in free proxies for Booking.com. For anything that runs more than once, paid residential is the floor, and ours starts at $0.44/GB pay-as-you-go with no KYC, so a test run costs cents.

Setting it up

Start with the URL, because Booking.com puts most of the search state in it: ss (the destination), checkin and checkout, group_adults, no_rooms, group_children. Add selected_currency if you want to force a currency rather than inherit the exit's. Fetch the page once through your proxy, keep the cookies it sets, and reuse them for the rest of that session, because that is what a browser does and what the GraphQL endpoint expects.

Match the exit country to the question you are asking. If you want the price a Brazilian guest sees for a hotel in Rome, exit from Brazil, not Italy. Country Rates follow the guest's IP, so the exit country is the guest's country, and reading the same hotel from three markets means three runs, not one run with a currency switch.

Decide rotation by state. Search and hotel pages are stateless: rotate a fresh residential IP per request so no address builds up a monitor's signature. Genius prices and funnel walks are stateful: pin one exit for the minutes the flow takes (we explain the split in rotating vs static residential proxies). Mixing the two on one pool is the most common setup mistake we see, because a rotating pool logs you out of Genius on the second page.

Prefer HTTP requests over a browser where the page allows it. The property cards are in the HTML, and pagination runs through the GraphQL call ScrapFly documents, so a well-formed request client with realistic headers, cookies and TLS is lighter and less detectable than a headless browser. When you do need a browser, Playwright or Puppeteer behind a residential exit is the setup that holds.

How many IPs, and how fast

Booking.com grids grow faster than people expect. Ten cities, 60 check-in dates and three lengths of stay is 1,800 search pages per refresh, and each search page can lead to 20 or more hotel pages. Size from that request count and the rate a single IP tolerates, not from the number of hotels.

Sizing (rotating residential, one refresh cycle):
  search pages   = cities x check-in dates x lengths of stay
                 = 10 x 60 x 3 = 1,800
  hotel pages    = search pages x hotels opened per page
                 = 1,800 x 20 = 36,000
  requests/cycle = ~37,800 before retries

Throughput is the pool's job, not one IP's:
  spread 37,800 requests across many residential exits,
  keep each exit under the rate that draws a challenge,
  and buy bandwidth for the pages (they are heavy: trim images and scripts).

On a pay-as-you-go plan you are buying gigabytes, so the number that matters is page weight times requests. Request only the HTML, skip assets, and cache hotel pages that do not change between cycles. Our pricing has no monthly minimum and the balance does not expire, so a weekly refresh costs the same per page as a daily one.

Staying unblocked on Booking.com

  • Exit from the guest's country, on a home connection. It is both the accuracy rule and the reputation rule, and it is the single change that fixes most Booking.com setups.
  • Carry the session. Keep the cookies from the first response for the rest of that run. A client that discards them looks like nothing a browser ever does.
  • Match the TLS and header profile to a real browser. Edge bot management fingerprints the handshake before it reads the IP (see TLS fingerprint). A clean residential IP with a Python default handshake still stands out.
  • Pace and jitter. No guest opens 30 hotels a minute. Randomize the gaps and spread the schedule; the general checklist is in avoiding IP bans while scraping.
  • Watch the challenge rate, not just the error rate. A 200 response can still be a challenge page. Check for the property cards in the body and count a miss when they are absent, or you will run for a week collecting empty pages.
  • Use the sanctioned route where it exists. Booking.com's Demand API is available to affiliate partners who send it bookings. It is not a public price feed, but if you qualify it removes the whole problem for the data it covers.

The limits worth knowing

A proxy solves geography and reputation. It makes your request arrive from the country whose price you want, on the kind of connection a guest uses, and it spreads a schedule across enough addresses that no single one looks like a monitor. It does not fix a client that discards cookies, a handshake that announces a script, or a schedule that runs on the clock. It does not make the terms of service go away, and it does not change what a court would say about your particular use. Anyone selling Booking.com proxies that "cannot be detected" is selling a story.

What good proxies give you is a fair, unflagged read of the market as guests see it, in every country you care about. For learning and one-off checks, start free: our free proxy list and proxy checker cost nothing. When the job runs on a schedule, rotating residential at $0.44/GB pay-as-you-go, pinned to the guest's country, is what holds against Booking.com, with a static ISP exit for the logged-in and funnel work.

Sources

Frequently asked questions

What kind of proxy is best for Booking.com?
Rotating residential proxies pinned to the country whose prices you want, because Booking.com sets currency and several discount layers by the visitor's IP country, and its bot management flags datacenter ranges quickly. Use a sticky residential or ISP exit for any flow that has to hold a session, such as a logged-in Genius account or a walk through the booking funnel. Datacenter proxies only survive light, occasional checks. Mobile is rarely needed.
Why does Booking.com show different prices in different countries?
Three layers stack. Booking.com chooses the display currency from the client IP's location. Hotels can set Country Rates, targeted discounts that Booking.com's partner documentation says are only visible to guests browsing from an IP address in the targeted country. And Genius member prices and Mobile Rates depend on login state and device, not location. A request from the wrong country therefore misses discounts a local guest sees and can show a different currency on top.
Is scraping Booking.com legal?
It runs against Booking.com's terms of service, and the public data on scraping law is mixed. Ryanair sued Booking.com over scraping of Ryanair's own site: a Delaware jury found for Ryanair under the Computer Fraud and Abuse Act in July 2024, the judge overturned that verdict in January 2025 because Ryanair had not proven the statute's $5,000 loss threshold, and the appeal ended when the two companies signed a partnership in August 2025. Nothing about a proxy changes your legal position; talk to a lawyer for your case.
Do I need a headless browser to scrape Booking.com?
Not for most search and hotel pages. Server-rendered HTML carries the property cards, and the search page loads more results through a GraphQL endpoint at booking.com/dml/graphql that you can call directly with the right headers and cookies. A browser (Playwright or Puppeteer) is only worth its cost when you need the full funnel or a page that refuses to render without JavaScript. Fewer moving parts means fewer bot signals.
How many proxies do I need to scrape Booking.com?
Size it from request rate, not from how many hotels you track. A hotel-and-dates grid grows fast: one city, 60 check-in dates and three lengths of stay is 180 search pages per refresh before you open a single hotel page. Find the rate at which one IP starts drawing challenges, stay under it, and add IPs to raise total throughput. Rotating residential does the counting for you because every request pulls from a large pool and you pay per gigabyte instead of per address.

Proxies that don't die mid-job

Residential, ISP, datacenter and mobile, verified by the same engine that runs tens of millions of checks. They read as a real device and hold up under load. Pay as you go, and your balance never expires. $0.44/GB is the 2,000 GB+ rate; a single gigabyte is $0.50/GB, with no minimum order.

129M+ proxy checks run · 100+ countries · HTTP / HTTPS / SOCKS · re-checked every few minutes · no signup