explaingit

majd/ipatool

9,229GoAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

A command-line tool written in Go that lets you search the Apple App Store and download iOS app IPA files directly to your computer, without needing Xcode or Apple developer tools.

Mindmap

mindmap
  root((ipatool))
    What it does
      Search App Store
      Download IPA files
      List app versions
      Obtain app licenses
    Commands
      auth login
      search keyword
      purchase license
      download app
    Tech stack
      Go binary
      Homebrew install
    Use cases
      App archiving
      CI automation
      Version testing
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Download a specific older version of an iOS app for compatibility testing or archiving.

USE CASE 2

Automate App Store downloads in a CI pipeline using non-interactive mode with JSON output.

USE CASE 3

Search the App Store by keyword from the terminal to find app bundle IDs for automation scripts.

Tech stack

GoHomebrew

Getting it running

Difficulty · easy Time to first run · 5min

Requires an Apple ID, a license step must be completed even for free apps before the download command will work.

Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

ipatool is a command-line tool for searching and downloading iOS app packages from the Apple App Store. An IPA file is the package format Apple uses for iPhone and iPad applications. This tool lets you retrieve those files directly to your computer without going through Xcode or Apple's developer tools. To use it, you log in with your Apple ID using an auth command. From there you can search the App Store by keyword, look up available versions of a specific app, obtain a license for an app (required even for free apps before downloading), and download the IPA file to a local path. The download command accepts either an App Store numeric app ID or a bundle identifier, which is the reverse-domain name Apple assigns to each app internally. You can download the latest version or choose a specific older version from the list of available releases. The tool runs interactively by default, prompting for credentials and confirmations when needed. A non-interactive flag switches it to a mode suitable for automated scripts and CI pipelines. Output can be formatted as plain text or as JSON. It is written in Go and runs on macOS, Linux, and Windows. On macOS it can be installed through Homebrew, on other platforms you download a binary from the releases page. The source can also be compiled with the standard Go toolchain. The README documents the commands and their flags in detail but does not describe specific intended use cases. The project is open source under the MIT license.

Copy-paste prompts

Prompt 1
Write a bash script that uses ipatool to log in with an Apple ID, look up available versions of an app by bundle ID, and download a specific version.
Prompt 2
How do I run ipatool in a non-interactive CI pipeline and parse the JSON output to get the downloaded file path?
Prompt 3
Show me the full sequence of ipatool commands to authenticate, search for an app, obtain a license, and download the IPA.
Prompt 4
Install ipatool via Homebrew and download the latest version of an app using its App Store numeric ID.
Open on GitHub → Explain another repo

← majd on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.