Google Flights search
Every itinerary Google Flights offers, with per-segment detail.
/v1/serp/google_flightsOne request (~0.3 s for a typical one-way): Google's best and other flights, flight numbers, operating carrier, aircraft, legroom, amenities, layovers, emissions, bags included, price insights and a Google Flights link per itinerary. Round trips and multi-city return the first leg's options with a departure_token for /v1/serp/google_flights_return; complete itineraries carry a booking_token for /v1/serp/google_flights_booking.
Request
https://api.scrapercompany.com/v1/serp/google_flightsAuthenticate with your API key in the x-api-key header (see Authentication).
Body
JSON object. Unknown fields are rejected with 422.
- departurestringrequiredmin length 3, max length 3
IATA airport code (
JFK) or IATA city code (NYC,LON,PAR,TYO...: every airport of that city). For several airports or a Google city id usedeparture_id. - arrivalstringrequiredmin length 3, max length 3
IATA airport code (
JFK) or IATA city code (NYC,LON,PAR,TYO...: every airport of that city). For several airports or a Google city id usearrival_id. - departure_datestring (date)required
Outbound flight date,
YYYY-MM-DD. - return_datestring (date) | null
Return flight date for round-trip. Omit for one-way.
- departure_idstring | nullmin length 3, max length 200
SerpApi's
departure_id: overridesdeparturewith comma-separated IATA airport/city codes and/or Google city ids (/m/02_286), up to 7.departureis then only the label echoed back. - arrival_idstring | nullmin length 3, max length 200
SerpApi's
arrival_id: overridesarrivalthe same way, e.g. a city id from/v1/serp/google_flights_location_search. - multi_cityarray of object | nullmin items 1, max items 4
Makes the trip multi-city: the legs after the first (
departure->arrivalondeparture_date), 1-4 of them, in date order. The response lists options for the first leg; followdeparture_tokenfor each next leg. Not combinable withreturn_date.Show 4 child fieldsHide child fields
- multi_city[].departurestringrequiredmin length 3, max length 80
IATA airport code (
JFK), IATA city code (NYC,LON,PAR: every airport of the city), a Google city id from/v1/serp/google_flights_location_search(/m/02_286), or up to 7 of these comma-separated (JFK,EWR). - multi_city[].arrivalstringrequiredmin length 3, max length 80
IATA airport code (
JFK), IATA city code (NYC,LON,PAR: every airport of the city), a Google city id from/v1/serp/google_flights_location_search(/m/02_286), or up to 7 of these comma-separated (JFK,EWR). - multi_city[].datestring (date)required
Departure date of this leg,
YYYY-MM-DD. - multi_city[].timesstring | nullpattern ^\d{1,2},\d{1,2}(,\d{1,2},\d{1,2})?$
Hour window
from,tofor departure, optionally followed byfrom,tofor arrival (0-23;8,12= leaves 08:00-12:59). SerpApi's format.
- adultsintegerdefault
1min 1, max 9Number of adult passengers (12+ years old).
- childrenintegerdefault
0min 0, max 8Number of children (2-11 years old).
- infants_in_seatintegerdefault
0min 0, max 4Number of infants with seat (under 2 years old).
- infants_on_lapintegerdefault
0min 0, max 4Number of lap infants (under 2 years old); at most one per adult.
- cabin_classstringdefault
economypattern ^(economy|premium_economy|business|first)$Cabin class: economy, premium_economy, business, first.
One of
businesseconomyfirstpremium_economy - currencystringdefault
USDISO 4217 code for the returned prices. Major currencies include AED, AUD, BRL, CAD, CHF, CNY, EUR, GBP, HKD, INR, JPY, KRW, MXN, NZD, SGD, USD; all 39 supported codes are listed in the enum.
39 allowed values
AED, ARS, AUD, BRL, CAD, CHF, CLP, CNY, COP, CZK, DKK, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MXN, MYR, NOK, NZD, PEN, PHP, PLN, QAR, RON, SAR, SEK, SGD, THB, TRY, TWD, USD, VND, ZAR
- hlstringdefault
enLanguage code for results.
- glstringdefault
usMarket/country code (two letters).
251 allowed values
ad, ae, af, ag, ai, al, am, ao, aq, ar, as, at, au, aw, ax, az, ba, bb, bd, be, bf, bg, bh, bi, bj, bl, bm, bn, bo, bq, br, bs, bt, bv, bw, by, bz, ca, cc, cd, cf, cg, ch, ci, ck, cl, cm, cn, co, cr, cu, cv, cw, cx, cy, cz, de, dj, dk, dm, do, dz, ec, ee, eg, eh, er, es, et, fi, fj, fk, fm, fo, fr, ga, gb, gd, ge, gf, gg, gh, gi, gl, gm, gn, gp, gq, gr, gs, gt, gu, gw, gy, hk, hm, hn, hr, ht, hu, id, ie, il, im, in, io, iq, ir, is, it, je, jm, jo, jp, ke, kg, kh, ki, km, kn, kp, kr, kw, ky, kz, la, lb, lc, li, lk, lr, ls, lt, lu, lv, ly, ma, mc, md, me, mf, mg, mh, mk, ml, mm, mn, mo, mp, mq, mr, ms, mt, mu, mv, mw, mx, my, mz, na, nc, ne, nf, ng, ni, nl, no, np, nr, nu, nz, om, pa, pe, pf, pg, ph, pk, pl, pm, pn, pr, ps, pt, pw, py, qa, re, ro, rs, ru, rw, sa, sb, sc, sd, se, sg, sh, si, sj, sk, sl, sm, sn, so, sr, ss, st, sv, sx, sy, sz, tc, td, tf, tg, th, tj, tk, tl, tm, tn, to, tr, tt, tv, tw, tz, ua, ug, uk, um, us, uy, uz, va, vc, ve, vg, vi, vn, vu, wf, ws, xk, ye, yt, za, zm, zw
- stopsinteger | nullmin 0, max 2
Maximum stops filter: 0=nonstop only, 1=max 1 stop, 2=max 2 stops. Omit for any number of stops.
- include_airlinesstring | nullpattern ^[A-Za-z0-9_]{2,13}(,[A-Za-z0-9_]{2,13}){0,19}$
Comma-separated IATA airline codes and/or alliances (
STAR_ALLIANCE,SKYTEAM,ONEWORLD) to keep, e.g.AC,UA. Cannot be combined withexclude_airlines. - exclude_airlinesstring | nullpattern ^[A-Za-z0-9_]{2,13}(,[A-Za-z0-9_]{2,13}){0,19}$
Comma-separated airline codes to drop. Google's rule: an itinerary also sold under a codeshare partner that is not excluded is kept.
- max_priceinteger | nullmin 1, max 1000000
Only itineraries at or below this price, in
currency. - max_durationinteger | nullmin 30, max 5760
Maximum door-to-door travel time per leg, minutes.
- outbound_timesstring | nullpattern ^\d{1,2},\d{1,2}(,\d{1,2},\d{1,2})?$
Hour window
from,tofor departure, optionally followed byfrom,tofor arrival (0-23;8,12= leaves 08:00-12:59). SerpApi's format. First leg. - return_timesstring | nullpattern ^\d{1,2},\d{1,2}(,\d{1,2},\d{1,2})?$
Hour window
from,tofor departure, optionally followed byfrom,tofor arrival (0-23;8,12= leaves 08:00-12:59). SerpApi's format. Return leg; needsreturn_date. - carry_on_bagsintegerdefault
0min 0, max 1Carry-on bags per passenger to include in the price (Google adds the airline's bag fees).
- checked_bagsintegerdefault
0min 0, max 2Checked bags per passenger to include in the price.
- exclude_basic_economybooleandefault
falseHide basic-economy fares (Google's "Economy (exclude Basic)"; offered on US routes).
- less_emissionsbooleandefault
falseOnly flights with lower-than-typical emissions.
- layover_durationstring | nullpattern ^\d{1,4},\d{1,4}$
Layover length window
min,maxin minutes, e.g.60,240. - connecting_airportsstring | nullpattern ^[A-Za-z0-9]{3}(,[A-Za-z0-9]{3}){0,19}$
Only connect through these airports (comma-separated IATA codes).
- exclude_connecting_airportsstring | nullpattern ^[A-Za-z0-9]{3}(,[A-Za-z0-9]{3}){0,19}$
Never connect through these airports.
- sort_bystringdefault
top_flightspattern ^(top_flights|price|departure_time|arrival_time|duration|emissions)$Result order (SerpApi
sort_by1-6 in the same order): top_flights, price, departure_time, arrival_time, duration, emissions. With anything but top_flights Google returns no separate best group.One of
arrival_timedeparture_timedurationemissionspricetop_flights
Example request
curl -X POST "https://api.scrapercompany.com/v1/serp/google_flights" \
-H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"departure": "JFK",
"arrival": "LAX",
"departure_date": "2026-11-30",
"return_date": "2026-12-05",
"adults": 1,
"currency": "USD"
}'Response
200 — Every itinerary for the first leg. Round-trip and multi-city options carry `departure_token`; complete ones (one-way, last leg) carry `booking_token` and `booking_url` instead. Metered responses carry x-credits-charged and x-credits-remaining headers (see credit headers).
{
"departure_airport": "YUL",
"arrival_airport": "CDG",
"departure_date": "2029-03-28",
"currency": "USD",
"adults": 1,
"itineraries": [
{
"legs": [
{
"segments": [
{
"departure_airport": "YUL",
"arrival_airport": "CDG",
"departure_time": "2026-11-04T18:10:00",
"arrival_time": "2026-11-05T07:20:00",
"airline": "Air Canada",
"airline_code": "AC",
"flight_number": "AC 874",
"duration_minutes": 430,
"aircraft": "Airbus A330",
"cabin_class": "economy",
"departure_airport_name": "Montréal-Pierre Elliott Trudeau International Airport",
"arrival_airport_name": "Aéroport de Paris-Charles de Gaulle",
"ticket_also_sold_by": [
"LH 6809",
"SN 9636"
],
"legroom": "31 in",
"legroom_category": "average",
"overnight": true,
"red_eye": false,
"often_delayed_by_over_30_min": false,
"carbon_emissions_kg": 325,
"extensions": [
"Average legroom (31 in)",
"Wi-Fi for a fee"
],
"airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/AC.png"
}
],
"departure_airport": "YUL",
"arrival_airport": "CDG",
"duration_minutes": 430,
"stops": 0,
"layover_airports": [],
"is_direct": true,
"layovers": [],
"airlines": [
"Air Canada"
],
"departure_time": "2026-11-04T18:10:00",
"arrival_time": "2026-11-05T07:20:00"
}
],
"price": 527,
"currency": "USD",
"display_price": "$527",
"carbon_emissions_kg": 325,
"carbon_emissions_comparison": "19% lower than typical",
"trip_type": "round_trip",
"total_stops": 0,
"is_direct": true,
"departure_token": "gf1.eNqFUMkKwjAU_Jd3TiGpVqU3TVuhBO1iIhpyEhe09NJWBfHfTRexxS2BlxneMvNygzPYBMEObJkWSYKqQOpHKo0kQbi8Cr3yn4IsD6w4A12rVMmBOtOGVSW4VQ4mNgcGwQax4Dmg7u5k6hF1x5hqPhr2Qf3w0quU29JdW9-NmCb8WbEReFMnCkFWfWMONtBj5C1db8bdq8dEFMRYzBm3AkHJhAnfC_klj0XkL04iDoW_1kttdBuPHY0OiYbbVKN9iYoM7g_hQ347",
"google_flights_url": "https://www.google.com/travel/flights/search?tfs=CBwQAho_EgoyMDI2LTExLTA0Ih8KA1lVTBIKMjAyNi0xMS0wNBoDQ0RHKgJBQzIDODc0agc...",
"group": "best",
"price_exact": 526.19,
"carbon_emissions": {
"this_flight": 325000,
"typical_for_this_route": 399000,
"difference_percent": -19
},
"total_duration_minutes": 430,
"carry_on_bags_included": 1,
"airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/AC.png"
},
{
"legs": [
{
"segments": [
{
"departure_airport": "YUL",
"arrival_airport": "YYZ",
"departure_time": "2026-11-04T10:10:00",
"arrival_time": "2026-11-04T11:45:00",
"airline": "Air Canada",
"airline_code": "AC",
"flight_number": "AC 407",
"duration_minutes": 95,
"aircraft": "Airbus A321",
"cabin_class": "economy",
"departure_airport_name": "Montréal-Pierre Elliott Trudeau International Airport",
"arrival_airport_name": "Toronto Pearson International Airport",
"ticket_also_sold_by": [],
"legroom": "31 in",
"legroom_category": "average",
"overnight": false,
"red_eye": false,
"often_delayed_by_over_30_min": false,
"carbon_emissions_kg": 71,
"extensions": [
"Average legroom (31 in)",
"Free Wi-Fi"
],
"airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/AC.png"
},
{
"departure_airport": "YYZ",
"arrival_airport": "CDG",
"departure_time": "2026-11-04T21:10:00",
"arrival_time": "2026-11-05T10:20:00",
"airline": "Air Canada",
"airline_code": "AC",
"flight_number": "AC 872",
"duration_minutes": 430,
"aircraft": "Boeing 777",
"cabin_class": "economy",
"departure_airport_name": "Toronto Pearson International Airport",
"arrival_airport_name": "Aéroport de Paris-Charles de Gaulle",
"ticket_also_sold_by": [],
"legroom": "31 in",
"legroom_category": "average",
"overnight": true,
"red_eye": true,
"often_delayed_by_over_30_min": true,
"carbon_emissions_kg": 394,
"extensions": [
"Average legroom (31 in)",
"Wi-Fi for a fee"
],
"airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/AC.png"
}
],
"departure_airport": "YUL",
"arrival_airport": "CDG",
"duration_minutes": 1090,
"stops": 1,
"layover_airports": [
"YYZ"
],
"is_direct": false,
"layovers": [
{
"duration_minutes": 565,
"airport": "YYZ",
"airport_name": "Toronto Pearson International Airport",
"city": "Toronto",
"departure_airport": "YYZ",
"change_of_airport": false,
"overnight": false
}
],
"airlines": [
"Air Canada"
],
"departure_time": "2026-11-04T10:10:00",
"arrival_time": "2026-11-05T10:20:00"
}
],
"price": 535,
"currency": "USD",
"display_price": "$535",
"carbon_emissions_kg": 464,
"carbon_emissions_comparison": "16% higher than typical",
"trip_type": "round_trip",
"total_stops": 1,
"is_direct": false,
"departure_token": "gf1.eNqFUMkKwjAU_Jd3TiGpVqU3TVuhBO1iIhpyEhe09NJWBfHfTRexxS2BlxneMvNygzPYBMEObJkWSYKqQOpHKo0kQbi8Cr3yn4IsD6w4A12rVMmBOtOGVSW4VQ4mNgcGwQax4Dmg7u5k6hF1x5hqPhr2Qf3w0quU29JdW9-NmCb8WbEReFMnCkFWfWMONtBj5C1db8bdq8dEFMRYzBm3AkHJhAnfC_klj0XkL04iDoW_1kttdBuPHY0OiYbbVKN9iYoM7g_hQ347",
"google_flights_url": "https://www.google.com/travel/flights/search?tfs=CBwQAhpgEgoyMDI2LTExLTA0Ih8KA1lVTBIKMjAyNi0xMS0wNBoDWVlaKgJBQzIDNDA3Ih8...",
"group": "other",
"price_exact": 534.12,
"carbon_emissions": {
"this_flight": 464000,
"typical_for_this_route": 399000,
"difference_percent": 16
},
"total_duration_minutes": 1090,
"carry_on_bags_included": 1,
"airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/AC.png"
}
],
"wire_bytes": 330950,
"elapsed_s": 0.942,
"cheapest_price": 527,
"trip_type": "round_trip",
"leg_index": 0,
"legs_total": 2,
"itinerary_count": 69,
"best_count": 3,
"price_insights": {
"lowest_price": 527,
"price_level": "typical",
"typical_price_range": [
475,
530
],
"price_history": [
[
1790568000,
528
],
[
1790654400,
528
]
]
},
"airlines_available": [
{
"code": "ONEWORLD",
"name": "Oneworld",
"type": "alliance"
},
{
"code": "SKYTEAM",
"name": "SkyTeam",
"type": "alliance"
}
],
"google_flights_url": "https://www.google.com/travel/flights/search?tfs=CBwQAhoeEgoyMDI2LTExLTA0agcIARIDWVVMcgcIARIDQ0RHGh4SCjIwMjYtMTEtMTFqBwgBEgNDREdyBwgBEgNZVUxAAUgBcAGCAQsI____________AZgBAQ&hl=en&gl=us&curr=USD",
"source": "rpc",
"return_date": "2029-04-04"
}Response fields
Fields marked required are always present; others appear when they apply.
- departure_airportstringrequired
Echo of the request's
departure. - arrival_airportstringrequired
Echo of the request's
arrival. - departure_datestring (date)required
Date of the leg these options are for.
- return_datestring (date)
Present only for round trips.
- currencystringrequired
The requested currency.
- adultsintegerrequired
- itinerariesarray of objectrequired
Options for the leg being chosen: Google's best flights first, then the others.
Show 22 child fieldsHide child fields
- itineraries[].legsarray of objectrequired
The leg chosen in this call (one entry). Earlier legs are not repeated;
/v1/serp/google_flights_bookingreturns every leg.Show 11 child fieldsHide child fields
- itineraries[].legs[].segmentsarray of objectrequired
Flights in order.
- itineraries[].legs[].departure_airportstringrequired
IATA code.
- itineraries[].legs[].arrival_airportstringrequired
IATA code.
- itineraries[].legs[].departure_timestring
Airport-local wall-clock time as Google shows it, ISO 8601 without a UTC offset, e.g.
2026-11-04T18:10:00. Present only when known. - itineraries[].legs[].arrival_timestring
Airport-local wall-clock time as Google shows it, ISO 8601 without a UTC offset, e.g.
2026-11-04T18:10:00. Present only when known. - itineraries[].legs[].duration_minutesinteger | nullrequired
Door-to-door travel time including layovers, minutes.
- itineraries[].legs[].stopsintegerrequired
- itineraries[].legs[].layover_airportsarray of stringrequired
IATA codes of the connection airports.
- itineraries[].legs[].is_directbooleanrequired
stopsis 0. - itineraries[].legs[].layoversarray of objectrequired
- itineraries[].legs[].airlinesarray of stringrequired
Airline names Google lists for this leg.
- itineraries[].pricenumber | nullrequired
Google's displayed whole amount for the whole trip (every leg, all passengers), in
currency. Google rounds up (527 where the exact fare is 526.19; seeprice_exact). Whenpriced_inis set, the amount is in that currency instead. - itineraries[].currencystringrequired
The requested currency.
- itineraries[].display_pricestring | nullrequired
pricewith its currency symbol, e.g.$527. Null whenpriceis null orpriced_inis set. - itineraries[].booking_tokenstring | nullrequired
Pass to
POST /v1/serp/google_flights_bookingfor sellers, prices and booking links. Set only on complete itineraries (one-way options, and the options of a trip's last leg); null whendeparture_tokenis set. Compatibility: until 2026-09-30 this field held Google's raw price token on every itinerary; that value is nowprice_token. - itineraries[].booking_urlstring | nullrequired
Google Flights booking page for the complete itinerary. Set together with
booking_token. - itineraries[].carbon_emissions_kginteger | nullrequired
CO2e estimate for this itinerary, kilograms (rounded).
carbon_emissionshas the same figure in grams. - itineraries[].carbon_emissions_comparisonstring | nullrequired
e.g.
19% lower than typicalortypical for this route. - itineraries[].trip_typestringrequired
one_way,round_tripormulti_city.One of
one_wayround_tripmulti_city - itineraries[].total_stopsintegerrequired
Stops across
legs. - itineraries[].is_directbooleanrequired
total_stopsis 0. - itineraries[].departure_tokenstring | nullrequired
Pass to
POST /v1/serp/google_flights_returnfor the next leg's options after choosing this one. Set while legs remain to choose (round-trip outbound, multi-city legs before the last); null whenbooking_tokenis set. Self-contained: nothing else is needed with it. - itineraries[].google_flights_urlstring | nullrequired
Google Flights page for this option: the search page with the earlier legs chosen, or the booking page once every leg is chosen.
- itineraries[].groupstringrequired
best(Google's top flights) orother. Every option isotherwhensort_byis nottop_flights.One of
bestother - itineraries[].price_exactnumber | nullrequired
Price with minor units, from Google's price token (526.19 where
priceis 527). Null when the token has no amount or is in another currency. - itineraries[].price_tokenstring | nullrequired
Google's own opaque price token for this option, on every itinerary (returned as
booking_tokenuntil 2026-09-30). Usable as an itinerary key; no endpoint takes it. - itineraries[].priced_instring | nullrequired
Set only when Google priced this option in another currency than requested: that ISO 4217 code.
priceis then in this currency andwarningssays so. - itineraries[].carbon_emissionsobject | nullrequired
Null when Google gives no estimate.
Show 3 child fieldsHide child fields
- itineraries[].carbon_emissions.this_flightintegerrequired
Estimate for this itinerary, grams of CO2e.
- itineraries[].carbon_emissions.typical_for_this_routeinteger | nullrequired
Typical estimate for this route, grams of CO2e.
- itineraries[].carbon_emissions.difference_percentinteger | nullrequired
This itinerary vs typical, percent (negative = lower).
- itineraries[].total_duration_minutesinteger | nullrequired
Sum of the legs' door-to-door durations, minutes; null when one is unknown.
- itineraries[].carry_on_bags_includedinteger | nullrequired
Carry-on bags included in the fare, as Google states it; null when not stated.
- itineraries[].checked_bags_includedinteger | nullrequired
Checked bags included in the fare, as Google states it; null when not stated.
- itineraries[].airline_logostring | nullrequired
Logo URL of the main airline; null when several airlines share the itinerary.
- wire_bytesintegerrequired
Size of Google's response, bytes.
- elapsed_snumberrequired
Time Google took to answer, seconds.
- cheapest_pricenumber | nullrequired
Lowest
priceinitineraries; null when none is priced. - trip_typestringrequired
one_way,round_tripormulti_city.One of
one_wayround_tripmulti_city - leg_indexintegerrequired
Which leg these options are for: 0 = first (outbound), 1 = return or second multi-city leg, and so on.
- legs_totalintegerrequired
Legs in the trip: 1 one-way, 2 round trip, 2-5 multi-city.
- itinerary_countintegerrequired
Number of entries in
itineraries. - best_countintegerrequired
How many
itinerarieshavegroup: best. - price_insightsobject | null
Null when Google gives none (some filtered searches). Omitted when
itinerariesis empty; that answer is not billed.Show 4 child fieldsHide child fields
- price_insights.lowest_pricenumber | nullrequired
Lowest price Google shows for this search, in
currency. - price_insights.price_levelstring | nullrequired
Google's verdict on today's price:
low(below its typical range),typical(inside it) orhigh(above it).One of
lowtypicalhigh - price_insights.typical_price_rangearray of number | nullrequiredmin items 2, max items 2
[low, high]: Google's typical price range for this trip. - price_insights.price_historyarray of array of numberrequired
[[unix_seconds, price], ...]: Google's price history for this trip, about 60 days. Empty when Google gives none.
- airlines_availablearray of objectrequired
Airlines and alliances Google offers as filters for this search; the codes work in
include_airlines.Show 3 child fieldsHide child fields
- airlines_available[].codestringrequired
IATA airline code, or
STAR_ALLIANCE/SKYTEAM/ONEWORLD. - airlines_available[].namestring | nullrequired
- airlines_available[].typestringrequired
One of
allianceairline
- google_flights_urlstringrequired
Google Flights search page for this trip.
- sourcestringrequired
rpcnormally;htmlwhen the results came from Google's server-rendered page fallback, which holds only Google's first screen of results (about 8-10 itineraries).One of
rpchtml - warningsarray of stringrequired
Notices about this answer, e.g. that Google priced some options in another currency (see each itinerary's
priced_in). Empty when none.
Errors
Errors return a JSON body with a detail field. Failed requests are not charged. See Errors for the full list and retry advice.
| Status | Meaning | Retry? |
|---|---|---|
401Unauthorized | Missing or invalid API key. {"detail":"missing or invalid API key"} | No, fix the request |
402Payment Required | Not enough credits for this request. Only returned once credit enforcement is switched on; during the beta metering runs in shadow mode and never blocks. {"detail":"insufficient credits: this request costs 5, 0 available. Credits renew 2026-11-01."} | No, fix the request |
404Not Found | The property, stay, job or record was not found. {"detail":"job not found"} | No, fix the request |
422Unprocessable Content | Request validation failed. {"detail":[{"loc":["body","name"],"msg":"Field required","type":"missing"}]} | No, fix the request |
429Too Many Requests | Too many requests: the key's requests-per-minute limit was exceeded, or (once credit enforcement is on) the plan's concurrent-request limit. No rate-limit or Retry-After headers are sent; back off and retry. {"detail":"rate limit 60/min exceeded"} | Yes, with backoff |
502Bad Gateway | The upstream source failed, blocked the request or returned an unusable answer. Safe to retry later; failed requests are not charged. {"detail":"RuntimeError"} | Yes, with backoff |
Try it
- Export your key:
export SCRAPERCOMPANY_API_KEY=sk_...(no key yet? request access). - Copy the cURL example above and run it in a terminal.
- Or open the interactive playground on api.scrapercompany.com, paste your key and pick this endpoint.