Go Back  FlyerTalk Forums > Travel&Dining > Travel Tools
Reload this Page >

ITA-Matrix-PowerTools - Userscript for Orbitz/DL/UA/AA/BA/CZ/IB/LA/LH/LX/TK

Community
Wiki Posts
Search
Old Nov 11, 2014, 10:54 am
FlyerTalk Forums Expert How-Tos and Guides
Last edit by: IAkH
Welcome to the ITA-Matrix-PowerTools
*** About ***
The ITA-Matrix-PowerTools are a user script maintained by fellow flyertalk members to enhance the already powerful Matrix of ITA Software by providing new features and booking links.

Features added to the itinerary details page:
  • convert times into 24h format
  • translation support
  • open fare rules in new window by default
  • price breakdown (base fare, taxes & carrier imposed surcharges)
  • editor mode (adjust cabin prior extraction)
  • multiple handy links (Seatguru, Planefinder, WhereToCredit)
  • new on page features like detailed mileage breakdown*, GCM-Map* and earned frequent flyer miles*
  • create links to various providers (OTAs / airlines / other tools) to try direct booking of your itinerary

Originally Posted by Error: Unable to find class IR6M2QD-k-i for itinRow.
If you see this error, currently you'll need to manually edit your installed script.

See posts from October 1st, 2018 for more information.
*requires background requests

The script may have lots of bugs and comes without warranty of any kind! Not all fares will be bookable or will price correctly in the booking engines. You are responsible for the money you spend - so double check your flights before purchasing AND use your sanity! Read this and the next two posts as an example: click

*** How it works ***
Using pure JavaScript we are "creating" some sort of hook that is periodically checking for page changes while working with the Matrix. As soon as you reload or leave the page the script stops (leaving the page or using the console-version) or starts from the beginning (using the userscript and perfoming a reload). Also this script is only running in these tabs/windows in which you are looking at the Matrix.
As soon as the script detects the itinerary page it reads its content - unless you activated the editor mode. It's parsing all the information found and creates - based on this information - several links to OTAs, airlines and other tools. Since we are able to remove, replace and add content to the page - we make them visible and clickable in a way you choose. By default there are no background requests.

*** How to get it running ***
There are three methods to install the script. All three below run exactly the same underlying script but are listed in order of installation complexity:

Method 1: Browser Extensions
Method 2: As a UserScript
It takes a moment to get it running but after that it will start automatically everytime you visit the Matrix and we will be able to store your settings. You will need to install a script manager.

Warning: Using a script manager and installing user scripts is a potential security risk - We need to mention it here.
Step 1: Install a script manager Step 2: Install the script
See the FAQ of your script manager how to install the script.
  • Through GreasyFork
  • Through OpenUserJS
  • Through GitHub: you should be asked whether you want to install it - make sure your script manager is running.
Method 3: iOS Safari Shortcut

Get the "Add ITA Matrix Powertools" Shortcut

Instructions much be run each time
  • Open ITA Matrix in Safari on your iPhone or iPad
  • Tap on the Share button in the bottom navigation
  • Scroll down through all the actions
  • Select Add ITA Matrix Powertools

Method 4: Console/Debug mode
You need to access the command line of your browser to execute the script. You can use either the regular version or the minified version. Just copy the entire text.

Chrome:
  1. Open Chrome DevTools: developer.chrome.com
  2. Switch to the console tab
  3. Paste the script into the command line: developer.chrome.com
  4. Run it
Firefox:
  1. Open the web console: developer.mozilla.org
  2. Switch to the console tab
  3. Paste the script into the command line: developer.mozilla.org
  4. Run it
Internet Explorer:
  1. Open the web console by pressing F12
  2. Switch to the console tab
  3. Paste the script into the command line - at the very bottom
  4. Run it by pressing the green triangle

