👉 ipatool is an open-source tool developed by Majd, a highly trustworthy and talented developer in the iOS community. Recently, ipatool got a significant update that allows users to easily download older versions of iOS apps on macOS/Windows/Linux!.
👉 Since ipatool doesn't have a graphical user interface (GUI), some of you might think it's tricky to use. But trust me, it's not! Here's a simple guide if you're still a bit scared of the terminal. (Tbh, everything in this *guide can be found on ipatool's repo)
👉 Note: You need to log into your Apple ID via ipatool for the tool to work. Unless you prioritize security above all, you can trust logging into your Apple account with ipatool. As explained earlier, it’s an open-source tool developed by a well-known and reliable developer, minimizing security risks to the lowest level.
- Method 1: You can get the Build Number of most apps on the App Store from ipafilezone or Appstore.bilin (backup).
- Method 2: Ask a jailbroken user who has AppStore++ installed to get the
Build version numberfor you. - If you still can't find the Build Number, see this.
- Grab the ipatool binary from ipatool realeases. Use
...windows-arm64.tar.gzfor ARM Windows,...windows-amd64.tar.gzfor x86 Windows. - Unzip.
-
Open Command Prompt (search "cmd" in Start menu) or PowerShell.
-
Drag & drop the extracted ipatool binary into the Command Prompt or PowerShell window. Then, run:
/path/to/ipatool.exe auth login --email [email protected] -
Enter your Apple Account password and 2FA code when prompted (your password won't be displayed, just type it normally).
-
Enter your PC password (passphrase) when prompted. If you do not set a password for your computer, press Enter to skip.
- ipatool should respond with something like:
INF [email protected] name="Your Name" success=true
- Get the app's bundle ID (com.abc.xyz):
/path/to/ipatool.exe search Yourapp
- Combine with the prepared Build Number, we can now download the exact version we want. Note that if you don't specify the
--external-version-idflag, ipatool will simply download the latest version available.
💻 /path/to/ipatool.exe download -b [app's bundle ID] --external-version-id [Build Number]
- That's it! The IPA is saved in your Home folder.
- Example: Download YouTube (com.google.ios.youtube) version 20.16.7(874149063)
💻 ipatool download -b com.google.ios.youtube --external-version-id 874149063
-
Install Homebrew (if not installed):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
Use Homebrew to install ipatool:
brew install ipatool -
Now you can call ipatool directly in the Terminal window.
- Grab the ipatool binary from ipatool realeases. Use
...macos-arm64.tar.gzfor Apple silicon Mac,...macos-amd64.tar.gzfor Intel Mac. - Unzip.
- Drag & drop the binary into the Terminal.
-
In Terminal, run:
ipatool auth login --email [email protected] -
Enter your password and 2FA code when prompted (your password won't be displayed, just type it normally).
-
If ipatool responds with
INF [email protected] name="Your Name" success=true, then you're good to go. -
You also will be prompted to enter your device’s password to allow ipatool to access the keychain (Select Always Allow).
-
Get the app's bundle ID (com.abc.xyz):
ipatool search Yourapp
-
Combine with the prepared Build Number, we can now download the exact version we want. Note that if you don't specify the
--external-version-idflag, ipatool will simply download the latest version available.
💻 ipatool download -b [app's bundle ID] --external-version-id [Build Number]
-
Example: Download YouTube (com.google.ios.youtube) version 20.16.7(874149063)
💻 ipatool download -b com.google.ios.youtube --external-version-id 874149063
(Don't think a Linux user has to read this guide)
- Check out this step on my old guide.





So at least for the app I tested, iMPlayer, it has different versions between tvOS and iOS/iPadOS. Even though it's the same App ID. I am assuming it depends on how the developer publishes them to the app store or maybe like that for all apps? Either way, for ones like that the iOS version of the IPA that IPATool pulls as the latest won't include the tvOS versions in that array.
I know in IPATool I can edit the code to search for the tvOS version by adding it as an entity type in the search api call, but that doesn't return the version id, just the user friendly version, and I haven't found a way to use the list versions api to list it.
I did make my own version of IPATool in python with a web ui for interacting with to bypass the need for ProxyMan though since the only reason you needed that was IPATool doesn't display the versions array by default when fetching the metadata of a specific one, even though it is returned, and having my own interface fixes that. I didn't feel like trying to edit the GO to do that as I'm not as familiar. May publish it to my github later if I can polish some things up. It allows you to just grab the tvOS version from iMazing connected to your atv, then fetch the versions using that version as a search parameter, and then you have all of the atv versions.