
Who ipatool is for#
iOS security researchers analyzing app binaries
Security researchers use ipatool to download specific app versions for static analysis, reverse engineering, and vulnerability research. The `list-versions` and `download --external-version-id` commands let researchers pull a known build directly rather than relying on third-party archive sources.
Skip if:
Skip if your workflow requires the decrypted binary rather than the encrypted IPA. ipatool downloads the package as Apple distributes it; decryption requires a separate process outside this tool.
Mobile QA engineers running regression tests against App Store builds
QA teams script ipatool in CI pipelines to pull specific App Store builds for regression testing against real artifacts. The `--non-interactive` flag and JSON output make integration into GitHub Actions or other automated test runners straightforward.
Skip if:
Skip if your regression tests can use simulator builds from Xcode instead. ipatool is most valuable when you specifically need the App Store-signed, distributed artifact rather than a local build.
Developers archiving their own App Store release history
Developers and publishers who want a local archive of every version they have shipped can script ipatool to pull each released IPA after submission. Combined with `list-versions`, this creates a reproducible record of all distributed builds without relying on App Store Connect retention.
Skip if:
Skip if you already archive builds through your CI system at submission time. ipatool is an alternative archive path for teams that did not set up archival when the builds originally shipped.
Enterprise security teams auditing third-party iOS apps
Enterprise security teams auditing third-party apps installed by employees can use ipatool to obtain IPA files for static analysis in mobile application security testing workflows. The cross-platform binary works on Linux-based analysis infrastructure without needing a Mac in the chain.
Skip if:
Skip if you need to audit apps distributed outside the public App Store, such as enterprise-distributed apps. ipatool works only with App Store-listed apps accessible to a standard Apple ID.
The problem it solves#
Accessing specific IPA files from the Apple App Store without a Mac and Xcode is harder than it should be. Security researchers who need to pull a prior app version for vulnerability analysis, QA engineers who want to test a specific App Store build in a regression suite, and developers building CI pipelines around app artifacts all face the same bottleneck: Apple's official tooling assumes a physical device or macOS with Xcode in the loop.
Most teams end up buying a paid desktop tool designed primarily for device management, or manually working through workflows that Apple has repeatedly deprecated and changed. Neither approach works cleanly in headless or automated environments. A scriptable, cross-platform interface to the App Store's IPA download mechanism has been missing from the open source toolkit.
How it solves it#
App Store search across iOS, iPadOS, tvOS, and visionOS
Search for apps by keyword on any Apple platform from the command line. The `--platform` flag selects iphone, ipad, appletv, or visionos; the `--limit` flag controls how many results to return, up to 12 for visionOS. Results include bundle identifier and app ID, which feed directly into the download step.
Version-specific IPA download
List all available versions of an app with `list-versions`, then target a specific build using its external version identifier with `download --external-version-id`. This lets security researchers and QA teams retrieve older releases for regression testing or vulnerability analysis, not just the current App Store version.
JSON output for shell scripting
Every command outputs plain text by default and switches to machine-readable JSON with `--format json`. This makes it straightforward to pipe ipatool into jq, Python, or any shell script that processes bundle identifiers, app IDs, version lists, or download paths programmatically.
Non-interactive mode for CI pipelines
The `--non-interactive` flag disables all prompts, so ipatool runs cleanly in Docker containers, GitHub Actions runners, and other headless automation environments. Credentials are stored in a keychain with an optional `--keychain-passphrase` flag for secure automated unlocking.
Cross-platform single binary
Runs on Windows, Linux, and macOS with no runtime dependencies beyond the binary itself. Install via Homebrew on macOS or compile from source with the Go toolchain using `go build -o ipatool`. No Xcode, no Mac, and no GUI framework required.
Strengths and trade-offs#
Strengths
- MIT license with no per-seat costThe MIT license means you can use, modify, and redistribute ipatool in commercial workflows or internal tooling without restriction. Unlike iMazing and similar proprietary tools, there is no subscription, no license expiration, and no per-seat fee. You pay only for the server or workstation running the binary.
- Over 10,000 GitHub stars and actively maintainedWith more than 10,000 stars, 886 forks, and a last push in August 2026, ipatool has a large following for a focused CLI tool and tracks App Store API changes across iOS, iPadOS, tvOS, and visionOS as Apple's platform landscape evolves.
- Cross-platform IPA access without Apple hardwareMost IPA download methods require a Mac. ipatool runs on Linux and Windows too, which means security researchers and CI systems on non-Apple infrastructure can pull App Store IPA files without any Apple device or macOS in the pipeline.
- Structured metadata suited for automationEvery command exposes app IDs, bundle identifiers, external version identifiers, and purchase dates in a consistent format. Combined with JSON output, this makes ipatool a composable building block for larger automation workflows rather than a one-off download helper.
Trade-offs
- -Requires a valid Apple ID with App Store accessipatool authenticates as a real Apple ID user. You can only download apps your account has purchased or obtained a license for via the `purchase` command. Automated or high-frequency use carries risk of Apple challenging or restricting the account, so heavy pipeline use should be tested carefully against Apple's Terms of Service.
- -Downloads Apple-encrypted IPA files onlyThe README explicitly describes downloads as '(encrypted)'. ipatool retrieves the IPA package exactly as the App Store distributes it, with Apple's encryption intact. Security research workflows that require inspecting the decrypted app binary need a separate decryption step; ipatool does not handle this.
- -No device management or file transfer capabilitiesipatool is limited to App Store search, license acquisition, and IPA download. It does not support device backups, file transfer to and from devices, contacts management, or message export. Teams that need full iOS device management alongside IPA access must use a separate tool.
ipatool vs alternatives#
ipatool vs iMazing
iMazing is a paid desktop application for managing iOS devices and downloading IPA files from the App Store. ipatool covers the IPA download and search subset of that functionality from the command line, on any operating system.
| Feature | ipatool | iMazing |
|---|---|---|
| License | MIT | Proprietary |
| Price | Free | Paid commercial license |
| Platform | Windows, Linux, macOS | macOS, Windows |
| Interface | CLI | GUI |
| App Store search | Yes | Yes |
| IPA download | Yes | Yes |
| Version-specific download | Yes (by version ID) | Yes |
| Device backup | No | Yes |
| Device file transfer | No | Yes |
| Contacts and messages | No | Yes |
| Scriptable for CI | Yes | No |
ipatool is the better choice when IPA access is the specific requirement and the environment is headless or non-macOS. A Linux CI runner pulling app builds for security analysis, a QA pipeline scripting version-specific downloads, or a researcher archiving App Store history all benefit from ipatool's automation-first design. The MIT license means no license costs, no per-seat fees, and no expiration.
iMazing is worth considering when you need full device management from a desktop GUI. It excels at iOS device backups, contacts export, message archival, and file transfer to and from the device filesystem. For a developer or IT administrator managing multiple devices on macOS, iMazing's GUI and device management capabilities extend well beyond what ipatool offers. If IPA download is one of several device management tasks you need from a single desktop tool, iMazing is the more complete commercial option.
Install and self-host#
Install ipatool on macOS via Homebrew, or compile from source using the Go toolchain on any supported platform.
```bash
brew install ipatool
```What it's built on#
- Languages
- GoSwift
FAQ#
Does ipatool work on Linux and Windows, or only macOS?
ipatool runs on Windows, Linux, and macOS. It is a stateless Go binary with no Apple platform dependencies. You need a valid Apple ID configured for App Store use, but you do not need a Mac or any Apple hardware. On macOS, install via Homebrew; on Linux and Windows, download a prebuilt binary from the GitHub releases page or compile from source with the Go toolchain.
Can ipatool download any App Store app, or only apps I have purchased?
ipatool can download free apps by first running the purchase command to obtain a license, then running download. For paid apps, the authenticated Apple ID must have already purchased them through the App Store. ipatool automates the download step but cannot bypass payment; it only retrieves apps your account is legitimately entitled to.
Does ipatool download the decrypted IPA?
No. ipatool downloads the IPA exactly as Apple distributes it from the App Store, which is encrypted. The README labels the download command as retrieving '(encrypted)' packages. Security research workflows that require inspecting the decrypted binary need a separate decryption step, typically performed on jailbroken hardware, after the download.
How does ipatool compare to iMazing for downloading IPA files?
Both tools can download IPA files from the App Store, but they differ significantly in scope and environment. ipatool is a free, MIT-licensed CLI that runs on Windows, Linux, and macOS and works without a GUI, making it well suited for automation and CI pipelines. iMazing is a paid desktop application that pairs IPA download with broader iOS device management features including backups, file transfer, and message export. For headless or scripted IPA access, ipatool is the better fit; for GUI-based device management alongside IPA downloads, iMazing covers more ground.
Can ipatool download a specific older version of an app, not just the latest?
Yes. Run list-versions with the app's ID or bundle identifier to retrieve all available versions and their external version identifiers. Then pass the specific identifier to download --external-version-id to retrieve that exact build. This version-selection capability is one of ipatool's primary use cases for security research and regression testing.
Similar open-source tools#
hysteria
Fast and censorship-resistant proxy solution
vphone-cli
Virtual iPhone on Apple Silicon, self-hosted and MIT licensed
Doberman-Core
Runtime guardrails that gate every AI agent tool call
tailcat
Encrypted tunnels between machines, no account or IP needed
airstats
Sixteen macOS metrics in your menu bar at 0.046% CPU
hister
Private full-text search for your pages and files

