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.AAflight_number— e.g.100operating_carrier_name— who actually flies itdeparture_airport/arrival_airportdeparture_time_local,departure_timezone,departure_time_utcarrival_time_local,arrival_timezone,arrival_time_utcduration_minutesaircraft— 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.economyrequires_self_transfer— boolean;truewhen the itinerary involves a self-transfer, which you may want to filter or flag for usersignav_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.amountover time, and gate notifications onprice.status. - Flight search UIs — filter on
duration_minutes,carrier,cabin_class, andrequires_self_transfer; display segment-level stops from thesegmentsarray. - 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.