list_keywords
Every search term tracked for one extension, one row per term per store.
status is "pending" until a fetch has landed since the term was tracked, and "scanned" once one has. A "scanned" row with a null position means we searched depth_scanned results and this extension was not among them — that is a real observation, not missing data.
A "pending" row can still carry a position. Removing a keyword stops the tracking but keeps the history, so a term tracked before and added again arrives with its previous result already in place; captured_on says how old that is. Poll until the status reads "scanned" to know the number answers the current tracking.
locale is the store language the term was searched in. The same term ranks differently under hl=de than under hl=en, so two rows sharing a term and a store are two different results.
locales lists every store language this extension tracks, with a keyword count each — start there to work a language at a time. It always reports every language, including when the locale argument narrows the rows to one.
search_volume is Google Ads' average monthly searches for the term, worldwide, in the row's store language. It is web search demand, not searches inside the store, and is the same for both stores. null means not fetched yet, Google has no data, or the term can't be looked up (symbols such as + or %, over 80 characters or 10 words, or a store language without a Google Ads mapping); search_volume_fetched_at says which.
Needs an ExtensionDash account. Without one, find_listing and get_store_listing still read any extension's current store page; sign up at https://extensiondash.com/signup and reconnect using the URL on your /profile page for anything else.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Store language, e.g. "de". Omit for every language. Canonicalised before use, so "DE" and "de" are one keyword and "pt-br" comes back as "pt-BR". | |
| extension_id | Yes | From list_extensions. |