What Platforms Does IPATool Support for App Downloads?

IPATool supports downloading application packages for five Apple platforms: iPhone (iOS), iPad (iPadOS), Apple TV (tvOS), Vision Pro (visionOS), and macOS.

IPATool is a command-line utility and Go library authored by Majd Alfhaily for retrieving application packages directly from the Apple App Store. Understanding what platforms IPATool supports is essential for developers, security researchers, and automation engineers targeting specific Apple ecosystems. This article examines the platform support defined in the majd/ipatool repository, referencing the specific source files that implement this functionality.

Supported Platforms

IPATool can retrieve and download apps for the following five platforms, each corresponding to a specific Apple device family or operating system:

  • iPhone (iOS) - Standard iOS applications distributed as .ipa files for iPhone devices.
  • iPad (iPadOS) - Applications optimized for iPad devices, utilizing the iPadOS ecosystem.
  • Apple TV (tvOS) - Apps designed specifically for the Apple TV platform.
  • Vision Pro (visionOS) - Applications built for Apple’s mixed-reality headset.
  • macOS - Desktop applications packaged as .pkg files rather than .ipa archives.

These platforms are explicitly defined in the project documentation and implemented in the core source code, allowing users to target specific device families when downloading packages.

Platform Implementation in the Source Code

According to the majd/ipatool source code, platform support is centralized in pkg/appstore/platform.go. This file defines the Platform type and enumeration constants that represent each supported operating system. The available platforms map to the following CLI values: iphone, ipad, appletv, visionos, and macos.

The download workflow relies on two additional key files:

  • cmd/download.go - Implements the CLI command that accepts the --platform flag and validates user input against supported values.
  • pkg/appstore/appstore_download.go - Contains the core download logic that handles platform-specific packaging requirements, distinguishing between mobile .ipa formats and macOS .pkg formats.

When you specify a platform using the command-line interface, the tool passes this enumeration to the App Store client, ensuring the correct device-family-specific binary is retrieved from Apple’s servers.

How to Download Apps for Specific Platforms

Command Line Interface

You can target specific platforms using the --platform flag with the download command. The tool accepts lowercase identifiers that correspond to the platform enumeration.

Download a macOS application as a .pkg file:

ipatool download \
    --app-id 987654321 \
    --platform macos \
    --output MyApp.pkg

Download an Apple TV (tvOS) application:

ipatool download \
    -i 11223344 \
    --platform appletv \
    -o MyApp.ipa

Download an iPhone (iOS) application (default behavior):

ipatool download \
    --app-id 123456789 \
    --platform iphone \
    --output MyApp.ipa

Go Library Integration

When using IPATool as a Go library, import the appstore package and use the Platform constants defined in pkg/appstore/platform.go. The DownloadOptions struct accepts a Platform field that specifies the target device family.

package main

import (
    "github.com/majd/ipatool/pkg/appstore"
    "log"
)

func main() {
    // Initialize the App Store client
    client := appstore.NewClient()
    
    // Configure download options for iPhone
    opts := appstore.DownloadOptions{
        Platform: appstore.PlatformIPhone, // Target iOS/iPhone
        AppID:    123456789,
        Output:   "MyApp.ipa",
    }
    
    // Execute the download
    if err := client.Download(opts); err != nil {
        log.Fatalf("download failed: %v", err)
    }
}

Summary

  • IPATool supports five Apple platforms: iPhone (iOS), iPad (iPadOS), Apple TV (tvOS), Vision Pro (visionOS), and macOS.
  • Platform definitions reside in pkg/appstore/platform.go, which provides the enumeration used throughout the codebase.
  • The CLI accepts platform selection via the --platform flag using values: iphone, ipad, appletv, visionos, or macos.
  • Download logic in pkg/appstore/appstore_download.go handles platform-specific file formats, returning .ipa files for mobile/vision/tv platforms and .pkg files for macOS.

Frequently Asked Questions

Can IPATool download Android applications?

No, IPATool exclusively supports the Apple App Store ecosystem. The tool interfaces directly with Apple’s App Store APIs and authentication systems, which do not provide access to Android packages. The platform enumeration in pkg/appstore/platform.go contains no Android or Google Play Store references.

What is the difference between the iPhone and iPad platform options?

The iphone and ipad platform values target distinct device families within the App Store. While many apps are universal, specifying ipad ensures retrieval of the tablet-optimized binary when separate builds exist. The cmd/download.go file passes these values to filter App Store results for the specific softwarePlatform attribute.

Does IPATool support visionOS apps for Apple Vision Pro?

Yes, IPATool supports visionOS through the visionos platform value. This allows security researchers and developers to download spatial computing applications distributed for Apple Vision Pro. The implementation treats visionOS similarly to iOS and tvOS, packaging downloaded apps as .ipa files.

What file format does IPATool use when downloading macOS applications?

IPATool downloads macOS applications as .pkg files rather than .ipa archives. This distinction is handled in pkg/appstore/appstore_download.go, where the logic detects the macOS platform and preserves the original installer package format used by the Mac App Store.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →