Itasoftware APImatrix.itasoftware.com ↗
Search ITA Matrix for one-way flight itineraries across multiple origins. Get fares, airlines, times, stops, and connections sorted by price via a single endpoint.
What is the Itasoftware API?
The ITA Matrix Flights API exposes a single search_flights endpoint that queries Google's ITA Matrix for one-way flight itineraries across up to dozens of origin airports simultaneously. Each result returns at least 7 fields per itinerary — including price, airlines, departure and arrival times, total duration, number of stops, and connection airports — all sorted by cheapest fare ascending. It supports multi-origin searches, routing constraints, cabin class filtering, and paginated results up to 500 per page.
curl -X GET 'https://api.parse.bot/scraper/4657c280-b419-4e2b-b4e7-26c6ccf21ed1/search_flights?origins=BEL%2CCNF&departure_date=2027-03-15' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace matrix-itasoftware-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: ITA Matrix flight search — find cheap flights across origins."""
from parse_apis.matrix_itasoftware_com_api import ITAMatrix, InputFormatInvalid
client = ITAMatrix()
# Search for one-way flights from two Brazilian airports to Fortaleza.
try:
flights = client.flights.search(
origins="BEL,CNF",
departure_date="2027-04-12",
destination="FOR",
currency="BRL",
limit=5,
)
except InputFormatInvalid as e:
print("Bad input:", e.message)
raise
# Iterate the cheapest results and print a summary line for each.
for flight in flights:
print(
flight.origin_airport, "→", flight.destination_airport,
flight.departure_time, "|",
", ".join(flight.airlines),
flight.duration, f"({flight.num_stops} stops)",
flight.price,
)
# Drill into the single cheapest option via .first().
cheapest = client.flights.search(
origins="GIG,GRU",
departure_date="2027-04-12",
destination="FOR",
cabin="COACH",
limit=1,
).first()
if cheapest is not None:
print(
"Cheapest:", cheapest.price,
"on", ", ".join(cheapest.flight_numbers),
"arriving", cheapest.arrival_datetime,
)
print("done")
Search ITA Matrix for one-way flight itineraries from one or more origin airports to a destination on a specific date. Returns all matching fare combinations sorted by cheapest price, including price, airlines, departure/arrival times, duration, number of stops, and connection airports. Supports pagination via page and page_size parameters; when omitted, page defaults to 1 and page_size to 25. The upstream search is computation-intensive for large origin lists; very large queries (30+ origins) may occasionally time out on the first attempt and succeed on retry.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for paginated results. |
| cabin | string | Cabin class for the search. |
| originsrequired | string | Comma-separated IATA airport codes for origin airports (e.g. BEL,CNF,GIG). Supports multiple origins in a single search. |
| routing | string | Optional routing constraint — an IATA airport code that connections must route through (e.g. GRU for São Paulo Guarulhos). Omitting returns all available routings. |
| currency | string | Currency code for prices (e.g. BRL, USD, EUR). |
| page_size | integer | Number of results per page. Maximum 500. |
| destination | string | IATA airport code for the destination airport. |
| departure_daterequired | string | Departure date in YYYY-MM-DD format. |
{
"type": "object",
"fields": {
"page": "Current page number.",
"flights": "Array of flight itineraries sorted by price ascending. Each contains price, airlines, origin/destination airports, departure/arrival times, duration, stops, and flight numbers.",
"total_pages": "Total number of pages available.",
"search_params": "Echo of the search parameters used.",
"total_results": "Number of flight results on this page."
},
"sample": {
"data": {
"page": 1,
"flights": [
{
"cabin": "COACH",
"price": "BRL299.00",
"stops": [],
"flights": [
"LA4719"
],
"airlines": [
"LATAM"
],
"duration": "2h 0m",
"num_stops": 0,
"origin_name": "Belem Val de Cans International",
"solution_id": "FJuA7cC4eF3QJeleZQRiBJ002",
"total_price": "BRL298.87",
"arrival_time": "07:50",
"airline_codes": [
"LA"
],
"price_numeric": 299,
"departure_time": "05:50",
"origin_airport": "BEL",
"arrival_datetime": "2027-04-12T07:50-03:00",
"destination_name": "Fortaleza Pinto Martins International",
"duration_minutes": 120,
"departure_datetime": "2027-04-12T05:50-03:00",
"destination_airport": "FOR"
},
{
"cabin": "COACH",
"price": "BRL774.00",
"stops": [],
"flights": [
"AD4097"
],
"airlines": [
"Azul"
],
"duration": "2h 45m",
"num_stops": 0,
"origin_name": "Belo Horizonte Tancredo Neves",
"solution_id": "FJuA7cC4eF3QJeleZQRiBJ005",
"total_price": "BRL773.62",
"arrival_time": "10:45",
"airline_codes": [
"AD"
],
"price_numeric": 774,
"departure_time": "08:00",
"origin_airport": "CNF",
"arrival_datetime": "2027-04-12T10:45-03:00",
"destination_name": "Fortaleza Pinto Martins International",
"duration_minutes": 165,
"departure_datetime": "2027-04-12T08:00-03:00",
"destination_airport": "FOR"
}
],
"total_pages": 1,
"search_params": {
"cabin": "COACH",
"origins": [
"BEL",
"CNF"
],
"routing": null,
"currency": "BRL",
"destination": "FOR",
"departure_date": "2027-04-12"
},
"total_results": 8
},
"status": "success"
}
}About the Itasoftware API
What the API Returns
The search_flights endpoint accepts one or more origin IATA codes as a comma-separated origins parameter alongside a required destination airport code and departure_date in YYYY-MM-DD format. The response includes a flights array where each itinerary contains price (in the requested currency), airline(s) operating the flight, origin and destination airport codes, departure and arrival times, total flight duration, and stop count with connection airport details. Results are sorted price-ascending so the cheapest option appears first.
Filtering and Pagination
You can constrain searches by cabin class (e.g. COACH, BUSINESS), set a routing airport that all connections must pass through (useful for hub-based searches such as forcing connections via GRU), and choose a display currency like BRL, USD, or EUR. Pagination is controlled via page and page_size (maximum 500 results per page); the response echoes back total_results, total_pages, and the full search_params used, making it straightforward to walk through large result sets.
Multi-Origin Coverage
A notable capability is the multi-origin search: you can pass 20 or more IATA codes in a single origins call and get consolidated results across all of them. This is useful for fare comparison across an entire region — for example, all airports in Brazil — against a single destination in one request rather than firing separate queries per origin. The search_params echo in the response includes the full origin list so results can be attributed correctly.
ITA Matrix as a Source
ITA Matrix, built by ITA Software (acquired by Google), is widely regarded as one of the most thorough fare-combination engines available to consumers. It evaluates a broader set of routing and fare combinations than most consumer booking tools. The API surfaces the same itinerary data end-users see on matrix.itasoftware.com, without requiring a browser session.
The Itasoftware API is a managed, monitored endpoint for matrix.itasoftware.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when matrix.itasoftware.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official matrix.itasoftware.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Find the cheapest one-way fare to a hub airport from all regional airports in a country simultaneously using multi-origin
originsinput. - Build a fare-alert system by polling
search_flightson a schedule and comparing thepricefield across runs. - Identify the lowest-cost routing via a specific connecting hub by setting the
routingparameter to a hub airport code. - Compare economy vs. business class pricing by running parallel requests with different
cabinvalues and diffing thepricefields. - Aggregate departure time distributions across airlines on a route using the departure and arrival time fields in the
flightsarray. - Power a travel dashboard showing stop counts and connection airports for all itineraries between a set of origins and one destination.
- Support multi-currency fare display by requesting the same search in BRL, USD, and EUR via the
currencyparameter.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ITA Matrix have an official developer API?+
What exactly does the `flights` array contain for each itinerary?+
flights includes the fare price in the requested currency, the operating airline or airlines, origin and destination IATA codes, departure and arrival times, total journey duration, number of stops, and the connection airport codes for multi-stop itineraries. Results are pre-sorted cheapest-first.Does the API support round-trip or multi-city searches?+
search_flights endpoint covers one-way itineraries only. You can fork this API on Parse and revise it to add a round-trip or multi-city search endpoint.Can I filter results by a specific airline or alliance?+
flights element. You can fork this API on Parse and revise it to add server-side airline filtering.How should I handle large result sets with many origins?+
page_size (up to 500) and paginate through results using the page parameter. The response provides total_pages and total_results so you know exactly how many pages to fetch. The search_params echo confirms which origins were included in each response.