Over the years, I’ve lost track of the number of hours I’ve spent playing around with ITA Matrix, a very powerful piece of software originally created by MIT scientists in the 1990s and now owned by Google.
ITA Matrix feels like Google Flights on steroids, as though it was developed specifically for aviation geeks like ourselves who go to great lengths to guarantee an aircraft type, book the absolutely tightest connection, or earn the most qualifying miles for our dollars.
Despite its power, ITA Matrix is not necessarily known for being the most user-friendly. So while we’ve mentioned it in passing a few times before, it’s now time to dig a little deeper into the inner workings of one of the most powerful flight-search tools out there.
This installment is Part 1 of a two-part series on ITA Matrix’s full suite of features. We’ll cover the basics of ITA Matrix, with some of the more common filters and specifications, in this article. We’ll save the second installment for the more advanced maneuvers.
In This Post
- Basic Search Options
- Advanced Controls
- Putting It All Together
- How to Book Itineraries Found on ITA Matrix
Basic Search Options
ITA Matrix is accessible at the website matrix.itasoftware.com, and the search engine is available directly on the home page. The old interface has been replaced by a modern one, while the core functions remain the same.
To start, we have options for round-trip, one-way, or multi-city flights at the tabs on the top of the “Find your flight” box.
We’ll focus on one-way flights for most of this guide, as round-trips follow essentially the same process with the opposite direction included, while multi-city searches will be saved for Part 2.
Origin & Destination
We begin by inputting our origin and destination airports. ITA Matrix allows you to input either the airport code or the city name, where the city name encompasses all airports within the city.
For example, “Toronto, ON, Canada – All airports” would include Toronto Pearson (YYZ), as well as Toronto Billy Bishop (YTZ).
I recommend sticking with airport codes rather than city codes for maximum precision, especially as things get more advanced later on.
The first noteworthy feature is ITA Matrix’s “Nearby” feature, which identifies nearby airports to the one you’ve selected that can allow you to save money on airfare. After all, for the budget-conscious traveller, a short bus or train ride can prove to be a worthy endeavour if it allows you to save a few hundred bucks on your flights.
After inputting “YYZ” for Toronto, click on the “YYZ” button to bring up the “Advanced Airport Search.” This search allows you to specify the distance you’re willing to travel away from your origin airport.
You can either pick them individually or simply “Select all”, and the field will automatically populate with the corresponding airport codes.
The same goes for the “Destination” field, where you can choose to fly to any airport within a certain distance from the one you prefer.
This is particularly useful for Europe, since airfares can vary significantly between neighbouring countries: for example, flying into Munich instead of Salzburg (a mere 68 miles away) can often be significantly cheaper.
Next, we have the dates. You can choose between “Search exact date” or “See calendar of lowest fares”.
The former option allows you to specify exact dates, but also lets you expand that selection to the day before, the day after, +/- 1 day, or +/- 2 days. To enable this, you’ll have to click on “Add Advanced Controls” to bring up the drop-down menus (similar to how ExpertFlyer’s flexible date selection works).
You can also filter for the preferred time of day for your departing flight.
With the calendar, you’ll be looking one month at a time, so you’ll begin by selecting the first date of your desired month-long period. ITA Matrix will return an entire month’s worth of airfare results in the form of the calendar over this month-long period.
If you’re booking a round-trip, then you’ll also choose the length of your stay in terms of the number of nights (either a fixed number or a range); ITA Matrix will then search for the cheapest fares across the entire range of possibilities for outbound and departure dates.
Then, you can also specify the number of passengers, class of service, and how many stops you’d like on your journey.
The “Stops” setting allows you to set an absolute limit on the number of connections, whereas the “Extra stops” allow you to specify how many stops beyond the minimum possible number of stops that you’d be comfortable with.
Finally, you can toggle whether you’d like to allow airport changes on the way (such as flying into LaGuardia and out of JFK, if it’ll result in a cheaper fare), your preferred currency (I like to set this as CAD or USD for easy comparison), and the “sales city” of the fare (accounting for the fact that airfare and/or fare availability can often vary depending on where it is purchased).
We can see an “Advanced Controls” button just under the dropdown list to search for exact dates or a calendar of lowest fares.
Clicking on this will cause a couple of additional fields to appear under the “Origin” and “Destination” fields: Routing Codes and Extension Codes.
There’s a little question mark you can click on, which will provide more information on what arguments these fields accept as parameters and the appropriate syntax.
We’ll begin with the Routing codes. There are generally two types of codes we can input as Routing codes: preferred connections and preferred airlines.
ITA Matrix’s list of examples for Routing codes is as follows, and we’ll also take a look at some of our own examples:
Here are a few of the rules you can use to specify an exact type of itinerary on an exact airlines, using the two-letter IATA code for the airline:
“AC”: Direct flight on Air Canada
“AC+”: One or more flights on Air Canada
“~AC”: Direct flight that must not be on Air Canada
“~AC+”: One or more flights, which must not be on Air Canada
Combining the above rules using a comma separator:
“AC,UA”: Direct flight on either Air Canada or United
“AC,UA+”: One or more flights on either Air Canada or United
“~AC,UA”: Direct flight that must not on either Air Canada or United
“~AC,UA+”: One or more flights, none of which can be on either Air Canada or United
To specify two or more flights, you simply list the airline codes one after the other:
“AC UA”: Direct flight on Air Canada, followed by a direct flight on United
“AC UA+”: Direct flight on Air Canada, followed by one or more flights on United
For preferred connections, the syntax is similar. Inputting “NYC” means that you must have a connection in New York, while the tilde (~) is used to indicate where you don’t want to stop. Just like before, think of commas as “or” and spaces as “and”.
Here are a few examples:
“JFK”: A connection at New York JFK airport
“NYC”: A connection at any one of New York’s three airports (JFK, LGA, EWR)
“NYC,DEN”: A connection in either New York or Denver
“NYC DEN”: A connection in New York, followed by a connection in Denver
“NYC DEN,LAX”: A connection in New York, followed by a connection in either Denver or Los Angeles
Everything we just discussed can be combined together into as specific a combination as you’d like.
One example in ITA Matrix’s list above is “DL CHI DL”, which means: a Delta flight, followed by a stop in Chicago, and then followed by another Delta flight.
Let’s now move on to the Extension codes. Here is the list of examples that ITA Matrix provides when clicking on the question mark:
At first glance, you’ll notice that there’s some overlap between the Extension codes and the Routing codes we discussed above.
One of the examples given by ITA Matrix is “-AIRLINES AA BA”, which “prohibits flights on the specified carriers”, and this can also be accomplished using “~AA,BA+” as a Routing code.
The most useful Extension codes are probably “MINCONNECT” and “MAXCONNECT”, where using “MINCONNECT 20:00” – specifying a desired connection time of at least 20 hours – can be a viable strategy to force an overnight layover.
In a similar fashion, “MAXCONNECT” can be used to avoid an overnight layover or simply to eliminate “awkward” layovers of 6–10 hours, which isn’t really enough time to see the city but might also be too much time to simply hang out in the lounge.
“PADCONNECT” is an interesting option here, which will automatically add the amount of time you choose to the minimum connection time at every stop.
So if you write “PADCONNECT 00:30”, it will only show flights where every stop had at least 30 minutes added to the minimum connection time, which some travellers might prefer for the peace of mind.
Something that’s not listed in the examples, but can be of avid interest to aviation geeks, is the aircraft used on each flight.
This can be inserted as an Extension code using “AIRCRAFT t:xxx”, where xxx represents the IATA code of each aircraft. For example, if we’re looking to fly on the A380, the full input would be “AIRCRAFT t:380”.
Another nifty trick that can be useful is “MAXDUR hh:mm”, which can be used to specify the total duration of the trip. For example, if I input “MAXDUR 10:30” on a flight from Toronto to Vancouver, the total duration including flights and layovers cannot exceed 10 hours and 30 minutes.
(Note: I’ve been using uppercase Routing and Extension codes to be consistent with ITA Matrix’s syntax, but lowercase appears to work just fine too.)
Putting It All Together
We’ve just covered most of ITA Matrix’s basic features, but let’s put it all together using a few examples.
Let’s use the elementary school-style of forwards and backwards thinking to test our understanding.
In the first example, we’ll input commands into ITA Matrix to find the cheapest flight for our desired trip, and in the second example, we’ll examine an ITA Matrix input, dissect what it means, and think about what kinds of flights ITA Matrix should output as a result.
Example 1: Putting Together a Search
Let’s say you’re looking to travel one-way from Halifax to Vancouver anytime in March 2023, and you don’t mind travelling up to 100 miles within either the origin or destination to catch a cheaper flight.
You aren’t picky about aircraft type, but in order to minimize inconvenience, you don’t want more than one connection along the journey.
Furthermore, that one connection shouldn’t be longer than two hours, given that you want to strike a delicate balance between rushing for the next flight and sitting idly in the terminal.
Since you have status with Air Canada through Everyday Status Qualification, you’ll be looking to fly with Air Canada to take advantage of your free checked baggage allowance. You can also possibly use eUpgrades to book in economy and upgrade to business class.
First, input “YHZ” as the Departure and “YVR” as the Destination, selecting the calendar of lowest fares and inputting March 1, 2023 as the start of the month-long period (so as to search across all dates in March 2023).
Then, use the “Nearby” button next to the origin and destination fields to select all airports within a 100-mile radius from both.
For Stops, choose “Up to 1 Stop” with no extra stops. Also, uncheck “Allow airport changes”, since you don’t want to be changing airports during your layover.
Finally, use the Advanced Controls to select Air Canada flights only, with a maximum connection time of two hours.
All said and done, this is what the search input looks like:
And here is the search result:
We can see that the cheapest possible price is $535, with other fares around $20 more expensive.
Since you want to leave earlier if possible, go ahead and select March 1. The next screen will show us all the available flight results on that date:
Clicking through on the $535 fare brings you to this page, where you can view the details of my selected flight.
We can now see that instead of flying out of Halifax, the cheapest flight actually departs out of Charlottetown instead.
Looking back to the list of flights on March 1, perhaps you decide that the price difference between $535 and $557 isn’t quite great enough to justify the commute to Charlottetown, so at this point you might choose to simply go with the itinerary departing out of Halifax for $557 instead.
Still, it’s a good thing that we searched for nearby airports to begin with, since you might’ve accepted the Charlottetown departure if it had represented greater savings.
Example 2: Analyzing a Sample Search
Let’s take a look at the following sample search and analyze what it means (the cut-off Extension codes read as “MINCONNECT 04:00; AIRCRAFT t:380”):
First off, we can see that we’re searching for a flight from any New York City airport to Singapore Changi Airport (SIN) in Singapore.
We are specifically looking to fly within a two-day window around May 25, 2022, and only in First Class.
The Routing codes indicate that we’re willing to fly only on Singapore Airlines for any number of segments with any number of stops. This would encompass the New York–Singapore direct flight (the longest in the world), as well as the one-stop fifth-freedom routing via Frankfurt.
Meanwhile, the Extension codes indicate that the only aircraft we’re considering for the journey is an Airbus A380 on all segments, and of course, we need at least four hours in-between our flights to break up the journey.
How to Book Itineraries Found on ITA Matrix
ITA Matrix is a powerful tool for understanding airfare and pricing out exact itineraries. However, by design, it doesn’t provide a direct link to book the itineraries that it finds.
Instead, you’ll have to either work with a travel agency (online or brick-and-mortar) to book itineraries that you find on ITA Matrix, or book directly with the airline.
I’d recommend always booking directly with the airline if possible, for the usual benefits such as having an easier time making changes, requesting refunds, or rearranging your travel plans in the case of IRROPS.
If you work with a travel agent, you can likely send them the itinerary and they can construct the fare through the travel agency’s ticketing portal.
There are a few successful data points out there of travel agents that work with fixed-value points programs (such as Amex Travel, BMO Rewards, or CIBC Aventura) being able construct these customized ITA Matrix itineraries and help you book them using your loyalty points, although this likely comes down to the skill and willingness of the individual agent.
However, there’s one very useful tool that can help get around ITA Matrix’s limitations and empower you to book itineraries yourself: ITA Matrix PowerTools.
PowerTools is a custom add-on developed by members of the FlyerTalk community to make ITA Matrix even more powerful than it already is, and is by far the smoothest way to book your ITA Matrix itineraries – but we’ll leave that for Part 2.
As you can tell, ITA Matrix is one of the most powerful travel tools we’ll be covering in the “Use It Like A Pro” series.
In this post, we’ve gone over all of ITA Matrix’s basic features, to help you search for airfare with a far greater degree of precision and control compared to all of the other online search engines out there.
In Part 2 of this guide, we’ll be delving into a few more of the Advanced Controls, thinking about how to use ITA Matrix in the context of mileage runs, and examining how to harness the full potential of ITA Matrix PowerTools to supercharge this outstanding search engine even further.