How to Search for iPadOS Apps with IPATool

Use ipatool search "<query>" --platform ipad to query the Apple App Store specifically for iPadOS applications, where the CLI translates the flag into the iPadSoftware entity and queries Apple's backend accordingly.

IPATool is a command-line interface for interacting with the Apple App Store, enabling developers and security researchers to search for and download iOS and iPadOS applications. When you need to narrow your search to iPad-specific apps, the tool provides a dedicated platform filtering mechanism. Understanding how to use the --platform flag effectively ensures you retrieve only the iPadOS-compatible applications from Apple's catalog.

Using the Search Command with Platform Filtering

The search command in IPATool accepts a --platform flag that restricts queries to specific device types. For iPadOS apps, you specify either ipad or ipados as the flag value.

According to the source code in cmd/search.go, the searchCmd function registers this flag and passes it to the underlying App Store client. If you omit the flag, IPATool defaults to searching both iPhone (software) and iPad (iPadSoftware) entities simultaneously.

Basic syntax:

ipatool search "photo editor" --platform ipad

You can combine this with other flags like --limit to control result count (default is 5 for iPadOS) or --format json for machine-readable output:

ipatool search "game" --platform ipados --limit 10
ipatool --format json search "productivity" --platform ipad

How IPATool Handles iPadOS Search Internally

The platform filtering mechanism involves several coordinated steps across the codebase, from CLI argument parsing to entity-specific API requests.

CLI Flag Parsing in cmd/search.go

The search command implementation in cmd/search.go defines the --platform flag within the searchCmd structure. When executed, the command captures the raw string value (e.g., "ipad") and prepares it for validation.

Platform Normalization in pkg/appstore/platform.go

The raw platform string flows to appstore.ParsePlatform in pkg/appstore/platform.go. This function normalizes input variations like "ipad" or "ipados" into the typed constant PlatformIPad. The Platform enum provides type safety and prevents invalid platform strings from reaching the API layer.

Entity Mapping and API Requests

Once normalized, the platform constant determines the search entity via the Platform.searchEntity() method. For PlatformIPad, this returns the string "iPadSoftware", which matches Apple's internal App Store catalog identifier.

The dependencies.AppStore.Search method (implemented in pkg/appstore/appstore_search.go) constructs the HTTP request payload using this entity string. It sends the query to Apple's search endpoint, specifically requesting results from the iPad software catalog rather than the iPhone or Apple TV databases.

Finally, rootCmd in cmd/root.go configures the logger that outputs the results, displaying app names, bundle identifiers, and version information to the terminal.

Practical Examples for iPadOS App Discovery

Beyond basic queries, you can leverage additional flags to refine iPadOS searches:

  1. Limit results explicitly: The default returns 5 items, but you can request fewer or adjust based on needs (note that visionOS supports up to 12, while iPadOS typically uses 5):

    ipatool search "video editing" --platform ipad --limit 3
  2. JSON output for scripting: When integrating with automation tools, use JSON formatting to parse results programmatically:

    ipatool --format json search "CAD" --platform ipad | jq '.[].name'
  3. Version-specific queries: Combine with other IPATool commands to download discovered apps specifically optimized for iPad dimensions and capabilities.

Summary

  • Use ipatool search "<term>" --platform ipad to filter exclusively for iPadOS applications according to the majd/ipatool source code
  • The flag accepts both "ipad" and "ipados" strings, normalized to PlatformIPad in pkg/appstore/platform.go
  • Internally, the tool maps this to the iPadSoftware entity recognized by Apple's App Store API
  • Omitting --platform searches both iPhone (software) and iPad (iPadSoftware) catalogs simultaneously
  • Results default to 5 items but can be adjusted with the --limit flag

Frequently Asked Questions

What happens if I don't specify the --platform flag?

When you omit the --platform flag, IPATool searches both the iPhone and iPad catalogs by default, using the entities software and iPadSoftware respectively. This returns applications compatible with either platform, which may include iPhone-only apps that run in compatibility mode on iPad.

Can I search for other Apple platforms using the same method?

Yes, the --platform flag supports multiple values including ios (or iphone), tvos, and visionos. The same normalization logic in pkg/appstore/platform.go handles these variants, mapping them to their respective App Store entities like tvSoftware for Apple TV or software for iPhone.

Why does IPATool use entity strings like "iPadSoftware" instead of just "ipad"?

Apple's App Store API requires specific entity identifiers to route queries to the correct catalog database. The searchEntity() method in the platform package abstracts these implementation details, translating user-friendly strings like "ipad" into the backend-specific "iPadSoftware" identifier that Apple's servers recognize.

Is there a limit to how many results IPATool returns for iPadOS searches?

By default, IPATool limits iPadOS searches to 5 results. You can adjust this using the --limit flag, though the behavior varies by platform—visionOS supports up to 12 results, while iPadOS and iOS typically respect the 5-item default or your specified value up to the API maximum.

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 →