Skip to content

Instantly share code, notes, and snippets.

@qnblackcat
Last active November 19, 2025 09:38
Show Gist options
  • Select an option

  • Save qnblackcat/4f7b77f685ccda2ff4ef916a27d66107 to your computer and use it in GitHub Desktop.

Select an option

Save qnblackcat/4f7b77f685ccda2ff4ef916a27d66107 to your computer and use it in GitHub Desktop.
Downloading older versions of iOS apps using ipatool

Downloading older versions of iOS apps using ipatool

👉 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.

Obtain the Build Number of the version you want to download

  • 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 number for you.
  • If you still can't find the Build Number, see this.

Windows ⊞

1. Install ipatool

  • Grab the ipatool binary from ipatool realeases. Use ...windows-arm64.tar.gz for ARM Windows, ...windows-amd64.tar.gz for x86 Windows.
  • Unzip.

2. Usage

👉 Step 1: Sign in with your Apple account

  • 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.

1

  • ipatool should respond with something like: INF [email protected] name="Your Name" success=true

👉 Step 2: Run ipatool

  • Get the app's bundle ID (com.abc.xyz): /path/to/ipatool.exe search Yourapp

4

  • 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-id flag, 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.

3

  • Example: Download YouTube (com.google.ios.youtube) version 20.16.7(874149063)

💻 ipatool download -b com.google.ios.youtube --external-version-id 874149063


macOS 

1. Install ipatool

👉 Method 1: Package Manager (Homebrew - recommended)

  • 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.

👉 Method 2: Manual install (not recommended)

  • Grab the ipatool binary from ipatool realeases. Use ...macos-arm64.tar.gz for Apple silicon Mac, ...macos-amd64.tar.gz for Intel Mac.
  • Unzip.
  • Drag & drop the binary into the Terminal.

2. Usage

👉 Step 1: Sign in with your Apple account

  • 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).

CleanShot 16-06at 11 39

  • 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).

👉 Step 2: Run ipatool

  • Get the app's bundle ID (com.abc.xyz): ipatool search Yourapp CleanShot 16-06at 17 35

  • 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-id flag, ipatool will simply download the latest version available.

💻 ipatool download -b [app's bundle ID] --external-version-id [Build Number]

  • That's it! The IPA is saved in your Home folder. CleanShot 16-06at 17 43

  • Example: Download YouTube (com.google.ios.youtube) version 20.16.7(874149063)

💻 ipatool download -b com.google.ios.youtube --external-version-id 874149063

Linux 🐧

(Don't think a Linux user has to read this guide)


Install the IPA


@jschmudd14
Copy link

@jschmudd14 Well, that was impressive.

However, I think there's a better way to do it that won't require another app.

Tbh, I haven't tested it because I don't own an AppleTV, but theoretically it should work.

  1. Download the latest version of the app.
  2. Extract the IPA file.
  3. Inside the extracted IPA, there will be a file named iTunesMetadata.plist. This file contains some metadata of the app, including the app ID (itemId) and the external version ID (softwareVersionExternalIdentifiers).
  4. Now, we can use ipatool to check out every version you want.

Example: Infuse app

Python 2025-10-17 10: 20: 13

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.

@qnblackcat
Copy link
Author

@jschmudd14

That's very promising.

I wish I could help, but it's hard without an AppleTV. Please let me know when you finish it. As far as I know, there's no decent guide on how to get an AppleTV ipa, let alone getting any version of it.

@jschmudd14
Copy link

@jschmudd14

That's very promising.

I wish I could help, but it's hard without an AppleTV. Please let me know when you finish it. As far as I know, there's no decent guide on how to get an AppleTV ipa, let alone getting any version of it.

Here is the link to my rewrite of IPA Tool which has a whole UI, supports tvOS apps, and has instructions for downloading them. As well as makes downloading older versions of any app easier. https://github.com/jschmudd14/pyIPATool-WebUI

@ripzey
Copy link

ripzey commented Oct 23, 2025

Wont let me login to apple id? /path/to/ipatool.exe auth login -—email [email protected] just says The system cannot find the path specified.

@binnichtaktiv
Copy link

Wont let me login to apple id? /path/to/ipatool.exe auth login -—email [email protected] just says The system cannot find the path specified.

you have to replace /path/to/ipatool.exe with the path where you downloaded the exe

@sH1222J
Copy link

sH1222J commented Oct 30, 2025

I followed this step:

Drag & drop the extracted ipatool binary into the Command Prompt or PowerShell window. Then, run: /path/to/ipatool.exe auth login -—email [email protected]

However, when I tried it, I got this error:
2:01AM ERR error="unknown shorthand flag: 'â' in -—email" success=false

It seems that the long dash before --email is actually an incorrect character (probably copied from a formatted text).

Also, I couldn’t proceed to the next step until I included the --password flag as well.
For example:

ipatool auth login --email [email protected] --password abc123
Just sharing this in case others run into the same issue!

@scriptgenerator64
Copy link

Thank you! No longer need to sketchily sideload old versions when an update breaks old functionality!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment