Skip to content
Scrappa Get API key
Kiwi.com API 1 credit/request

Kiwi.com Flight Search API Documentation

GET https://scrappa.co/api/kiwi/flights/search

Kiwi.com Flight Search API Documentation Search one-way flights, or add a return date for a return trip. Each itinerary has the price, duration, segments with flight number, marketing and operating carrier, cabin and local times, layovers, baggage rules, a booking link and flags for virtual interlining and hidden-city routing. Every filter is applied by Kiwi.com and checked before the answer: dates, stops and price band. A search returns one result set of up to 50 itineraries and has no pages. total_available is the number of itineraries returned, at most 50. An empty list with a price band means no offer within that band.

Kiwi.com Flight Search API Documentation 1 credit/request

Endpoint

Request preview
GET
https://scrappa.co/api/kiwi/flights/search
Auth header
x-api-key
Cost
1 credit/request
origin = example destination = example departure_date = 2026-06-15
Response preview
200 OK
{
    "data": {
        "sort": "quality",
        "cabin": "economy",
        "limit": 25,
        "notice": null,
        "origin": "City:berlin_de",
        "currency": "EUR",
        "trip_type": "one_way",
        "passengers": {
            "adults": 1,
            "infants": 0,
            "children": 0
        },
...

Parameters

Start with the required fields, then add optional filters only when your use case needs them.

Runnable path

3 required parameters needed before sending a request.

14 optional filters available.

origin string Required

Kiwi.com place id from the locations endpoint (City:berlin_de, Station:airport:BER) or an airport code (BER). Example: City:berlin_de.

Example value example
destination string Required

Place id or airport code of the destination. Example: City:london_gb.

Example value example
departure_date string Required

Departure date, YYYY-MM-DD, today or later. Every result departs on this date.

Example value 2026-06-15
return_date string Optional

Return date, YYYY-MM-DD. Leave it out for a one-way search. Every inbound leg departs on this date.

Example value 2026-06-15
adults integer Optional

Adults, 1 to 9. Defaults to 1. Adults, children and infants together are at most 9.

Example value 10
children integer Optional

Children, 0 to 8. Defaults to 0.

Example value 10
infants integer Optional

Infants, 0 to 8. Each infant needs an adult. Defaults to 0.

Example value 10
cabin string Optional

economy, premium_economy, business or first. Defaults to economy.

Example value example
max_stops integer Optional

Maximum stops per leg, 0 to 3. 0 returns direct flights only.

Example value 10
min_price integer Optional

Minimum total price in the chosen currency.

Example value 10
max_price integer Optional

Maximum total price in the chosen currency.

Example value 10
sort string Optional

quality, price or duration. Defaults to quality.

Example value relevance
limit integer Optional

Itineraries to return, 1 to 50. Defaults to 25. A search has no pages.

Example value 10
carriers string Optional

Only these airlines, 2-letter codes, comma separated. Example: LH,AF.

Example value example
exclude_carriers string Optional

Leave out these airlines, 2-letter codes, comma separated.

Example value example
currency string Optional

Price currency, a 3-letter code such as EUR or USD. Defaults to EUR.

Example value USD
locale string Optional

Language of names, such as en or de. Defaults to en.

Example value en-US

Response Schema

Example response fields are illustrative; inspect the JSON before integrating.

Example response fields

Scan these fields before integrating.

data meta success
JSON Response
200 OK
{
    "data": {
        "sort": "quality",
        "cabin": "economy",
        "limit": 25,
        "notice": null,
        "origin": "City:berlin_de",
        "currency": "EUR",
        "trip_type": "one_way",
        "passengers": {
            "adults": 1,
            "infants": 0,
            "children": 0
        },
        "destination": "City:london_gb",
        "itineraries": [
            {
                "id": "ItineraryOneWay:eyJwcm92aWRlcnMiOiJLSVdJIiwicm91...",
                "type": "one_way",
                "price": {
                    "amount": 69,
                    "currency": "EUR",
                    "formatted": "69 \u20ac"
                },
                "stops": 0,
                "arrival": {
                    "city": "London",
                    "airport": "Luton",
                    "country": "United Kingdom",
                    "local_time": "2026-11-19T18:05:00",
                    "airport_code": "LTN",
                    "country_code": "GB"
                },
                "baggage": {
                    "hand_bags_included": 0,
                    "no_checked_baggage": false,
                    "checked_bags_included": 0,
                    "personal_item_included": 1,
                    "checked_bag_tier_prices": [
                        75,
                        150
                    ]
                },
                "carriers": [
                    {
                        "code": "U2",
                        "icao": "EZY",
                        "name": "easyJet"
                    }
                ],
                "duration": 7200,
                "layovers": [],
                "provider": {
                    "code": "KIWI",
                    "name": "Kiwi.com",
                    "content_provider": {
                        "id": "ContentProvider:KIWI",
                        "name": "kiwi.com"
                    }
                },
                "segments": [
                    {
                        "type": "FLIGHT",
                        "arrival": {
                            "city": "London",
                            "airport": "Luton",
                            "country": "United Kingdom",
                            "local_time": "2026-11-19T18:05:00",
                            "airport_code": "LTN",
                            "country_code": "GB"
                        },
                        "carrier": {
                            "code": "U2",
                            "name": "easyJet"
                        },
                        "duration": 7200,
                        "departure": {
                            "city": "Berlin",
                            "airport": "Berlin Brandenburg",
                            "country": "Germany",
                            "local_time": "2026-11-19T17:05:00",
                            "airport_code": "BER",
                            "country_code": "DE"
                        },
                        "cabin_class": "ECONOMY",
                        "flight_number": "U22602",
                        "operating_carrier": {
                            "code": "U2",
                            "name": "easyJet"
                        }
                    }
                ],
                "share_id": "eyJyIjoiVTI6MjYwMjpCRVI6MTc5NTEwNDMwMDpMVE46MTc5...",
                "departure": {
                    "city": "Berlin",
                    "airport": "Berlin Brandenburg",
                    "country": "Germany",
                    "local_time": "2026-11-19T17:05:00",
                    "airport_code": "BER",
                    "country_code": "DE"
                },
                "price_eur": 69,
                "booking_url": "https://www.kiwi.com/en/booking/?direct=true&locale=en&currency=eur&passengers=1-0-0&token=...",
                "travel_hacks": {
                    "hidden_city": false,
                    "virtual_interlining": false
                }
            }
        ],
        "return_date": null,
        "departure_date": "2026-11-19",
        "filters_applied": [],
        "total_available": 2
    },
    "meta": {
        "billable": true,
        "endpoint_family": "flight_search"
    },
    "success": true
}

Errors

Handle these documented responses before retrying or showing customer-facing failures.

422

Validation Error

A parameter is missing or invalid. This response is not billable.

{
    "errors": {
        "adults": [
            "A booking has at most 9 passengers (adults, children and infants together)."
        ]
    },
    "message": "The request validation failed"
}
503

Upstream Unavailable

Kiwi.com did not answer in time. Retry the request. This response is not billable.

{
    "meta": {
        "billable": false,
        "retryable": true,
        "endpoint_family": "flight_search"
    },
    "error": {
        "code": "UPSTREAM_UNAVAILABLE",
        "message": "The Kiwi.com API is temporarily unavailable. Please retry."
    },
    "success": false
}
503

Unexpected Upstream Answer

Kiwi.com answered in a form this API does not read. This response is not billable.

{
    "meta": {
        "billable": false,
        "retryable": false,
        "endpoint_family": "flight_search"
    },
    "error": {
        "code": "PARSER_DRIFT",
        "message": "Kiwi.com rejected the request. Check the parameters and try again."
    },
    "success": false
}

Generate Code with AI

Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.

Try It Live

Test this endpoint in our interactive playground with real data.