Skip to content

Migrate from SearchApi

The /v1/serp and /api/v1/search endpoints accept SearchApi parameters and return its shapes: switch the base URL and key.

Overview

If you already call SearchApi's google_hotels, google_hotels_property, airbnb or airbnb_property_availability_calendar engines, the compatible endpoints accept the same parameter names and return the same response hierarchy, so your parsing code keeps working. The Google Flights endpoints follow SearchApi's and SerpApi's Google Flights flow (departure_token, booking_token), with their own parameter names. What changes is the host, the key and — for everything except the Airbnb GET alias — the HTTP method: these endpoints take a JSON body.

Why switch

POST/v1/serp/google_hotels_calendar returns a whole forward horizon (up to 330 nights) in one 5-credit call, where a per-date SERP API needs one request per night. Failed requests are free.

Endpoint mapping

SearchApiScraperCompanyCompatibility
GET /api/v1/search?engine=airbnb
Drop-in: same path, query parameters and response. Also available as POST /v1/serp/airbnb with a JSON body.
engine=google_hotels
Same request names (q, check_in_date, check_out_date, filters, next_page_token) and response hierarchy. Filters this source can't honour (brands, rentals only, bounding box, bedrooms, bathrooms) are refused with 422 instead of ignored.
engine=google_hotels_property
Same parameter names and response shape, sent as a JSON body.
No equivalent (one request per date)
SearchApi's parameter style and price fields, for a whole horizon.
engine=airbnb_property_availability_calendar
Field for field (property_id, start_month, start_year, months, airbnb_domain). Optionally adds Airbnb's quoted prices with price_nights.
engine=google_flights
Same filters under mostly the same names (SerpApi style); departure, arrival and departure_date instead of departure_id, arrival_id and outbound_date. See the table below.
SerpApi departure_token follow-up
Return or next multi-city leg for a chosen itinerary.
SerpApi booking_token follow-up
booking_options[] with sellers, prices, fare rules, bag fees and links.
engine=google_flights_location_search
Airports, cities (with their airports) and regions for a name.
engine=google_flights_calendar
Similar data, different parameter names and response.

Switch your client

Airbnb: change the host and key

# Before: https://www.searchapi.io/api/v1/search?engine=airbnb&q=Toronto&api_key=...
curl "https://api.scrapercompany.com/api/v1/search?engine=airbnb&q=Toronto&check_in_date=2026-11-30&check_out_date=2026-12-02&adults=2" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY"

Google Hotels property: same parameters, JSON body

# Before: GET https://www.searchapi.io/api/v1/search?engine=google_hotels_property&property_token=...&check_in_date=...
curl -X POST "https://api.scrapercompany.com/v1/serp/google_hotels_property" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"property_token": "ChUIoben2Mv6-CYaCi9tLzA3czVwbjQQAQ", "check_in_date": "2026-11-30", "check_out_date": "2026-12-01", "adults": 2, "currency": "USD", "gl": "us"}'

Replace per-date loops with the calendar

curl -X POST "https://api.scrapercompany.com/v1/serp/google_hotels_calendar" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"property_token": "ChUIoben2Mv6-CYaCi9tLzA3czVwbjQQAQ", "days": 90, "currency": "USD", "gl": "us"}'

Google Flights: rename a few fields

SearchApi / SerpApiScraperCompany
departure_id, arrival_id
departure / arrival (one IATA airport or city code), or departure_id / arrival_id for lists and /m/ city ids
outbound_date, return_date
departure_date, return_date
type, multi_city_json
Implied by return_date or multi_city
travel_class
cabin_class (economy, premium_economy, business, first)
bags
carry_on_bags, checked_bags
exclude_basic, emissions, exclude_conns
exclude_basic_economy, less_emissions, exclude_connecting_airports
stops
stops as the maximum number of stops (0 nonstop, 1 or 2); omit for any
include_airlines, exclude_airlines, max_price, max_duration, outbound_times, return_times, layover_duration, sort_by
Same names (sort_by as words: top_flights, price, departure_time, arrival_time, duration, emissions)
best_flights / other_flights
itineraries[] with group: best or other
flights[], layovers[], total_duration
legs[].segments[], legs[].layovers[], total_duration_minutes
booking_options[].together
booking_options[]

departure_token and booking_token keep SerpApi's meaning: an itinerary with more legs to choose carries a departure_token for POST/v1/serp/google_flights_return, and a complete one carries a booking_token for POST/v1/serp/google_flights_booking. The full flow is in Price a round trip.

Upgrading an existing ScraperCompany flights integration

booking_token used to hold Google's raw price token on every itinerary. It now appears only on complete itineraries and is what the booking endpoint takes; the raw token is in price_token. If you used booking_token as an itinerary key, switch to price_token.

Differences to know

  • Method. Only the Airbnb engine has a GET query-string alias. The Google Hotels and Google Flights endpoints are POST with a JSON body.
  • Auth. Use the x-api-key header; api_key as a query parameter also works on GET. Unknown body fields are rejected with 422, so drop api_key from JSON bodies, and engine too except on /v1/serp/google_hotels and /v1/serp/airbnb_property_availability_calendar, which accept it as SearchApi sends it.
  • Tokens. property_token is required. If you don't have one, resolve it with POST /v1/search.
  • Prices. extracted_price values are exact floats rather than rounded integers, and are filled in where SearchApi can omit them.
  • Flights. A few parameter and response names differ from SearchApi's and SerpApi's Google Flights engines (table above). Times are airport-local without a UTC offset, as in theirs.
  • Destination search. google_hotels results keep exact float prices and add prices[] where Google attached seller rows. Pages overlap by a few records, so de-duplicate by property_token.
  • Billing. You pay credits per successful call (3 per destination-search page, 3 for property, 5 for a calendar, 8 for Airbnb search or availability calendar, 3 per flight search, return leg or booking options), not per search, and failures are free. See Credits & billing.