search_store
Search a store the way a shopper would, and read the results.
This is how you see a real SERP: who ranks for a term, in what order, with the titles and taglines they rank with. Results are not limited to extensions this account tracks — any competitor is visible — and, signed in, any result that IS one of yours carries its extension_id, so "where am I, and who is above me" is one call.
locale is a real ranking axis, not a translation of the page. The same term returns a different order, and partly different extensions, under hl=de than under hl=en. Search the market you care about.
Signed in, any row you already track as a competitor carries competitor_of, the ids of the extensions watching it, so you can read a page and see at a glance who is already on a roster and who is new.
Results are cached for a day and fetched in the background. A cold search returns status "pending": call again with the same arguments until it reads "ready". Rows are deliberately thin — call get_store_listing for a description, supported languages, or install counts. To rank rivals rather than read one page, use list_competitors with include_observed: it scores everyone already seen across every term you track, from recorded history, with no fetch at all.
Without an account this answers from cache only: a term nobody has fetched yet returns status "sign_in_required", and calling again will not change that.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Defaults to 1. | |
| term | Yes | e.g. "ad blocker". Squished and lowercased. | |
| store | Yes | ||
| locale | No | Store language: "en", "de", "ru". Defaults to "en". Changes the results, not just the wording. | |
| max_age | No | Accept a cached answer up to this many seconds old. Defaults to a day; never refetches more than once every 15 minutes. | |
| page_size | No | Defaults to 20. |