One-Way Flight Search API

Search for one-way flights between two airports or metro areas on a specific date.

POST/api/fares/one-way

Request body

ParameterTypeRequiredDescription
originstringYes3-letter IATA airport or metro code for departure (e.g. SFO or LON).
destinationstringYes3-letter IATA airport or metro code for arrival (e.g. JFK or PAR).
departure_datestringYesDeparture date in YYYY-MM-DD format.
adultsintegerNoNumber of passengers age 12 or older. Default: 1. Max total passengers: 9.
childrenintegerNoNumber of child passengers ages 2–11. Default: 0.
infants_in_seatintegerNoNumber of infants with their own seat. Default: 0.
infants_on_lapintegerNoNumber of lap infants. Cannot exceed number of adults. Default: 0.
cabin_classstringNoOne of "economy", "premium_economy", "business", or "first". Default: "economy". Returned itineraries stay in this requested cabin class.
max_stopsintegerNoMaximum number of stops (0, 1, or 2). Omit this field to allow any number of stops.
min_carry_on_bagsintegerNoMinimum carry-on bags included.
min_checked_bagsintegerNoMinimum checked bags included.
max_priceintegerNoStrict maximum price in the market's currency.
departure_time_rangeobjectNoFilter by departure/arrival hour. Fields: earliest_hour, latest_hour, arrival_earliest_hour, arrival_latest_hour (0–23, airport-local time).
airlines_includestring[]NoOnly include flights from these 2-character airline codes. A code cannot also appear in airlines_exclude.
airlines_excludestring[]NoExclude flights from these 2-character airline codes. A code cannot also appear in airlines_include.
allow_self_transferbooleanNoAllow itineraries identified as requiring separate tickets (self-transfer). Setting false is a best-effort filter; same-carrier separate tickets may not be identifiable. Default: true.
marketstringNo2-letter country code for pricing locale (e.g. "US", "GB"). Default: "US".

Send an official metro code directly, for example PAR to LON. The top-level response preserves those requested codes, while each segment identifies the airports used. You do not need to call airport search first.

For departure_time_range, hours are interpreted in local airport time (not UTC): departure fields use the departure airport's local clock, and arrival fields use the arrival airport's local clock.

Example

curl -X POST "https://ignav.com/api/fares/one-way" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"origin":"SFO","destination":"JFK","departure_date":"2026-11-09"}'
Response
{
  "origin": "SFO",
  "destination": "JFK",
  "departure_date": "2026-11-09",
  "observed_at": "2026-01-01T12:00:00Z",
  "cache_hit": false,
  "itineraries": [
    {
      "price": {
        "amount": 299,
        "currency": "USD",
        "status": "verified"
      },
      "outbound": {
        "carrier": "American Airlines",
        "duration_minutes": 330,
        "segments": [
          {
            "marketing_carrier_code": "AA",
            "flight_number": "100",
            "operating_carrier_name": "American Airlines",
            "departure_airport": "SFO",
            "departure_time_local": "2026-11-09T08:00:00",
            "departure_timezone": "America/Los_Angeles",
            "departure_time_utc": "2026-11-09T15:00:00Z",
            "arrival_airport": "JFK",
            "arrival_time_local": "2026-11-09T16:30:00",
            "arrival_timezone": "America/New_York",
            "arrival_time_utc": "2026-11-09T20:30:00Z",
            "duration_minutes": 330,
            "aircraft": "Boeing 777"
          }
        ]
      },
      "cabin_class": "economy",
      "requires_self_transfer": false,
      "ignav_id": "5e4fcd2f1dc340649eb19f6ee2afb57a"
    }
  ]
}

Family in premium economy

Search for 2 adults and 1 child in premium economy from New York to Paris:

curl -X POST "https://ignav.com/api/fares/one-way" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"origin":"JFK","destination":"CDG","departure_date":"2026-11-09","adults":2,"children":1,"cabin_class":"premium_economy"}'

Different market (GBP pricing)

Set market to GB to get prices in British pounds:

curl -X POST "https://ignav.com/api/fares/one-way" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"origin":"LHR","destination":"DXB","departure_date":"2026-11-09","market":"GB"}'

Response fields

observed_at is the UTC time Ignav finished retrieving the search result, or null when unknown. It stays the same when the result is reused. It is not the airline’s quote time or a guarantee that the fare is still available. cache_hit is true when this request reused a cached result. Cache hits are billed normally.

The response contains origin, destination, departure_date, and an itineraries array. Each itinerary includes:

ParameterTypeRequiredDescription
priceobjectYesPrice with amount, currency, and status fields.
outboundobjectYesOutbound leg object with carrier, duration_minutes, and segments.
cabin_classstringYesRequested cabin class for this itinerary.
bagsobjectNoBaggage allowance: carry_on and checked counts.
requires_self_transferbooleanYesBest-effort indication that the itinerary requires separate tickets. False does not guarantee a protected through-ticket, especially for same-carrier connections.
ignav_idstringYesUnique ID for this itinerary. Use it to fetch booking links.

Leg fields

ParameterTypeRequiredDescription
carrierstringNoAirline display name for this leg when available.
duration_minutesintegerNoElapsed leg travel time in minutes, including layovers when present.
segmentsarrayYesArray of flight segments for this leg (see below).

Segment fields

ParameterTypeRequiredDescription
marketing_carrier_codestring | nullYes2-character airline code of the marketing carrier.
flight_numberstring | nullYesFlight number.
operating_carrier_namestring | nullYesName of the operating carrier (may differ from marketing carrier).
departure_airportstringYes3-letter IATA departure airport code.
departure_time_localstringYesLocal departure time in YYYY-MM-DDTHH:MM:SS format.
departure_timezonestring | nullYesIANA timezone name for the departure airport.
departure_time_utcstring | nullYesDeparture timestamp converted to UTC (RFC 3339).
arrival_airportstringYes3-letter IATA arrival airport code.
arrival_time_localstringYesLocal arrival time in YYYY-MM-DDTHH:MM:SS format.
arrival_timezonestring | nullYesIANA timezone name for the arrival airport.
arrival_time_utcstring | nullYesArrival timestamp converted to UTC (RFC 3339).
duration_minutesintegerYesDuration of the segment in minutes.
aircraftstring | nullYesAircraft type (e.g. "Boeing 777").

Ready to get started?

Create a free account to get your API key, or try the playground — no signup required.