# What Platforms Does IPATool Support for App Downloads?

> Discover which Apple platforms IPATool supports for app downloads including iOS iPadOS tvOS visionOS and macOS Streamline your app distribution today

- Repository: [Majd/ipatool](https://github.com/majd/ipatool)
- Tags: getting-started
- Published: 2026-09-06

---

**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`](https://github.com/majd/ipatool/blob/main/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`](https://github.com/majd/ipatool/blob/main/cmd/download.go)** - Implements the CLI command that accepts the `--platform` flag and validates user input against supported values.
- **[`pkg/appstore/appstore_download.go`](https://github.com/majd/ipatool/blob/main/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:

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

```

Download an Apple TV (tvOS) application:

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

```

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

```bash
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`](https://github.com/majd/ipatool/blob/main/pkg/appstore/platform.go). The `DownloadOptions` struct accepts a `Platform` field that specifies the target device family.

```go
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`](https://github.com/majd/ipatool/blob/main/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`](https://github.com/majd/ipatool/blob/main/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`](https://github.com/majd/ipatool/blob/main/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`](https://github.com/majd/ipatool/blob/main/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`](https://github.com/majd/ipatool/blob/main/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.