*** How to use it ***
Once the script is running you should see a new line above the ITA logo:
Code:
Passengers (1a) Settings (v0.18) (Cabin: Auto)
As long as you see this line, there is no need to reexecute the script. Make sure to get used to the "Settings"-feature -> just click on Settings. Within the settings menu you can configure the script towards your needs/preferences. Enabling/disabling features and/or setting standard editions of providers on the fly. When using a script manager these settings should be stored and automatically load as soon as you visit matrix.itasoftware.com - but the passengers as well as the cabin detection will not be stored!
Your settings are "reloaded" everytime the itinerary details show up! If you want to use other settings, just get back to the flight selection and reselect your flights - the new settings will be used. This belongs to the passengers and cabin detection as well

Passengers:
The passenger count will not be taken from your search results! Use the passenger config on the upper left and make sure they are set before you get to the itinerary details. We had to do it this way because some providers require the age of children. But always make sure to search for the equivalent passenger count. There might be seat availability for one passenger but not for two!

Cabin detection:
You should set the cabin on the upper right to the appropriate main cabin you are looking for. Sometimes you will have economy/business class segments in mainly business/first class itineraries. These mixed itineraries make it hard to autodetect the main cabin - so you can set it manually.

*** Background requests - Privacy issues ***
Some features require to contact other servers. As long as you do not activate any of the autoload features within the settings there won't be any automatic background requests. You will have to initiate them manually. The following list will tell which features are contacting what server and what information will be transferred. All websites will know you are using this script und you are currently using the Matrix - what by the way applies to the link targets you click as well.
  • GCM-Map in inline mode - contacting gcmap.com (non SSL) providing full route data
  • WhereToCredit.com mileage accrual breakdown - contacting wheretocredit.com (non SSL or SSL - depending on whether you use the Matrix with or without SSL) providing full itinerary
  • Skimlinks affiliate links - loads a js script to adds affiliate ids to some links if and only if the "Support this tool" setting is enabled. If it is disabled, no external scripts are loaded
*** FT-Posts you should read ***
General statement regarding this script: click
How to fix class names yourself: click
Problems and limitations regarding pricing itins: click

*** Contributors ***
paul21, Steppo, IAkH, 18sas, Benchmarc and others!

I'd like to give special thanks to paul21 for starting this idea.

*** Latest Version ***
GitHub Repo

OR install directly: Executable Version minified

FYI
Steppo & IAkH (Adam Hwang) have full access to this repository.

Discussion - written by paul21:
The original posting can be found here, related to building links on delta's booking engine. The script scrapes the flight info from the itinerary (flight numbers, dates, class of service, price) and builds a link string to two booking engines (Orbitz/Delta). These links are the same links used by Google Flights (owns ITA) , Kayak, et. al. to drive purchases. I used the Google referrer codes in the scripts, so they should get the commission. It's beyond me why ITA doesn't have some form of purchase link. This a userscript, and like an ad-blocker, it modifies the way a page is viewed by editing DOM objects in the browser. Keep in mind that this tool is meant to do something you already do yourself, but to save time in the process. Any tickets issued by Orbitz/DL via these links could be issued via phone or web search. If the links work, you are avoiding a phone booking fee potentially.







Print Wikipost

ITA-Matrix-PowerTools - Userscript for Orbitz/DL/UA/AA/BA/CZ/IB/LA/LH/LX/TK

Thread Tools
 
Search this Thread
 
Old Jul 30, 2015, 12:35 pm
  #166  
Original Poster
 
Join Date: Nov 2012
Location: Minutes from ATL
Programs: DL
Posts: 436
Originally Posted by scibuff
Any idea how to modify the Hipmunk bookjs request to UA to have it working for children/infants? Or is there any documentation for the web request? Clearly, Hipmunk can send you to UA itinerary which has infants and UA displays the correct price. I don't mind doing this manually, i.e. just need to either have the docs or figure out the correct param names.

