Today I’m going to show you the true power of the ITA Fare Matrix search engine. Some of this routing language has been incorporated into Hipmunk, although it’s not widely publicized. (Read my reviews to learn more; there are links in yesterday’s Hipmunk Giveaway post.)
How to Use ITA
Yesterday I introduced how to use ITA for a basic round trip flight from Seattle to Washington, DC. Among other things I showed you how to use time bars to display flight options and how to learn the fare breakdown for your final itinerary.
Although SEA-IAD seems like a very simple trip with lots of nonstop and one-stop options in each direction, there are ways to limit your search results to force certain airlines, certain flight numbers, and certain connections. ITA shares some of this information on its website, but I find it awfully brief. There are also other “secret” commands. These commands are extremely useful when you already have a strong sense of what kind of itinerary you want to build. They’re more than just specifying a favorite airline.
In addition, ITA sometimes will time out if your search is overly broad, returning some but not all of the possible itineraries. All search engines do this, and ITA has gotten worse since it was acquired by Google. If you can specify your restrictions in advance, then ITA will explore everything else much more thoroughly looking for the best possible deal.
Entering Advanced Routing Language
So, how do we activate this magical feature? Underneath the fields for departure and destination there is a link that says “Advanced routing codes.”
Clicking on this will open one additional field under each airport. You can type your advanced routing codes here, or you can place them immediately after the airport code, separated by two colons. (I usually prefer to write them in the departure and destination fields after two colons. The routing code fields will populate automatically and I don’t have to fill them in separately.)
To walk you through some examples, instead of “SEA” alone, use this command to require that the flight be marketed by United.
- SEA :: UA
Because “UA” is listed once, ITA will look for a single direct flight. Repeat multiple times to specify the number of flights (e.g., “SEA :: UA UA UA” for three flights) or use the plus symbol to indicate any number of flights all marketed by the same carrier (e.g., “SEA :: UA+”).
Searching Multiple Airlines and Airports
You can search for multiple airports and airlines at the same time by separating them with a comma. The Washington, DC, area has three major airports: IAD, DCA, and BWI. Some of you may be aware of city codes, such as WAS, that encompass multiple airports, but be aware that they might not include every one you’re thinking of. For some reason I once thought NYC included JFK and LGA but not EWR. Apparently it does include all three, but my point is you should pay attention if you get strange results. I prefer to always specify individual airports. In addition to United, US Airways and American Airlines have a decent presence at DC-area airports. So you could change your search again to include all three airports and only those three airlines, or use a city code:
- IAD,BWI,DCA :: UA,US,AA
- WAS :: UA,US,AA
You can also specify connecting cities by changing the command to look like this, for example, to require a connection in Denver or Chicago O’Hare:
- SEA :: DEN,ORD
If you want to specify both a connection and an airline, you will have to be more careful. The airline code must go before the airport code for the connection, and you will only be specifying the airline for that particular flight. Here are two examples:
- Example 1: SEA :: UA DEN
- Example 2: SEA :: UA DEN UA
In the first example, only the first flight to Denver will be marketed by United, but the subsequent one can be marketed by other airlines. In the second example, both the first and second flights must be marketed by United. You can use the plus symbol to avoid entering the airline multiple times (e.g., “SEA :: UA+ DEN”).
You’ll notice that I keep saying flights are “marketed by” United. This means they could be codeshares that are operated by another carrier such as Air Canada or US Airways. That’s unlikely on a flight to a United hub like DEN, but you can still use “O:UA” to force ITA to find only flights operated by United (e.g., “SEA :: O:UA+ DEN”). Unlike before, where all flights were marketed by United but could be operated by other carriers, now the reverse is true. All flights will be operated by United, but could be marketed by other carriers.
All Advanced Routing Codes and Their Definitions
I am including a list of all the advanced routing commands at the end of this post, but before we get there, let me describe a much smaller group that uses a different syntax.
You can specify that flights be marketed by a particular alliance (so you don’t have to type in all the airline codes) or that tickets be issued in a particular fare class or booking class (such as “W” so that you can use your United systemwide upgrade to move from coach to business). These commands don’t require the two colons after the airport, but they won’t hurt, either. However, you must use a forward slash and include them at the end of any other advanced routing codes.
- “/alliance star-alliance” to search Star Alliance members like United
- “/alliance oneworld” to search oneworld members like American Airlines
- “/alliance skyteam” to search SkyTeam members like Delta
- “/f bc=w” to search for tickets in the W fare class
- “/f bc=w|bc=y” to search for tickets in the W or Y fare classes
It’s unfortunate that multiple fare classes have to be entered individually separated by that vertical bar (located on your backslash key). However, it’s still very useful when you are trying hard to find an upgradeable flight.
Let me leave you with a warning. Because an ITA search will timeout after one minute, an overly broad search will not have time to return all the results. You will still get results, just not all of them. Usually this isn’t an issue, but it will be if you specify too many airports. Narrowing the number of airlines or choosing specific flights prevents the timeout. So, if you are planning to meet up with friends in one of several different cities in the United States to fly to Europe over spring break, and you want to keep your options open, you could easily use ITA to search for something like this:
- Departing from: SEA,SFO,LAX,IAD,MIA
- Destination: LHR,MUC,CDG,FCO,BCN,FRA
But it probably won’t return everything available, which means you could be missing the cheapest fares. Specifying a few airlines or even a single alliance will help a lot. It will also help to use some of the commands in the list below when you have found one or two specific flight numbers you are interested for the transatlantic portion of your journey but are still flexible about the domestic legs that get you to the gateway city.
I have found this route language to be most helpful in the past particularly when I am trying to connect through particular cities, such as choosing Houston over Denver in the winter, or when I want to avoid others, such as Toronto, which always seems to involve a five-hour layover. Feel free to ask me questions about how to structure your particular search parameters. You can also let me know if you are aware of any commands that I over looked.
My examples are based on ITA’s own instructions, which you can bring up by clicking on the question mark next to each of the advanced routing entry fields. I’ve expanded on them a bit where I felt ITA was unclear. And with that said, I give you the list:
Various combinations of these commands are possible. For example:
There are also many special commands to prevent “bad” flights courtesy of SeattleFred on FlyerTalk. List them after a forward slash and separated by commas, e.g., “BOS :: / -overnight,-redeye”. (Those are minus signs, not the tildes used for negation above.)
SeattleFred also tells us how to set connection times and itinerary duration. These commands must also be preceded by a forward slash.