ipatool

repository·main·Indexed 26 days ago

https://github.com/majd/ipatool

A command-line tool for searching the App Store and downloading encrypted iOS and tvOS app packages (.ipa files). It provides functionality to authenticate with an Apple ID, search for apps by term, obtain app licenses, list available versions, and retrieve version metadata.

Tokens
2.7K
Snippets
7
Records
34
Agent score
92%

What's inside ipatool

  1. Install ipatool

    main

    You can install ipatool using Homebrew on macOS or by downloading the latest binary manually from the GitHub releases page.

    Requirements

    • A supported operating system (Windows, Linux, or macOS).
    • An Apple ID configured to use the App Store.
    $ brew install ipatool
  2. Authenticate with the App Store

    main

    Use the auth command to manage your App Store credentials. This is required to search for and download apps.

    Commands:

    • login: Login to the App Store.
    • info: Show current account info.
    • revoke: Revoke your App Store credentials.

    Global Flags:

    • --format <format>: Set output format to text or json (default: text).
    • --non-interactive: Run in non-interactive session.
    • --verbose: Enable verbose logs.
  3. Obtain a license for an app

    main

    Use the purchase command to obtain a license for a specific app from the App Store.

    Flags:

    • -b, --bundle-identifier <string>: Bundle identifier of the target iOS app (required).
  4. Search for apps on the App Store

    main

    Use the search command to find iOS and tvOS apps by a search term.

    Flags:

    • -l, --limit <int>: Maximum amount of search results to retrieve (default: 5).
    • --platform <string>: Platform to search: iphone, ipad, or appletv.
  5. Get version metadata

    main

    Use the get-version-metadata command to retrieve metadata for a specific version of an app using its external version identifier (returned by list-versions).

    Flags:

    • -i, --app-id <int>: ID of the target iOS app (required).
    • -b, --bundle-identifier <string>: The bundle identifier of the target iOS app (overrides the app ID).
    • --external-version-id <string>: External version identifier of the target iOS app (required).
  6. Download an app package (IPA)

    main

    Use the download command to download encrypted iOS and tvOS app packages.

    Flags:

    • -i, --app-id <int>: ID of the target iOS app (required).
    • -b, --bundle-identifier <string>: The bundle identifier of the target iOS app (overrides the app ID).
    • --external-version-id <string>: External version identifier (defaults to latest version if not specified).
    • -o, --output <string>: The destination path of the downloaded app package.
    • --platform <string>: Platform to download for: iphone, ipad, or appletv.
    • --purchase: Automatically attempt to obtain a license for the app if needed.
  7. List available app versions

    main

    Use the list-versions command to see which versions of an iOS app are available for download.

    Flags:

    • -i, --app-id <int>: ID of the target iOS app (required).
    • -b, --bundle-identifier <string>: The bundle identifier of the target iOS app (overrides the app ID).
    • --keychain-passphrase <string>: Passphrase for unlocking keychain.
  8. Execute low-level HTTP requests with Do

    main
    If you need to work with standard *http.Request and *http.Response objects directly without the automatic unmarshaling provided by Send, use the Do method. This method uses the client's internal configuration, including the CookieJar and Transport.
  9. Send a Request using the Client interface

    main
    The Client[R] interface provides a Send method to execute high-level requests. It handles payload serialization, header injection, cookie persistence, and automatic unmarshaling of the response into the generic type R based on the ResponseFormat specified in the Request object.