Code:
https://www.hipmunk.com/bookjs?booking_info={"post": {"pax": 2, "trips": [{"origin": "BOS", "dest": "PEK", "dep_date": "9/8/2015", "segments": [{"origin": "BOS", "dep_date": "9/8/2015", "dest_date": " ", "dest": "IAD", "flight_num": 299, "carrier": "UA", "fare_code": "PFEQZCM2"},{"origin": "IAD", "dep_date": "9/8/2015", "dest_date": " ", "dest": "PEK", "flight_num": 807, "carrier": "UA", "fare_code": "PFEQZCM2"}],"cabin": "Business"}]}, "kind": "flight", "provider_code": "UA" }
I've tried changing "pax" to 1 and adding all sorts of names such as infant, infants, child, children etc ... but nothing seems to work

Cheers
Thanks again to the community for maintaining this. I really just put up a stub idea and several people really took it over.


Anyway if you want to find some other link combinations, the go to method for me is to use Chrome's debugging (right click, inspect element brings it up) and go to the Network tab. Check "preserve log" and run through a search on hipmunk and try to book via United (p.s. liberally use clear log between actions to help). You'll get a pop-out to a new tab, so you'll have to be quick in stopping the page and opening the network sheet again (then you can just refresh to get it to re-post your info). Scan through the immense junk, and I just happen to know that you're looking for a "POST" to bookjs since I found this one a long time ago. Right click, copy cURL, and paste into your notepad or something. Look for the --data "<lots of stuff>". Then you need to decode that, so strip the " using a replace all and then go to a URL decoder to get the %junk into letters and spaces.

You'll end up with this:

Code:
booking_info={"attribution": null, "booking_currency": "USD", "clientversion": "", "hide_price": false, "price": 143.1, "source_scrapers": ["SabreScraper"], "search_iden": "SFO.ORD,Aug20&1-0-1", "point_of_sale": "US", "sub_kind": "oneway", "nationality": null, "post": {"seniors": 0, "infants_lap": 0, "pax": 1, "country": "US", "who": "UA", "children": 0, "infants_seat": 1, "trips": [{"origin": "SFO", "dest": "ORD", "dep_date": "08/20/2015 01:04:00 PM", "segments": [{"origin": "SFO", "dep_date": "08/20/2015 01:04:00 PM", "dest_date": "08/20/2015 07:15:00 PM", "dest": "ORD", "flight_num": 698, "carrier": "UA", "fare_code": "GAA14AXS"}], "cabin": "Coach"}]}, "search_time": 1438280907, "recapture": "none", "kind": "flight", "provider_code": "UA", "name": "United", "clienttype": "web", "url": "http://united.com", "other_urls": null, "routings": [[["SFO", "ORD"]]], "booking_price": 143.1, "outside_provider": false, "platform": "web", "flights": [[["UA", 698], ["UA", 698]]], "action": true, "total_seats": 2}&revision=2.1
So now you can see that infants_lap, infants_seat, children, seniors are broken out in there.

It just so happens that the particular JS file responds well to poorly-referred and GET vs POST commands, and returns nice plaintext json you can read => you can just edit that URL.

Edit:
And for those wanting a OW-OTA, just find some sites like hipmunk/kayak/google flights/etc that relink to the carrier's sites. You should be able to follow your browser's crumbs and decide if it's worth the effort to reproduce. A lot of the OW carriers use some kind of session key that makes it difficult. It also happens DL's site uses some dynamic javascript generation tool that's really clunky to interface--but possible! It allows some tools like seat alerts (for multiple airlines, I'm not sure the limitations on that), award search/alerts, etc.

Last edited by paul21; Jul 30, 2015 at 2:28 pm
paul21 is offline  
Old Aug 7, 2015, 9:25 am
  #167  
 
Join Date: Jun 2013
Location: Somewhere between if and else
Posts: 142
Updated Class-Names
--------------------
Update to v0.13a using https://github.com/SteppoFF/ita-matrix-powertools/ or install/open directly

Installable/Executable Version
Executable Version minified

