Skip to main content
App Store Monitoring searches Google Play and the Apple App Store for app listings that carry a brand name. You give it a term such as Acme. It returns each matching listing with its name, its store and a direct link, so you can review apps that use the brand. In the API reference these endpoints sit under the App Store Search tag. In the dashboard the source is Search by Source → App Store Monitoring. The flow is asynchronous: start a search, poll it until it finishes, then read the listings.

Availability and cost

Availability: the App Store Impersonation plan feature. Not every plan includes it. Manage → Buy more in the dashboard lists the features your plan includes. Plans and quotas explains how plan features work. Cost: no metered allowance. Calls count toward your organization’s per-second rate limit, and every 2xx response to an API-key request uses one unit of your monthly API Calls allowance. A non-2xx response is refunded. Without the feature, or when your license is not active, the four search endpoints (create_, get_, list_ and delete_store_search_request) return 403:
App Store Impersonation has no allowance and no capacity slots, so these endpoints never return the allowance 429 or the capacity 409. A 429 with "message": "Rate limit exceeded" comes from the rate limit or the API Calls allowance. Rate limits explains both.

What a search matches

A search looks for the term in four places, one after another:
  • Google Play’s app search, then a web search of play.google.com/store/apps.
  • The Apple App Store’s app search, then a web search of apps.apple.com.
A listing is kept when the term appears, ignoring case, in the app’s name or description. For web-search hits, the page title or snippet must contain it. Each link is kept once per search.
  • Send the brand as people would see it. The term is matched as plain text, with no operators or wildcards. Acme matches “Acme Wallet” and “ACME Rewards”. acme.com matches only listings that contain acme.com itself.
  • A search runs once. It does not refresh. Start a new search to pick up listings published since, or create a monitor.
1

Start the search

create_store_search_request takes one field, search_term: required, 1 to 255 characters.
The call returns 201 with the search:
Keep the id. is_monitoring, alert_cycle, is_email, is_reporting and report_id are scheduling fields that a search you start here leaves at their defaults.
2

Poll until it finishes

Fetch the search with get_store_search_request until status is finished.
status takes two values:
  • in_progress: still running.
  • finished: done. Read the listings.
There is no failed state. If a store or a web search fails, the search still ends finished, with fewer listings or none. Poll every 10 seconds or slower: each successful poll uses an API call.
3

Read the listings

list_store_search_result returns the listings of one search. Pass the search id as searchrequest.
There is no filter or sort parameter. Listings come ordered by updated_at, newest first, with listings that have no updated_at at the top.

What comes back

The envelope:
  • count: listings the search found, across all pages.
  • next / previous: null at either end. The URLs point at the internal search service, not at client-api.leak.center, so don’t call them. Raise page until next is null.
Each listing:
Parse updated_at as day first: 20/06/2026, 08:42:11 is 20 June 2026. The reference schema labels the field date-time, but the value is not ISO 8601.

Manage searches and listings

Watch the brand continuously

A search runs once. To re-run a brand on a schedule and receive only new listings, create a monitor on the store source. See Create a monitoring rule. A monitor on this source needs the same App Store Impersonation plan feature. Quick search also runs this source for domain and brand searches. It searches a domain without its top-level domain, so acme.com is searched as acme. On a plan without the feature, quick search reports this source as not_entitled. To find look-alike domains rather than apps, see Domain monitoring.

Errors

Errors lists every error the API returns.

Endpoints