What data fields does Ignav return in its flight price API response?

Updated

Ignav returns a structured JSON object per fare search. The top level echoes your query (origin, destination, departure_date) and holds an itineraries array. Each itinerary carries a price object, an outbound (and, for round-trip, inbound) leg with carrier, duration, and segment-level detail, plus cabin_class, requires_self_transfer, and an ignav_id you pass to the booking-links endpoint. If your app needs price amount, currency, verification status, carrier, timing in both local and UTC, and a booking handle, the response covers all of it.

Top-level fields

The response mirrors the request so you can key results back to the search.

Field Type Meaning
origin string Departure airport code from your request
destination string Arrival airport code from your request
departure_date string Date from your request
itineraries array One entry per returned itinerary

The price object

Each itinerary's price is not a bare number — it carries context you can act on:

  • amount — numeric fare value (e.g. 299)
  • currency — ISO currency code (e.g. USD)
  • status — verification state; the documented example shows "verified"

The status field matters if you build price trackers or alerts: it lets you distinguish a confirmed fare from one that still needs checking before you notify a user.

The outbound leg

The leg object describes the journey, not just the endpoints.

Field Meaning
carrier Marketing airline name (e.g. American Airlines)
duration_minutes Total leg duration
segments Array of flight segments

Segment fields

Each segment is where the granular data lives:

  • marketing_carrier_code — e.g. AA
  • flight_number — e.g. 100
  • operating_carrier_name — who actually flies it
  • departure_airport / arrival_airport
  • departure_time_local, departure_timezone, departure_time_utc
  • arrival_time_local, arrival_timezone, arrival_time_utc
  • duration_minutes
  • aircraft — e.g. Boeing 777

Providing both local and UTC times (with an IANA timezone string) means you can render times in the user's zone without doing your own offset math, and still sort or compare itineraries on a single clock.

Itinerary-level flags and the booking handle

Three fields sit alongside price and outbound:

  • cabin_class — e.g. economy
  • requires_self_transfer — boolean; true when the itinerary involves a self-transfer, which you may want to filter or flag for users
  • ignav_id — a unique identifier for the itinerary

ignav_id is the bridge to the second call in the flow: you pass it to request direct airline and OTA booking URLs. Without it you have prices but no way to complete the "question to booking link" path.

What this means for your app

  • Price trackers / alerts — poll on a schedule, compare price.amount over time, and gate notifications on price.status.
  • Flight search UIs — filter on duration_minutes, carrier, cabin_class, and requires_self_transfer; display segment-level stops from the segments array.
  • AI travel tools — the structured fields (airport codes, ISO dates, UTC timestamps, ignav_id) are directly usable as tool inputs and outputs without parsing free text.

How to see the exact shape

The documented request is a POST to https://ignav.com/api/fares/one-way with an X-Api-Key header and a JSON body such as {"origin":"SFO","destination":"JFK","departure_date":"2026-11-03"}. The response example above is what that call returns. Round-trip and flexible searches (one or two ordered legs, open-jaw) use the same field structure, with the additional leg appearing as inbound. The site states 1,000 free requests with no credit card required, and only successful requests are billed — so you can inspect real responses before committing.