Happy searching
--------------------
Steppo is offline  
Old Aug 13, 2015, 5:31 pm
  #168  
FlyerTalk Evangelist
 
Join Date: Aug 2005
Location: BOS/EAP
Programs: UA 1K, MR LTT, HH Dia, Amex Plat
Posts: 32,052
Originally Posted by st1575
How is it not working (not available, incorrect fare class, etc.)? Are the problems limited to a specific itinerary or set of carriers?
I just can't figure it out I guess. As far as I can tell I am following the instructions verbatim.
I am always getting this response back from Chrome: {"jquery": "var _0=jQuery.redirect;\nvar _1=_0.call(jQuery,\"http://www.united.com/services/flight/avail/PreReview.aspx?VendorSID=BAF0E7634E9A40D0850228713 211E615\")"}
cfischer is offline  
Old Aug 13, 2015, 5:35 pm
  #169  
 
Join Date: Oct 2009
Location: Austin, TX
Programs: Once upon a time...
Posts: 863
Originally Posted by cfischer
I just can't figure it out I guess. As far as I can tell I am following the instructions verbatim.
I am always getting this response back from Chrome: {"jquery": "var _0=jQuery.redirect;\nvar _1=_0.call(jQuery,\"http://www.united.com/services/flight/avail/PreReview.aspx?VendorSID=BAF0E7634E9A40D0850228713 211E615\")"}
Yes, and then you copy and paste that URL into your browser to get the flight.
veeRob is offline  
Old Aug 18, 2015, 5:53 pm
  #170  
 
Join Date: Jun 2013
Location: Somewhere between if and else
Posts: 142
Originally Posted by cfischer
I just can't figure it out I guess. As far as I can tell I am following the instructions verbatim.
{"jquery": "var _0=jQuery.redirect;\nvar _1=_0.call(jQuery,\"http://www.united.com/services/flight/avail/PreReview.aspx?VendorSID=BAF0E7634E9A40D0850228713 211E615\")"}

This is the part you need to copy into a new tab or window.
Steppo is offline  
Old Aug 20, 2015, 7:47 pm
  #171  
FlyerTalk Evangelist
 
Join Date: Aug 2005
Location: BOS/EAP
Programs: UA 1K, MR LTT, HH Dia, Amex Plat
Posts: 32,052
Originally Posted by Steppo
{"jquery": "var _0=jQuery.redirect;\nvar _1=_0.call(jQuery,\"http://www.united.com/services/fligh...0228713211E615\")"}

This is the part you need to copy into a new tab or window.
that is what I am doing ... and it just doesn't do anything ... maybe I need to check out other browsers.
cfischer is offline  
Old Aug 21, 2015, 1:25 am
  #172  
 
Join Date: Mar 2013
Posts: 506
Originally Posted by Steppo
Updated Class-Names
--------------------
Update to v0.13a using https://github.com/SteppoFF/ita-matrix-powertools/ or install/open directly

Installable/Executable Version
Executable Version minified

Happy searching
--------------------
Question: How come my script didn't auto update? I noticed it wasn't working this morning so I came onto this thread to see there's a v0.13a that I had to manually install. However, I thought the script is supposed to auto update itself? I have been using it for a while, and I know I don't come here to always check up on new versions so it must've been auto updating this whole time.... did something go wrong?
Wise-Broccoli8301 is offline  
Old Aug 23, 2015, 12:26 pm
  #173  
 
Join Date: Aug 2013
Posts: 498
Originally Posted by dmo580
Question: How come my script didn't auto update? I noticed it wasn't working this morning so I came onto this thread to see there's a v0.13a that I had to manually install. However, I thought the script is supposed to auto update itself? I have been using it for a while, and I know I don't come here to always check up on new versions so it must've been auto updating this whole time.... did something go wrong?
Auto-update is a function of your userscript extension. Check the settings for greasmonkey/tapermonkey/etc. and if you're still lost you can either try their support forums or see if anyone around here uses the same browser/extension combination.
wto605 is offline  
Old Aug 24, 2015, 1:18 am
  #174  
 
