SuperAPI AI Directory

app-store-operator

App Store research for iOS developers: ranked keyword search, competitor download, revenue and rating estimates, and localized In-App Event copy.

Open website

About this tool

Purpose

App Store Operator is an MCP (Model Context Protocol) server designed for AI assistants such as Claude, bringing App Store competitive intelligence directly into AI conversations. The target users are independent iOS developers who want to obtain keyword rankings, competitor download and revenue estimates, or generate in-app event copy ready for use in App Store Connect within the same conversation in which they make decisions, without having to switch to another dashboard or browser tab. The project is free and open source (MIT), positioned as a lightweight alternative to SensorTower, AppTweak, and AppFollow for iOS-specific competitive research.

Main Capabilities

The server exposes four tools, six prompts, and seven resources, all read-only, and does not write to App Store Connect, SensorTower, or any external location, only to local cache files.

  • research_rivals: Finds the top 3 apps for a given keyword and returns a complete metrics report for each competitor, including App Store and SensorTower URLs, global and last-month downloads and revenue, ratings and rating counts, publisher, category, main markets, release date, last update, supported languages, in-app purchases, and ad network status. Results are cached for 24 hours, and querying the same keyword and country again does not consume network requests.
  • search_app_store: Instantly searches the App Store by keyword and returns ranking results in a Markdown table, without requiring SensorTower. Use it to discover which apps rank highly, then combine it with get_app_details to obtain analytics data.
  • get_app_details: Fetches SensorTower analytics data for one or more known app IDs, returning global and last-month downloads and revenue, etc. It is not cached; each call fetches in real time, and each app ID takes about 10–20 seconds.
  • prepare_iae: Generates iOS App Store in-app event (IAE) copy, outputting 3 variants in the target language plus a final report. Each variant includes an event name (≤30 characters), a short description (≤50 characters), and a long description (≤120 characters).

Fields not disclosed by SensorTower orbehind a paywall return N/A, and the server truthfully reports data gaps rather than fabricating them.

How to Use

As an MCP server, it can be connected to Claude Code, Claude Desktop, or OpenAI Codex. Claude Code runs a single install command; Claude Desktop requires adding it to the MCP configuration; Codex stores the MCP server in ~/.codex/config.toml, and that file can also be edited directly. No installation step is required; npx automatically fetches and runs the package.

The server communicates over stdio and is designed to be called by an MCP client. On startup it declares server-level instructions to route tools correctly, and returns an MCP tool error when SensorTower login is required. Two optional environment variables can configure the server process. The repository provides a Dockerfile based on the official Playwright image; the container exposes no ports, and the MCP client points to the container's standard input/output; however, the container has no display, so search_app_store and prepare_iae are available, while the two SensorTower tools cannot open a login window.

Usage examples:

  • Research rivals for "hairstyle" in the GB App Store
  • Search the App Store for "beard style" in France
  • Prepare an in-app event for a summer hairstyle campaign in en-gb

The first run of research_rivals or get_app_details opens a visible Chromium window; this is intentional: SensorTower requires login, and the session is saved to ~/.app-store-operator/profile and reused, so you only need to log in once. If a tool reports not_logged_in, complete the login in that window and run it again. The results of research_rivals are cached in ~/.app-store-operator/cache.json, by default for 24 hours, and this can be overridden via ASO_CACHE_TTL_HOURS.

Applicable Scenarios

  • Independent iOS developers perform keyword ranking and competitor analysis.
  • Estimate competitor downloads and revenue, and understand their market distribution and publisher information.
  • Quickly generate in-app event copy usable in App Store Connect.
  • Complete ASO research workflows within an AI assistant conversation, instead of switching between multiple browser tabs.

Limitations

  • Only iOS is supported; Google Play or Android are not covered.
  • All tools are read-only and do not modify anything in App Store Connect or SensorTower.
  • research_rivals always returns the top 3 results; when a broader range is needed, use search_app_store instead (up to 25) together with get_app_details.
  • Scraping itself is fragile: the SensorTower dashboard is client-rendered and may change its markup without warning, in which case affected fields return N/A until the selectors are updated; a single app failure will not cause the entire call to fail.
  • The SensorTower free tier determines visible data; values behind the paywall return N/A.
  • research_rivals and get_app_details require a desktop environment and display, and cannot be used in pure SSH or inside a container; the installation package downloads a Playwright Chromium build via postinstall (hundreds of MB), and if that fails it is installed on first use, or you can manually run npx playwright install chromium.

Privacy

App Store Operator runs entirely locally, with no backend, no telemetry, and no analytics; the author does not collect, receive, or store any user or usage information. Locally, only cache.json (cache, expires after 24 hours by default) and profile (a Chromium profile that saves the SensorTower session) are stored. Users enter credentials on SensorTower's own page, and the server never reads or stores passwords. Deleting all data requires no request to the author. Apple and SensorTower are independent third parties, and this project is not affiliated with either.