Skip to content

Price a hotel's next 90 nights

Resolve a hotel once, then fetch a whole forward rate calendar in a single 5-credit call.

Overview

You get
One row per night with the room rate, taxes, fees and total, for up to 330 nights.
Calls
POST/v1/search once per hotel, then POST/v1/calendar
Cost
1 credit to resolve (once) + 5 credits per calendar, however many nights it returns
Latency
Usually under a second for the calendar

Resolve the property

Search by name and city, check that the best match is the hotel you meant, and store its token. You only do this once per hotel (see Find a property token).

curl -X POST "https://api.scrapercompany.com/v1/search" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Hilton Chicago", "city": "Chicago", "market": "US"}'

Fetch the calendar

Ask for 90 nights starting tomorrow (the defaults), in the market and currency you report in. The market sets Google's country and the default tax basis for that market.

curl -X POST "https://api.scrapercompany.com/v1/calendar" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"token": "ChUIoben2Mv6-CYaCi9tLzA3czVwbjQQAQ", "days": 90, "currency": "USD", "market": "US"}'

Store the rows keyed by (token, stay_date, adults, los). Each row's provenance records the source, observation time and price basis, so you can audit any number later.

Taxes and fees

Every row carries the full split, so you can present whichever basis your users expect:

FieldMeaning
rate_base
Room-only price before tax and mandatory fees.
fees
Mandatory fees (resort fees, destination fees).
tax
Taxes.
rate_total
All-in price including tax and fees.
rate
The market-correct figure: rate_total when rates_include_tax is true, otherwise rate_base.
rate_before_taxes_with_fees
rate_base + fees (SearchApi's basis).

North American and Caribbean markets (US, CA, MX, AG, BZ) quote before tax by default; the European and Australasian markets quote tax-inclusive. GET /v1/markets lists each market's default. If a property advertises the other way, pass rates_include_tax to override. tax_profile summarizes the property's effective tax rate and how confident it is.

Unpriced nights

Nights with no bookable price appear in unpriced_dates, and coverage tells you the share that priced (0–1). Some nights only sell with a two-night minimum; by default the API re-asks for them (probe_min_stay: true) and marks the row with min_length_of_stay, where rate is the per-night figure from that longer stay.

Empty calendars are free

A calendar where no night priced (for example a closed property) is not charged.

Longer horizons

  • days goes up to 330 per call. Use start to begin later than tomorrow.
  • los (1–30) prices longer stays; adults (1–8) changes occupancy.
  • basis: "mainstream" adds the cheapest mainstream-OTA figure per night instead of Google's overall lowest (which can be a discounter). It samples heavier pages and costs 3 extra credits per night.
  • For a whole portfolio, queue calendars as a job instead of a loop.