Booking.com API

  • Data from Booking.com

Booking.com API for hotel prices, rooms and reviews

Look a hotel up by name, then read what Booking.com shows a guest: a nightly price calendar, each room type with its rate plans, and the reviews with the property’s replies. Structured JSON, priced per call.

1,000 free credits a month · Failed requests are free · Free during the beta

Endpoints and prices checked against the API on

For many hotels Booking.com is the largest source of OTA bookings, so its price is the one revenue teams watch most closely. Its own APIs are built for partners who sell or supply rooms, not for teams that want to read prices across many hotels. This API returns the public property page as data: you send the hotel’s Booking.com slug and get back prices, rooms and reviews.

Prices on Booking.com depend on where the visitor is. Set country_market and the request is priced as a guest from that country would see it, and the response says which market it was actually collected from. Booking.com returns 61 nights at a time; longer calendars are paged for you inside the same call, so a full year is one request and one charge.

What you get

  • recommended_match — the hotel’s Booking.com slug and country from a name and city search, with a confidence score
  • calendar[] — one entry per night: available, price, currency and minimum length of stay
  • point_of_sale — the visitor market the prices were collected for, and whether it was verified
  • rooms[].rate_plans[] — price per rate plan, with free cancellation, no prepayment and breakfast flags
  • room_size, max_persons, beds — room details, where Booking.com publishes them
  • reviews[] — rating out of 10, title, text, guest country, room type, stay date and the property’s reply
  • provenance — when and how each nightly price was observed

One call, structured JSON

POST /v1/ota/booking — 8 credits per successful call.

curl -X POST "https://api.scrapercompany.com/v1/ota/booking" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "pagename": "moxy-boston-downtown",
    "country": "us",
    "days": 61,
    "currency": "USD"
  }'
Response (trimmed)
{
  "search_parameters": {
    "engine": "booking_calendar",
    "pagename": "moxy-boston-downtown",
    "country": "us",
    "start_date": "2029-02-18",
    "days": 3,
    "currency": "USD",
    "adults": 2,
    "rooms": 1,
    "country_market": "GB"
  },
  "property": {
    "pagename": "moxy-boston-downtown",
    "hotel_id": 5375786
  },
  "point_of_sale": {
    "country_market": "GB",
    "egress_mode": "proxy",
    "egress_market": "GB",
    "egress_market_verified": true
  },
  "calendar": [
    {
      "stay_date": "2029-02-18",
      "available": true,
      "availability": "available",
      "is_soldout": false,
      "price": 453,
      "currency": "USD",
      "min_length_of_stay": 1,
      "provenance": {
        "schema_version": 1,
        "observation_id": "rateobs_0123456789abcdef0123456789abcdef",
        "collection_id": "ratecol_0123456789abcdef0123456789abcdef",
        "observed_at": "2026-08-07T01:23:45.678Z",
        "source": "booking_com",
        "source_kind": "ota_calendar",
        "collector": "scrapingme.ota.booking",
        "source_property_id": "ChUIoben2Mv6-CYaCi9tLzA3czVwbjQQAQ",
        "requested_market": "US",
        "requested_currency": "USD",
        "returned_currency": "USD",
        "egress_mode": "direct",
        "price_basis": "room_base_before_taxes_and_fees",
        "derivation": "normalized_upstream"
      }
    },
    {
      "stay_date": "2029-02-19",
      "available": false,
      "availability": "sold_out",
      "is_soldout": true,
      "price": null,
      "currency": "USD",
      "min_length_of_stay": 1
    }
  ],
  "unavailable_dates": [
    "2029-02-19",
    "2029-02-20"
  ],
  "meta": {
    "source": "booking",
    "collection_id": "ratecol_0123456789abcdef0123456789abcdef",
    "observed_at": "2026-08-07T01:23:45.678Z",
    "calls": 1,
    "wire_bytes": 454,
    "elapsed_s": 2.147,
    "dates": 3,
    "priced": 1
  }
}

Endpoints and price per call

Credits per successful call, and what one call costs on the Starter, Growth, Scale plans. Failed requests cost nothing. See all plans.

EndpointWhat it returnsCreditsStarter · Growth · Scale
Hotel search
POST /v1/ota/booking/search
Booking.com slug for a hotel name and city, with match confidence2 credits$0.0020 · $0.0012 · $0.0008
Price calendar
POST /v1/ota/booking
Nightly prices from a start date, 61 nights by default and up to 365 in one call8 credits$0.0078 · $0.0048 · $0.0032
Rooms and rate plans
POST /v1/ota/booking/rooms
Every room type and rate plan for one stay8 credits$0.0078 · $0.0048 · $0.0032
Reviews
POST /v1/ota/booking/reviews
Guest reviews, up to 25 per page, sorted or filtered by keyword2 credits$0.0020 · $0.0012 · $0.0008
Does Booking.com have a public API?

Not one you can sign up for. Booking.com’s Demand API is for approved affiliate partners, and its Connectivity APIs are for property-management systems and channel managers that supply rooms. Neither is meant for reading prices across hotels you do not manage, which is what this API does.

How do I find a hotel’s Booking.com ID?

Send the hotel name and city to the hotel search endpoint. It returns the slug and country from the hotel’s Booking.com URL (for booking.com/hotel/us/moxy-boston-downtown.html, the slug is moxy-boston-downtown and the country is us), with a confidence score. Store it once and reuse it.

Can I see the prices guests in another country see?

Yes. Booking.com prices by the visitor’s country, so set country_market (for example GB or DE) and the request is collected from that market. The point_of_sale block in the response confirms which market the prices came from.

How many nights does one call return?

Up to 365. Booking.com returns 61 nights per response, so the API pages through longer windows for you inside the same call. It is billed once, at the calendar price, however many nights you ask for; a full year takes longer to answer than 61 nights.

Do failed requests cost credits?

No. A failed or blocked call (any 4xx or 5xx response) costs 0 credits, and so does a search page that comes back empty. You pay only for successful results.

How do I get an API key?

Create an account on the sign-up page. Public sign-up is invite-only during the beta, so join the waitlist there and we will email you when your account is ready. The Free plan includes 1,000 credits a month, and the API is free while it is in beta. You create and rotate keys yourself in the dashboard.

Start with 1,000 free credits a month

Join the waitlist and we will email you when your account is ready: your own API keys, 1,000 free credits a month, and the API is free during the beta.

Sign-up is invite-only during the beta. Privacy

Or read the quickstart →