Skip to content

Guide

Hotel rates API benchmark 2026: seven APIs, one hotel, real calls

Published October 7, 2026

Short answer: I sent the same Lisbon search and the same Rome hotel to seven hotel price APIs on 2026-10-07, three runs each. StayAPI, SearchApi and HasData answered a Booking.com destination search in 1.1 to 2.1 seconds and SerpApi's Google Hotels engine in 2.4. Mine, FlightPowers, took 7.9, slower than every API here except an Apify scraper run, which took 75. The bigger finding was the price: the same room came back as $915 or as $1,057 depending on whether the API put Rome's VAT and city tax into the number it called the price.

I run FlightPowers and sell one of the APIs in this test, so read my rows as a vendor measuring himself. Every number below is from a call I made that afternoon, with the raw response kept, and the list of where mine loses is longer than the list of where it wins.

How I tested

Same questions, same dates, every API: check-in 2026-11-20, check-out 2026-11-23 (3 nights), 2 adults, 1 room, prices in USD.

  1. Destination search: Lisbon, sorted by price wherever the API can sort.
  2. One named hotel: Hotel Artemide, Rome. I meant to use Hotel Sant'Angelo, but it was sold out on Booking.com for those dates, so everyone got Artemide.
  3. The same hotel seen from two countries, Germany and the US, wherever the API has an input for it.

Wall time is from the request leaving to the last byte of the answer, from one server in the US, three runs per question, median shown. SerpApi got no_cache=true, because by default it serves an identical search from its cache for an hour and that would flatter the time. All calls ran between 14:00 and 14:17 UTC on free tiers. Makcorps is not in the timings: its sign-up wants a username and password, and I only signed up where Google sign-in was offered. The Booking.com Demand API is not in them either, because it needs a partner contract.

Every call's start time, wall time and status is in the per-call timings file, 63 calls in all.

Speed and results

API (what it reads)Lisbon search, medianrowssorts by pricecheapest row, 3 nightsone named hotel: calls, median
StayAPI (Booking.com)1.1 s, plus 0.8 s once to look up the city ID25no$147.67, tax not stated on the row2 calls (ID lookup, then prices); 2.5 s for the prices call
SearchApi (Booking.com)1.9 s15 to 20yes$51 + $30 taxes listed2 calls for the room list (a search for the URL, then the property); 3.0 s for the property call
HasData (Booking.com)2.1 s25yes$50.97 + $30.07 taxes listed2 calls for the room list (a search for the URL, then the place); 3.2 s for the place call
SerpApi (Google Hotels)2.4 s18yes$78 with taxes ($73 before)1 call by name; 2.5 s
FlightPowers, mine (Booking.com)7.9 s15 to 25no, Booking's popularity order$203 to $257 with taxes, cheapest of the rows it returned1 call by name; 10.2 s
Apify voyager/booking-scraper75 s, including the actor start20asked (sortBy: price), rows came back unsorted$40.52, but that row is one bed in a 10-bed dorm priced for 1 person on a 2-adult search1 run by name; 39 s (one run)
Xotelo (TripAdvisor rates)0.7 s, but the list takes no dates30n/an/a, static price rangesby TripAdvisor key; 0.7 s, per-night rates from 3 sellers

The two cheapest Booking.com rows in Lisbon were the same dorm bunk at Samps Hostel on SearchApi and HasData, $51 before tax and $81 after. SerpApi reads Google Hotels, which is a metasearch across many sellers, so its Lisbon list is a different set of hotels and not a like-for-like row.