Join Date: May 2015
Location: Here and there.
Programs: Brooks Beta Runner
Posts: 116
Random question.

So I was playing around with matrix and found an AA flight, and out of curiosity clicked to book it through united. Oddly enough, the united website appears to be willing to sell me a ticket that is entirely on AA. Does anyone have any experience with this? Will I end up with a ticket?
Mrpinkca is offline  
Old Aug 24, 2015, 1:42 am
  #175  
 
Join Date: May 2012
Location: MCI
Posts: 165
Originally Posted by cfischer
that is what I am doing ... and it just doesn't do anything ... maybe I need to check out other browsers.
What tripped me up for a long time was the trailing / you have to make sure not to copy it.

e.g. if your string was:

{"jquery": "var _0=jQuery.redirect;\nvar _1=_0.call(jQuery,\"https://www.united.com/services/flight/avail/PreReview.aspx?VendorSID=B30FEAEDBC0C47B6A699E34DB 0EA1410\")"}

Then just copy https: //www.united.com/services/flight/avail/PreReview.aspx?VendorSID=B30FEAEDBC0C47B6A699E34DB 0EA1410 and make sure you don't have that slash at the end or it will error.

I am using firefox ver 40.0.2 FWIW
jrweaver912 is offline  
Old Aug 24, 2015, 12:43 pm
  #176  
Original Poster
 
Join Date: Nov 2012
Location: Minutes from ATL
Programs: DL
Posts: 436
Originally Posted by Mrpinkca
Random question.

So I was playing around with matrix and found an AA flight, and out of curiosity clicked to book it through united. Oddly enough, the united website appears to be willing to sell me a ticket that is entirely on AA. Does anyone have any experience with this? Will I end up with a ticket?
You will end up with a ticket. The phone agents at United will be crazy confused, but I've booked DL-coded AF flights via United before and gotten a ticket without issue. I also got a 24-hour cancel on it as well. YMMV.
paul21 is offline  
Old Aug 24, 2015, 5:09 pm
  #177  
 
Join Date: Jun 2013
Location: Somewhere between if and else
Posts: 142
Originally Posted by paul21
The phone agents at United will be crazy confused
This part is awesome! ^
Steppo is offline  
Old Aug 24, 2015, 6:52 pm
  #178  
 
Join Date: Jan 2013
Location: NYC
Posts: 538
Originally Posted by paul21
You will end up with a ticket. The phone agents at United will be crazy confused, but I've booked DL-coded AF flights via United before and gotten a ticket without issue. I also got a 24-hour cancel on it as well. YMMV.
Yes, it's really feels good when the confused UA agent asks if your 016-plated, DL-marketed , KLM-operated ticket is "special."

Again, many thanks for this awesome tool.
st1575 is offline  
Old Aug 24, 2015, 10:40 pm
  #179  
 
Join Date: May 2015
Location: Here and there.
Programs: Brooks Beta Runner
Posts: 116
Originally Posted by st1575
Yes, it's really feels good when the confused UA agent asks if your 016-plated, DL-marketed , KLM-operated ticket is "special."

Again, many thanks for this awesome tool.
What airline were you earning miles on?
Mrpinkca is offline  
Old Aug 25, 2015, 6:51 am
  #180  
 
Join Date: Sep 2011
Location: YUL
Programs: AC Altitude -.006k
Posts: 895
Originally Posted by Mrpinkca
What airline were you earning miles on?
It'd be funny if the reply was... BA! ;-)
WhiteYUL is offline  


Contact Us - Manage Preferences - Archive - Advertising - Cookie Policy - Privacy Statement - Terms of Service -

This site is owned, operated, and maintained by MH Sub I, LLC dba Internet Brands. Copyright © 2024 MH Sub I, LLC dba Internet Brands. All rights reserved. Designated trademarks are the property of their respective owners.