# ipatool Cross-Platform Downloads: Supported Platforms for iOS, iPadOS, tvOS, visionOS, and macOS

> Download apps across all Apple platforms with ipatool. Get IPA files for iOS, iPadOS, tvOS, visionOS, and macOS easily.

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

---

**ipatool supports cross-platform downloads for every platform the Apple App Store serves, including iOS, iPadOS, tvOS, visionOS, and macOS, with platform constants defined in [`pkg/appstore/platform.go`](https://github.com/majd/ipatool/blob/main/pkg/appstore/platform.go).**

The `majd/ipatool` repository provides a command-line interface for downloading Apple app packages across multiple operating systems. The tool maps user input to specific App Store entities, ensuring the correct package is retrieved for the target device type.

## Supported Platform Constants

The supported platforms are defined in **[`pkg/appstore/platform.go`](https://github.com/majd/ipatool/blob/main/pkg/appstore/platform.go)** as the `Platform` type. The following constants represent each operating system:

- **`PlatformIPhone`**: iPhone (iOS)
- **`PlatformIPad`**: iPad (iPadOS)
- **`PlatformAppleTV`**: Apple TV (tvOS)
- **`PlatformVisionOS`**: Vision OS (visionOS)
- **`PlatformMacOS`**: macOS

The `ParsePlatform` function in the same file maps string aliases to these constants. For example, `"ios"` maps to `PlatformIPhone`, `"tvos"` to `PlatformAppleTV`, and `"mac"` to `PlatformMacOS`.

## How Platform Selection Works

When you run the **download** command, ipatool processes the `--platform` flag value in [`cmd/download.go`](https://github.com/majd/ipatool/blob/main/cmd/download.go) (lines 38‑44). The `ParsePlatform` function converts the input string into the appropriate `Platform` constant, which determines which App Store entity the tool queries:

- `software` for iOS apps
- `iPadSoftware` for iPadOS apps
- `tvSoftware` for tvOS apps
- `xrosSoftware` for visionOS apps
- `macSoftware` for macOS apps

This mapping ensures that ipatool requests the correct package format and metadata endpoint for the specified device type.

## Command Examples for Each Platform

Use the `--platform` flag with the appropriate alias to download apps for specific operating systems:

```bash

# Download an iOS app (iPhone)

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

# Download an iPadOS app

ipatool download --bundle-identifier com.example.myapp \
    --output MyApp.iPA --platform ipad

# Download a tvOS app

ipatool download --app-id 987654321 --output MyApp.tvOS.zip \
    --platform appletv

# Download a visionOS app

ipatool download --bundle-identifier com.example.visionapp \
    --output VisionApp.pkg --platform visionos

# Download a macOS app bundle

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

```

Each command passes the platform identifier to the CLI, which forwards the parsed `Platform` value to the App Store client in [`pkg/appstore/appstore.go`](https://github.com/majd/ipatool/blob/main/pkg/appstore/appstore.go). Include the `--purchase` flag to acquire a license when required.

## Summary

- **ipatool** supports cross-platform downloads for **iOS**, **iPadOS**, **tvOS**, **visionOS**, and **macOS**.
- Platform constants are defined in [`pkg/appstore/platform.go`](https://github.com/majd/ipatool/blob/main/pkg/appstore/platform.go) as `PlatformIPhone`, `PlatformIPad`, `PlatformAppleTV`, `PlatformVisionOS`, and `PlatformMacOS`.
- The `ParsePlatform` function handles alias mapping for the `--platform` flag values.
- [`cmd/download.go`](https://github.com/majd/ipatool/blob/main/cmd/download.go) binds the flag and initiates the download workflow for the selected platform.
- Each platform maps to a specific App Store entity (`software`, `iPadSoftware`, `tvSoftware`, `xrosSoftware`, `macSoftware`) to retrieve the correct package.

## Frequently Asked Questions

### Which platforms does ipatool support for cross-platform downloads?

ipatool supports downloads for **iOS** (iPhone), **iPadOS** (iPad), **tvOS** (Apple TV), **visionOS** (Apple Vision Pro), and **macOS** (Mac). These five platforms cover every major operating system served by the Apple App Store, as defined by the `Platform` type in [`pkg/appstore/platform.go`](https://github.com/majd/ipatool/blob/main/pkg/appstore/platform.go).

### How does ipatool map the --platform flag to App Store entities?

The `ParsePlatform` function in [`pkg/appstore/platform.go`](https://github.com/majd/ipatool/blob/main/pkg/appstore/platform.go) converts the string value from the `--platform` flag into a typed `Platform` constant. This constant determines whether ipatool queries the `software`, `iPadSoftware`, `tvSoftware`, `xrosSoftware`, or `macSoftware` endpoint, ensuring the retrieved package matches the target device architecture.

### What string aliases can I use with the --platform flag?

You can use aliases such as `"ios"` for iPhone, `"ipad"` for iPad, `"appletv"` or `"tvos"` for Apple TV, `"visionos"` for Vision OS, and `"mac"` or `"macos"` for macOS. The `ParsePlatform` function normalizes these inputs to their respective `Platform` constants before executing the download.

### Can ipatool download visionOS apps for Apple Vision Pro?

Yes. Specify `--platform visionos` when running the download command. ipatool will query the `xrosSoftware` entity to retrieve the correct package format for visionOS devices, according to the platform mapping implemented in [`pkg/appstore/appstore.go`](https://github.com/majd/ipatool/blob/main/pkg/appstore/appstore.go).