SearchApi's and HasData's search also take a hotel name (SearchApi put Hotel Sant'Angelo first when I searched it by name), so a single row price for a named hotel is one call there too; the second call in the table is for the full room list.

One room, three prices

Hotel Artemide, Basic Double Room, 20 to 23 November 2026, 2 adults:

Where the number came frombefore taxtaxthe number you get back
HasData, Booking.com US view$914.6410% VAT $91.46 + city tax $50.65total $1,056.76
StayAPI, country_market=US$914.64$142 listed as not includedtotal_price $914.64
StayAPI, country_market=DE$919.14$142.57 listed as includedtotal_price $1,061.71
SearchApi property callno tax field on the room rows$915
FlightPowers, proxy_country=us, 3 runs$1,057, $1,057, $1,057
FlightPowers, proxy_country=de, 3 runs$1,062, $1,028, $1,028
SerpApi, Booking.com seller row, gl=us, 5 runs$1,050 three times, then $1,034 twice
SerpApi, cheapest of 34 sellers$812$888 (Priceline)

Almost all of the spread between $915 and $1,062 is tax display, not a different rate. Booking.com's US view shows the room before tax and adds VAT and city tax at the end; the German view folds them in. So StayAPI's total_price means "before tax" in one market and "after tax" in the other for the same room. Their docs warn that the market can change tax inclusion, and the tax breakdown says which way it went, so a careful client can fix it, but a dashboard that compares the field across markets will invent a 16% gap that isn't there.

If you are comparing hotel APIs, or comparing countries, compare the tax-inclusive total.

Does the country change the rate?

A little, on this hotel. StayAPI's before-tax figure was $919.14 from Germany and $914.64 from the US, 0.5% apart. Mine, with the tax folded in on both, read $1,028 from Germany on two of three runs and $1,057 from the US on three of three, under 3% apart. That matches what I found when I sampled three hotels from several countries in August: gaps are real but modest, they depend on the property, and one reading per country measures the noise as much as the market (the sampled version).

Which APIs let you ask: mine (proxy_country, a residential exit in that country), StayAPI (country_market, which their docs call "a request value, not verified geography") and SerpApi on Google Hotels (gl). The Booking.com engines at SearchApi and HasData had no country input; both sell a Google Hotels engine with gl separately.

What it costs

Read from each vendor's own pricing page at 14:09 UTC on 2026-10-07.

APIfreeentry planper request at entrylimit at entry
FlightPowers (mine)10 a month, hard cap$10 for 2,000$0.00525 a minute
SearchApi100 requests once$40 for 10,000$0.00420% of plan credits an hour
HasData1,000 credits a month; a Booking.com call is 10 credits, so 100 calls$59 for 200,000 creditsabout $0.003 a Booking.com call5 concurrent requests
SerpApi250 searches a monththeir cheapest plan is $25 for 1,000$0.025200 an hour
StayAPI50 requests once$49 for 1,500$0.033not on the plan card
Makcorps30 free API calls, per their pricing page$350 for 10,000$0.0355 concurrent calls
Apify voyager/booking-scraperApify's free plan credit, $5 a monthpay per hotel row$0.005 a row on the free tier, so about $0.10 for a 20-row searchn/a
Xotelolist and rates free, no keyname search only through RapidAPIn/anot published
Booking.com Demand APInoneManaged Affiliate Partner contractn/an/a

Units differ. A search request on SearchApi, HasData, StayAPI or mine returns a page of hotels; an Apify charge is per hotel row; StayAPI's ID lookup and the URL searches before a named-hotel call are requests of their own.

Where mine loses

  1. Speed. 7.9 s on the search and 10.2 s on a named hotel, against 1.1 to 3.2 s for the four other APIs. Each call loads Booking.com through a residential proxy in a real browser, and that is the cost of it.
  2. No price sort. Results come in Booking's popularity order. Worse, I sent "sort": "price" and the API took it without an error and ignored it. That one is a bug, and it's on my list.
  3. Row count moves. 15, 25 and 15 rows on three identical calls. HasData and StayAPI returned 25 every time and both page.
  4. No tax breakdown. You get one tax-inclusive total. HasData and StayAPI itemise VAT and city tax, which a parity tool needs.
  5. A named hotel returns one room. The full room list is a second endpoint (/v1/hotels/rooms, 8.9 s), and in one of three default runs the by-name call returned a different room than the other two.
  6. The number moves between calls. Without proxy_country, each call can leave from a different country's residential IP: the Basic Double read $935, $1,011 and $1,062 on three calls to the room list. Pinning a country helps but doesn't settle it: proxy_country=us read $1,057 three times out of three, proxy_country=de read $1,062, $1,028 and $1,028.
  7. Per request, two are cheaper. HasData and SearchApi cost less per call at their entry plans. What mine has is the smaller ticket: $10 to start, against $40, $49 and $59.
  8. One source. Mine reads Booking.com only. SerpApi returned 34 sellers for Artemide in one call.

Which one I'd pick, by job

  • Fast Booking.com search at volume: SearchApi or HasData. Both sort, both show the tax on the search rows, both are cheaper per call than mine.
  • One hotel across many sellers: SerpApi's Google Hotels engine.
  • Reviews, photos and property details on top of rates: StayAPI.
  • A hotel by the name a person types, one tax-inclusive total, from a country you choose, for $10: mine. It's also on the same key as live Google Flights fares, if you need both.
  • Free and good enough for a hobby script: Xotelo's rates endpoint, if you can get the TripAdvisor key.
  • Selling the room: the Booking.com Demand API, through a partner contract.

Questions

What is the best hotel price API?

It depends on the job. On these calls: StayAPI was the fastest Booking.com search (1.1 s), SerpApi covered the most sellers (34 for one hotel), HasData and SearchApi were the cheapest per request at entry, and mine had the smallest monthly plan in this test, one tax-inclusive total and a country input, while being slower than every API here except the Apify scraper run, at 7.9 s.

Which Booking.com rates API includes taxes in the price?

HasData returns the before-tax price, the tax lines and a total. StayAPI's total_price includes tax in some markets and not in others, with a breakdown that says which. Mine returns one tax-inclusive total. SearchApi's property rooms came back with no tax field.

How fast is a Booking.com rates API?

1.1 to 3.2 seconds for the fastest four on a search or a named hotel, 7.9 to 10.2 for mine, 39 to 75 for an Apify scraper run.

Is there an official Booking.com rates API?

The Demand API, for Managed Affiliate Partners under contract. More on that in how to get Booking.com API access.

How much does a Booking.com rates API cost per request?

About $0.003 (HasData), $0.004 (SearchApi), $0.005 (mine), $0.033 (StayAPI) and $0.035 (Makcorps) at each entry plan, read on 2026-10-07.

Try it on your own hotels

The BASIC plan is 10 requests a month, free, no card. Run your hardest hotel names through it and compare the total with what Booking.com shows you.

Free tier: 10 requests/month. No card to try.

Docs: the Hotels API and the MCP servers.