Downloads PDF versions of Toyota Service Manuals from TIS.
Bought a 48-hour subscription to Toyota's Service Manuals (Tech Info) and want to save manuals permanently? Here's the repo for you.
These manuals are copyrighted by Toyota, so don't share them!
(I've also written a Ford manual downloader, available here).
If Node.js >v16.3 and yarn are on your system, skip these steps.
- Install Node.js 16.3 or newer (with corepack)-- you can find instructions for your OS on Google. Generically, Windows users should install either in WSL or via https://nodejs.org, Mac users should install via Homebrew, and Linux users should follow instructions online for their distro.
- Run
corepack enable-- this gets Yarn working.
Since this project uses Playwright (a headless browser interop library), we'll need to run some special setup steps.
- Clone this repository to your system with
git clone https://github.com/iamtheyammer/fetch-toyota-service-manuals - Move into the new folder with
cd fetch-toyota-service-manuals - Run
yarnto install dependencies according to the lockfile. - Run
yarn playwright-setupto download and set up Playwright (this is important!)
- If you haven't, purchase a TIS subscription from here. The 48 hour subscription is fine.
- Once purchased, sign in. It can take a minute or two for your login to start working after purchase.
- Click the
TIStab at the top left of your screen. - Select your car's brand (Toyota, Scion, or Lexus), model, and year. Click Search.
- Click the
RM(repair manual) tab. - Click any document that appears.
- In the URL of the pop-out window, copy the
RM12345-like code. The full URL should be something likehttps://techinfo.toyota.com/t3Portal/resources/jsp/siviewer/index.jsp?dir=rm/THIS IS THE CODE&href=xhtml/..... - Save this code for later-- you'll need it!
- Close the pop-out window, and go back to TIS.
- Click the
EWD(electrical wiring diagram) tab. The full URL should be something likehttps://techinfo.toyota.com/t3Portal/ewdappu/index.jsp?ewdNo=THIS IS THE CODE&model=Prius... - In the URL of the pop-out window, copy the
EM12345-like code. - Save the code for later.
- If you want diagrams for more cars, repeat those steps for each car.
For non-electrical manuals (IDs that start with RM or BM), this tool supports only downloading pages pertaining to your model year of vehicle. Some Toyota vehicles, like the 4th generation Prius, have the same manual ID for every single year this generation of the Prius was made.
To avoid downloading pages for a car you don't have, you can specify the model year by putting it after an @-sign.
For example, to download RM12345 for the 2016 model year, you'd use -m RM12345@2016.
There is no harm in doing this for cars that don't support it (the 2015 Prius is an example). The tool will include all pages for manuals that don't support this functionality. There is also no harm in adding a year to other manual types, but it won't do anything.
And, yes, you can specify a year that the car wasn't made in-- but, if you do, the tool will exclude every page.
If you have 2FA enabled (recommended method):
Run yarn start --browser-login -m MANUALID -m ANOTHERMANUALID -m ... with the manual IDs replaced with yours.
A browser window will open automatically. Log in to TIS in that window (including completing 2FA if required). Once you're logged in and see the TIS homepage, the script will automatically extract your session and begin downloading.
If you don't have 2FA enabled (legacy method):
Run yarn start -e YOUREMAIL -p YOURPASSWORD -m MANUALID -m ANOTHERMANUALID -m ... with your credentials and manual IDs.
Note: You can use -m an unlimited number of times for multiple manuals.
The script will automatically read each manual's Table of Contents and download every page unless you specify a year-- see above.
DO NOT log in to TIS while the bot is downloading. TIS enforces a one-session-at-a-time policy, and if you log in while it's downloading you'll have to start over. If you know what you're doing, you can use your browser Cookie to log in instead of your email and password. See the command-line options for more info.
Manuals take a while. It can take upwards of an hour to download manuals for a single car. If you're downloading multiple manuals, it can take a long time. Be patient. Stay connected to the internet.
You can find your downloaded manuals at manuals/MANUALID.
This bot downloads all manual IDs you specified. It supports manual IDs starting with RM, EM, and BM.
Electrical Wiring Diagrams (manual IDs that start with EM) have three directories: routing, overall, and system.
overallcontains traditional wiring diagrams (often PDFs)routingcontains diagrams showing wires' locations around the car (often SVGZs)systemcontains traditional wiring diagrams (often SVGs) - often, these overlap withoverall, but not always
Other manuals contain all files from the manual, in a tree-like directory structure that mimics the tree view on the sidebar of TIS.
For example, if a manual page is at Engine-Hybrid System -> 1AB-CDE COOLING -> COMPONENTS, you'll find its
downloaded equivalent at manuals/MANUALID/Engine-Hybrid System/1AB-CDE COOLING/COMPONENTS.pdf.
For non-electrical manuals, you'll see two "toc" (table of contents) files. toc-full.xml contains all of the possible pages in the manual. toc-downloaded.json contains the filtered version, if you filtered by year (if you didn't filter by year, it contains all pages). This is useful if you want to see what pages are available for your car (xml) or what the bot downloaded (json).
index.html and toc.js files are for the Manual Locator.
Sometimes, a procedure will link to another with a blue "INFO" button.
You can use the Manual Locator HTML page to find the page for that procedure:
- Open
index.htmlin your browser of choice by double-clicking it. - Copy the link to TechInfo from the "INFO" button. Often, you can right-click the button to see the link.
- If you can't, try opening the PDF in Chrome-- drag it into Chrome from your file browser-- then right-click and "Copy Link Address".
- Paste the link into the Manual Locator.
- Press "Go" or hit enter.
- The requested page will open in your browser.
Pages that had a double quote in their name may not work.
This will only work if index.html is in the same directory as toc.js, and those files must be at the root of your manual directory.
(If you don't move any files after downloading, this should be the case.)
Run yarn start --help, or see below:
Toyota/Lexus/Scion Workshop Manual Downloader
Download the full workshop manual for your car. Must have a valid TIS
subscription.
Options
--manual -m RM12345 Required. Manual ID(s) to download. Use multiple times for multiple manuals.
For non-electrical manuals, add @YEAR to the end to only download pages for
that year.
--browser-login -b Recommended for 2FA. Opens a browser window where you can manually log in
(including 2FA), then automatically extracts cookies.
--email -e me@example.com Your TIS email. Note: May not work with 2FA enabled. Use --browser-login instead.
--password -p abc1234 Your TIS password. Note: May not work with 2FA enabled. Use --browser-login instead.
--cookie-string -c abc1234 Your TIS cookie string. Advanced option - if you manually extracted cookies from browser.
--headed -h Run in headed mode (show the emulated browser during downloads).
--help Print this usage guide.
- Browser login (--browser-login): The recommended method if you have 2FA enabled. Opens a browser window, lets you log in manually, then automatically extracts and uses your session cookies. Your session will be preserved, so you can continue using TIS while the bot downloads manuals.
- Cookie-based authentication (--cookie-string): Advanced option. Copy the value of your Cookie header when visiting a manual page. If you're not sure what this is or how to do it, use --browser-login instead.
- If you're on a POSIX system, consider wrapping your cookie string in single quotes to avoid the shell interpreting it.
- Email/password authentication: Legacy method that may not work if 2FA is enabled on your account.
- Headed mode (--headed): Shows the browser window during the download process. Not required for --browser-login (which always shows the login window).
Questions I think someone might ask, not questions anyone has ever asked before.
You might see a warning like the following print out after Logging into TIS...:
(node:94450) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use `node --trace-warnings ...` to show where the warning was created)
Node.js doesn't seem to accept Toyota's SSL certificate, so this is required to stop Axios (which is used for login and downloading EWDs) from failing every request.
All the ones I've tested. Just for fun, I tried:
- 2005 Prius
- 2015 Prius
- 2017 Prius
- 2021 Tacoma
All worked flawlessly!
Long question, short answer-- I copy the cookies from Axios
(which captures them using axios-cookiejar-support and tough-cookie),
then import them into Playwright when creating the browser session. See src/index.ts
to see the cookie-copying code.
Since they're the same cookies, Toyota sees it as the same session.
You can use your browser's Cookie header to log in instead of your email and password, but only do that if you know what that means. See the command-line options for more info.
I wanted to have the manual for my car, and I bought the subscription hoping to download a PDF, so that's exactly what I did!
I saw (and took heavy inspiration from) other projects on GitHub, especially threadproc/tis-rip.
However, no other downloader put the manual pages in a tree-like directory structure, tis-rip required chrome-driver, which can be inconvenient.
This downloader also works fully headlessly, and you're required to manually log in when using tis-rip.
Yeah, this was a quick weekend project. Feel free to make it better, though!
Two reasons. Firstly, I don't want to DDoS Toyota. Secondly, it was easier to code synchronously as the function for fetching and saving pages is recursive, meaning I'd actually have to think to parallelize it.
No, but a lot of the code is shared and similar. Unlike Ford, Toyota actually seems to require session cookies to download manual pages, so getting HTML files with non-embedded images isn't very helpful. This downloader PDFs every page before saving.