Appfigures
com.appfiguresPublished by appfigures.comOfficial publisherv4.0.0Updated Oct 24, 2026
Access your app analytics, ASO tools, and app market intelligence with Appfigures.
Overview
Appfigures gives an assistant access to app analytics, ASO keyword data, store rankings, reviews and app market intelligence for your tracked apps and the wider
- What you can do
- Search and look up apps, tracked apps and account breakdowns by storefront, source and type; read catalog fields and aggregate market statistics across millions of store products; query numeric metrics datasets grouped by dimensions, country, device and date; read store listings, category ranks, top charts and featured placements; read audience demographics and cross-usage; list, aggregate and reply to or withdraw responses on iOS and Google Play reviews; research organic and paid keywords, tracked ranks, trends, suggestions and advertisers; review Apple Ads campaigns, ad groups, keywords, search terms and performance; list tracked SDKs and fetch reference docs; make raw API requests for uns
- When to use it
- Useful for app developers, ASO and growth teams who want an assistant to pull their Appfigures analytics, keyword rankings, review data and Apple Ads performance, or to size and benchmark app markets from the catalog. Also fits when you need to draft or withdraw review replies from a chat session.
- Requirements
- Remote endpoint at mcp.appfigures.com, or the local CLI package installed with npm (Node.js 22+). An Appfigures account is required; authenticate through the browser login flow or set the APPFIGURES_API_KEY personal access token, which is created in the Appfigures developer settings. Network access to Appfigures is needed.
Installation
In SourceWeft
- Open Appfigures in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/com.appfigures%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"appfigures": {
"type": "http",
"url": "https://mcp.appfigures.com/mcp"
}
}
}README
@appfigures/cli
The Appfigures CLI — query app metrics, reviews, and store data from your terminal.
Try it now without installing:
✨ Four ways to use the power of Appfigures AI
Bring Appfigures into your agent however it's built — as tools it calls, code it writes, a CLI, or over MCP. Whichever you pick, you can do the same things and get the same JSON back.
- 🛠️ Agent tools — your agent calls Appfigures as tools while it runs. AI SDK, OpenAI, LangChain. → Add the tools
- 📦 The client — your agent writes code that queries Appfigures and gets typed data back. → Use the client
- 🖥️ CLI — run Appfigures from a terminal or a sandbox. →
@appfigures/cli - 🔌 MCP — connect Appfigures to Claude, ChatGPT, or Cursor. → Connect the hosted server
Install
Requires Node.js 22+. Works with pnpm and yarn too.
Quick start
Also available as af alias.
Authentication
- Log in yourself.
af auth login --interactiveopens your browser in a guided flow; approve and paste the code back. - Or let your agent guide you. By default,
af auth loginprints an authorization URL — open it, approve, and finish withaf auth login --code <code>using the code shown. An agent can drive this end to end. For unattended use, setAPPFIGURES_API_KEYinstead: create a token at appfigures.com/developers/keys by clicking Create a New Client, then Create Personal Access Token.
Either login saves the token to your OS credential manager (macOS Keychain, Windows Credential Manager, Linux Secret Service). See Environment for APPFIGURES_API_KEY and other overrides.
MCP server
Appfigures runs a hosted Model Context Protocol server at https://mcp.appfigures.com/mcp. Add it to any MCP client that supports remote servers and sign in with your Appfigures account when the client asks. There's nothing to install and no token to manage.
Claude Code. Add it with one command, then run /mcp to sign in:
Claude (web and desktop). Add the URL as a custom connector. See Add a connector that isn't in the directory.
ChatGPT. Add the URL as a custom MCP server with OAuth. See Connecting Appfigures to ChatGPT.
Other clients. Add a remote (Streamable HTTP) server with the same URL. See your client's MCP documentation for where.
The hosted server shares Public Data access and credits with the API and CLI. For request limits and credit costs, see Appfigures API, CLI, and MCP: Access, Limits, and Public Data.
For scripts and headless agents that authenticate with APPFIGURES_API_KEY, run the af commands directly, or use @appfigures/agent-toolkit from code.
af mcp (deprecated)
af mcp runs the same tools as a local stdio server. It's deprecated and will be removed in the next major release. Existing setups keep working until then, but it won't get new MCP features. Move to the hosted server above.
Commands
Apps
Find apps and look up their identity. Other commands take the app IDs these return.
Explorer
Search and analyze the full app catalog: millions of products across Apple, Google Play, Amazon, and other major stores, with 120+ fields spanning identity, storefront and country availability, categories, ratings, release dates, chart ranks, download and revenue estimates, SDK presence, demographics, and related apps.
Metrics
Query numeric datasets across dimensions.
Store
App store presence: listing content, category ranks, top charts, and featured placements.
Audience
Who an app's users are and what else they use. Covers estimated age and gender, plus audience overlap with other apps.
Reviews
Search, summarize, and reply to iOS and Google Play app store reviews.
Keywords
Keyword visibility, rank tracking, and discovery across organic search (App Store, Google Play) and Apple Ads.
Apple Ads
Manage your Apple Ads campaigns, ad groups, keywords, and performance.
Sdks
Look up the SDKs we track.
Docs
Reference docs and guides for specific actions and common tasks.
API
MCP
Auth
Run af <command> --help for arguments, flags, and examples.
Environment
API Reference
Every command with its full argument and flag list. For the one-line overview, see Commands above.
Global flags. All commands accept:
-v, --verbose— Log HTTP requests to stderr. Also set viaAF_VERBOSE=1.-V, --version— Print the CLI version and exit.-h, --help— Show usage for the current command.
Output format. Every command emits a single JSON value on stdout — pipe to jq for filtering. Informational messages, hints, and update notices go to stderr so pipelines stay clean.
af apps search
af apps search <q> [flags]
Find apps by name or publisher. Returns one row per unified app. Default returns Apple and Google listings; pass --all-stores to include other storefronts. To filter apps by estimate values (e.g. apps with >100k downloads last month) use explorer list-products. For estimates broken down by time, country, or storefront, use metrics query with datasets estimates.sales or estimates.revenue.
Options
<q>required string. Search query (app name or publisher).--all-storesboolean, defaultfalse. Include storefronts beyond Apple and Google: Amazon, Windows, Steam, Roku, LG TV, Samsung TV, and others.--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af apps get
af apps get <app-id> [flags]
Get an app's record: basic metadata (name, developer, etc) and, if the user tracks it, what data they can access. Pass a product ID for one storefront; unified app ID for all storefronts together.
Options
<app-id>required integer or string. The app's unified app ID or product ID.--all-storesboolean, defaultfalse. For a unified app ID: include member products across all storefronts (Amazon, Steam, Windows, Roku, etc.). When false,member_productsis restricted to storefronts with app-intelligence coverage (iOS + Google Play). Ignored for product IDs.
Examples
af apps tracked
af apps tracked [flags]
List the apps your Appfigures account tracks.
Options
--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.--qstring. App name to filter by.--filter-apps-by-id(integer or string)[]. Only include data about specific apps, by product ID or unified app ID. Takes precedence over the otherfilterAppsBy*keys when set. Storefront, source, or type filters are better for app sets that can be described by those criteria.--filter-apps-by-storefrontstring[]. Narrow the account's tracked apps to those on these storefronts (e.g. apple:ios, google_play).--filter-apps-by-sourcestring[]. Narrow the account's tracked apps by tracking relationship.--filter-apps-by-typestring[]. Narrow the account's tracked apps to products of these types.
Examples
af apps breakdown
af apps breakdown [flags]
Count your tracked apps by data group (e.g. sales, usage, ranks, reviews, keywords), storefront, monetization model, and source (yours vs tracked competitors), plus the total and earliest release date.
Options
--filter-apps-by-id(integer or string)[]. Only include data about specific apps, by product ID or unified app ID. Takes precedence over the otherfilterAppsBy*keys when set. Storefront, source, or type filters are better for app sets that can be described by those criteria.--filter-apps-by-storefrontstring[]. Narrow the account's tracked apps to those on these storefronts (e.g. apple:ios, google_play).--filter-apps-by-sourcestring[]. Narrow the account's tracked apps by tracking relationship.--filter-apps-by-typestring[]. Narrow the account's tracked apps to products of these types.
Examples
af explorer list-products
af explorer list-products [flags]
Read catalog fields for one app or many. Fields referenced by query or sort come back automatically; pass --extra-fields for more. Use ["match","product_id",<id>] for a single app, or combine filters for population queries (e.g. iOS apps using Firebase with $1M+ US revenue). The 120+ fields span ranks, ratings, download and revenue estimates, SDKs, demographics, and more; query grammar and field list in docs get catalog_playbook.
Options
--queryarray, default[]. Explorer query in JSON array format to select matching catalog Products. Defaults to active Products. Include inactive too: ["match","active",["or",true,false]]. The full field list and query syntax are documented indocs get catalog_playbook.--extra-fieldsstring[]. Additional fields to include beyond those yourqueryorsortalready reference. Find field paths (and which you can read) withexplorer describe-fields.--sortstring. Explorer field name. The full field list is documented indocs get catalog_playbook.--orderstring, defaultdesc. Sort direction.--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.--allow-unscoped-nestedboolean, defaultfalse. Escape hatch for intentionally broad queries. Bypasses the default block on unscoped nested predicates that usually inflate results.
Examples
af explorer aggregate-products
af explorer aggregate-products <fields> [flags]
Aggregate across the full catalog of millions of products across Apple, Google Play, Amazon, and other major stores: counts, averages, min/max, and histograms over any set of matching products. Uses the same query grammar as explorer list-products; returns aggregates, not product records. For market sizing, benchmarking, and segment analysis.
Options
<fields>required string[]. Field+aggregation pairs (e.g.all_rating/stats,storefronts/terms). Aggregations:stats,terms,histogram,date_histogram,cardinality. The full field list is documented indocs get catalog_playbook.--queryarray, default[]. Explorer query in JSON array format to select matching catalog Products. Defaults to active Products. Include inactive too: ["match","active",["or",true,false]]. The full field list and query syntax are documented indocs get catalog_playbook.--allow-unscoped-nestedboolean, defaultfalse. Escape hatch for intentionally broad queries. Bypasses the default block on unscoped nested predicates that usually inflate results.--terms-countinteger, default20. Maximum buckets returned for eachtermsaggregation. Other aggregation types ignore it.--date-histogram-intervalstring. Bucket granularity for eachdate_histogramaggregation. Other aggregation types ignore it.
Examples
af explorer describe-fields
af explorer describe-fields [flags]
List the catalog fields and the current user's access level for each. Search by keyword to find fields. Same field set explorer list-products and explorer aggregate-products accept.
Options
--countinteger, default50. Number of results to return.--pageinteger, default1. Page number.--qstring. Filter bypath,title,description,type.
Examples
af metrics query
af metrics query <dataset> [flags]
Query any numeric dataset for one or more apps. Optionally grouped by up to two dimensions, returned as a nested partition tree, not app records. Independently filterable by country, device type, and date range. filterAppsBy* options narrow the app set (by ID, storefront, source, or type); without one, a query covers every app the account tracks.
Options
<dataset>required string. Dataset to query (e.g. sales.combined_downloads). Seemetrics describe-datasetsfor the full list and which datasets are private data (visible only for apps you own or that were shared).--group-bystring[]. Dimensions to group by. Max 2: the first slot becomes the outer entity type, the second the inner series. Each dimension multiplies the result size.--granularitystring. Time granularity when grouping by date--countinteger. Row cap. With--group-by, top N of the outer entity type by value (earliest N when grouping by date). Without--group-by, single-page preview.--countriesstring[]. Filter to one or more ISO country codes (e.g. US, JP, GB)--device-typestring. Device type--all-timeboolean, defaultfalse. Opt in to the entire history. Without this flag (and withoutstart/end), the query defaults to the last 30 days. Mutually exclusive withstartandend.--filter-apps-by-id(integer or string)[]. Only include data about specific apps, by product ID or unified app ID. Takes precedence over the otherfilterAppsBy*keys when set. Storefront, source, or type filters are better for app sets that can be described by those criteria.--filter-apps-by-storefrontstring[]. Narrow the account's tracked apps to those on these storefronts (e.g. apple:ios, google_play).--filter-apps-by-sourcestring[]. Narrow the account's tracked apps by tracking relationship.--filter-apps-by-typestring[]. Narrow the account's tracked apps to products of these types.--startstring. Start date (YYYY-MM-DD)--endstring. End date (YYYY-MM-DD, defaults to today)
Examples
af metrics describe-datasets
af metrics describe-datasets [flags]
List every numeric dataset metrics query accepts, one row per dataset with its value type and whether it's limited to your own apps.
Options
--countinteger, default50. Number of results to return.--pageinteger, default1. Page number.--qstring. Filter bydataset,value_type,label,description.
Examples
af store app-ranks
af store app-ranks <app-ids> [flags]
Trace rank history for one or more apps across countries, device types, category subtypes, and categories, as time-series positions with day-over-day deltas.
Options
<app-ids>required (integer or string)[]. App identifiers (unified app IDs or product IDs)--countriesstring[]. Country codes to query. Defaults to every country with rank coverage.--granularitystring, defaulthourly. Sampling rate. Hourly gives the freshest data; pass--granularity=dailyfor compact multi-day history.--device-typesstring[], default["handheld"]. Which device types to include; each ranks in its own chart. Add more to widen the response.--subtypesstring[], default["free","paid"]. Which category subtypes to include; each ranks in its own chart. Add more to widen the response.--category-idsinteger[]. Filter response rows to specific category IDs; omit for all. Category IDs come fromstore categories.--startstring. Start date (YYYY-MM-DD)--endstring. End date (YYYY-MM-DD, defaults to today)--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af store top-charts
af store top-charts [flags]
List the top apps in a category chart for a given country and category, with current positions and day-over-day deltas.
Options
--countryrequired string. ISO country code (e.g. US, JP, GB)--category-idrequired integer. Category IDs come fromstore categories.--subtypestring, defaultfree. Category subtype (chart variant within the category).--datestring. Snapshot date (YYYY-MM-DD, defaults to current).--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af store categories
af store categories [flags]
List every store category with its ID. Numeric category IDs required by store app-ranks --category-ids and store top-charts --category-id are available here.
Options
--countinteger, default50. Number of results to return.--pageinteger, default1. Page number.--qstring. Filter byname.--sortstring. Field to sort by. Omit to order by relevance whenqis set, otherwise list order.--orderstring, defaultdesc. Sort direction.--category-idinteger[]. Only return these category IDs.--parent-idinteger. Only include subcategories of this parent category (drill-down by id).--storefrontstring[]. Only include categories from these storefronts (e.g.apple:ios,google_play).--device-typestring[]. Only include categories for these device types (e.g.handheld,tablet).--allboolean, defaultfalse. Include non-rank stores (roku, vizio, etc.). These have categories but no rank data.
Examples
af store featured
af store featured <app-id> [flags]
List featured and editorial placements for an app or storefront product. Request 0 rows for summary stats only.
Options
<app-id>required integer or string. The app's unified app ID or product ID.--countriesstring[]. Countries to include. Omit to query US only, or pass multiple to compare markets. To include every country, set--all-countriesinstead.--all-countriesboolean, defaultfalse. Include every country. Cannot be combined with--countries.--include-rank-trendboolean, defaultfalse. Include per-interval rank_trend for each placement.--sortstring, defaultrelevance. Sort placements by relevance or date.--orderstring, defaultdesc. Sort direction.--startstring. Start date (YYYY-MM-DD)--endstring. End date (YYYY-MM-DD, defaults to today). Spans at most 31 days.--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af store app-listing
af store app-listing <product-id> [flags]
Read the full store listing for one storefront: localized text (name, subtitle, description, release notes) plus screenshots, video, categories, monetization, supported devices, country availability, price, ratings, file size, and age rating. Takes a numeric product ID (one storefront at a time; a unified app has one product per storefront). One locale per request.
Options
<product-id>required integer. Numeric product ID for one storefront. Not a unified app ID. Member product_id values are available fromapps get '<unified-app-id>'.--languagestring. Locale (e.g. en, ja, zh-Hans) for name, subtitle, description, release notes, and screenshots. Defaults to en; falls back to the first available locale when the requested one has no metadata. The response echoes the resolved language.--device-typestring, defaulthandheld. Relevant to Apple apps. Pick handheld for iPhone-specific metadata, tablet for iPad, desktop for Mac, etc.
Examples
af audience demographics
af audience demographics <app-id>
Read an app's audience demographics: the estimated age and gender breakdown.
Options
<app-id>required integer or string. The app's unified app ID or product ID.
Examples
af audience cross-usage
af audience cross-usage <app-id> [flags]
Find the apps that an app's users also use.
Options
<app-id>required integer or string. The app's unified app ID or product ID.--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af reviews list
af reviews list [flags]
Read individual reviews for one or more apps. Returns review text, star rating, country, app version, and your response. Filterable by star rating, date range, country, version, response status, and tracking relationship.
Options
--starsnumber[]. Filter by star rating.--versionsstring[]. Filter by app version. Pass multiple to combine.--countriesstring[]. Filter to one or more ISO country codes (e.g. US, JP, GB).--qstring. Search review title and body. Pass multiple keywords to match any. Case-insensitive; combines with other filters.--response-statusstring. Filter by whether you have responded. Omit to include all reviews.--sortstring. Sort by review date or star rating.--orderstring, defaultdesc. Sort direction.--filter-apps-by-id(integer or string)[]. Only include data about specific apps, by product ID or unified app ID. Takes precedence over the otherfilterAppsBy*keys when set. Storefront, source, or type filters are better for app sets that can be described by those criteria.--filter-apps-by-storefrontstring[]. Narrow the account's tracked apps to those on these storefronts (e.g. apple:ios, google_play).--filter-apps-by-sourcestring[]. Narrow the account's tracked apps by tracking relationship.--filter-apps-by-typestring[]. Narrow the account's tracked apps to products of these types.--startstring. Start date (YYYY-MM-DD)--endstring. End date (YYYY-MM-DD, defaults to today)--countinteger, default10. Number of results to return.--pageinteger, default1. Page number. 1-500.
Examples
af reviews breakdown
af reviews breakdown [flags]
Aggregate review counts for one or more apps, bucketed by dimension. Returns one count per dimension value, plus a global total across the matched set.
Options
--starsnumber[]. Filter by star rating.--versionsstring[]. Filter by app version. Pass multiple to combine.--countriesstring[]. Filter to one or more ISO country codes (e.g. US, JP, GB).--qstring. Search review title and body. Pass multiple keywords to match any. Case-insensitive; combines with other filters.--response-statusstring. Filter by whether you have responded. Omit to include all reviews.--filter-apps-by-id(integer or string)[]. Only include data about specific apps, by product ID or unified app ID. Takes precedence over the otherfilterAppsBy*keys when set. Storefront, source, or type filters are better for app sets that can be described by those criteria.--filter-apps-by-storefrontstring[]. Narrow the account's tracked apps to those on these storefronts (e.g. apple:ios, google_play).--filter-apps-by-sourcestring[]. Narrow the account's tracked apps by tracking relationship.--filter-apps-by-typestring[]. Narrow the account's tracked apps to products of these types.--startstring. Start date (YYYY-MM-DD)--endstring. End date (YYYY-MM-DD, defaults to today)--bystring[]. Limit the response to these dimensions; omit to return all.--topinteger, default20. Maximum values returned per dimension; the rest are summed under__other__.
Examples
af reviews reply
af reviews reply <review-id> [flags]
Post or withdraw a developer response on a specific review. Pass content to post; pass delete: true to withdraw a previously-posted response.
Options
<review-id>required string. Review to act on. Usereview_idfromreviews list.--contentstring. Response text the developer wants to publish.--deleteboolean. Withdraw the previously-posted response on this review. Mutually exclusive withcontent.
Examples
af keywords organic
af keywords organic [flags]
Check the organic keywords one or more apps rank for, with position, popularity, and competitiveness.
Options
--product-idsinteger[]. Product identifiers (numeric, one storefront each).--countriesrequired string[]. One or more ISO country codes (e.g. US, JP, GB). Pass several to compare markets.--device-typestring. Device type--countinteger, default10. Number of results to return (min 10).--pageinteger, default1. Page number.
Examples
af keywords paid
af keywords paid <product-ids> [flags]
List the paid keywords one or more apps run ads on, with impression share and organic rank.
Options
<product-ids>required integer[]. Product identifiers (numeric, one storefront each).--daysinteger, default180. Lookback period in days. Common values: 7, 14, 30, 90, 180, 365.--countriesrequired string[]. One or more ISO country codes (e.g. US, JP, GB). Pass several to compare markets.--device-typesstring[]. Filter by device type. Defaults to handheld.--countinteger, default10. Number of results to return (min 10).--pageinteger, default1. Page number.
Examples
af keywords tracked-ranks
af keywords tracked-ranks <product-id> [flags]
View where all your tracked keywords rank for a single app+country combo, with each keyword's current position, movement since it last changed, starting position, popularity, and competitiveness.
Options
<product-id>required integer. Numeric product ID for one storefront. Not a unified app ID. Member product_id values are available fromapps get '<unified-app-id>'.--countryrequired string. ISO country code (e.g. US, JP, GB)--device-typestring. Device to read ranks for. Omit to use the store default.--countinteger, default10. Number of results to return (min 10).--pageinteger, default1. Page number.--sortstring. Field to order results by.--orderstring, defaultdesc. Sort direction.--startstring. Start of the window (YYYY-MM-DD). Omit the range for the last 7 days; the rank on the start date is the starting-position baseline.--endstring. End of the window (YYYY-MM-DD, defaults to today). Spans at most 31 days.--keyword-termstring. Only include tracked keywords whose term contains this text.--min-positioninteger. Best rank to include (1 = top).--max-positioninteger. Worst rank to include.--min-popularityinteger. Lowest popularity to include (0-100).--max-popularityinteger. Highest popularity to include (0-100).--min-competitivenessinteger. Lowest competitiveness to include (0-100).--max-competitivenessinteger. Highest competitiveness to include (0-100).
Examples
af keywords tracked-trend
af keywords tracked-trend <keyword-id> [flags]
Trace how one tracked keyword's rank changes over time for a single app+country combo. Each point gives the rank and how many positions it moved since the one before.
Options
<keyword-id>required string. The keyword to trace. Must be tracked for this app and country; its opaque id comes fromkeywords tracked-ranksorkeywords tracked.--product-idrequired integer. Numeric product ID for one storefront. Not a unified app ID. Member product_id values are available fromapps get '<unified-app-id>'.--countryrequired string. ISO country code (e.g. US, JP, GB)--device-typestring. Device to read ranks for. Omit to use the store default.--granularitystring, defaultdaily. Sampling rate.--startstring. Start of the window (YYYY-MM-DD). Omit the range for the last 7 days.--endstring. End of the window (YYYY-MM-DD, defaults to today). Spans at most 14 days for hourly granularity, 31 for daily.
Examples
af keywords suggestions
af keywords suggestions <product-id> [flags]
Discover keyword ideas to consider targeting for a single app+country combo, ranked by relevance to the app and including some drawn from apps you compete with. Each comes with its popularity, competitiveness, and the app's current rank.
Options
<product-id>required integer. Numeric product ID for one storefront. Not a unified app ID. Member product_id values are available fromapps get '<unified-app-id>'.--countryrequired string. ISO country code (e.g. US, JP, GB)--device-typestring. Device to read ranks for. Omit to use the store default.--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af keywords ranking-apps
af keywords ranking-apps <keyword-term> [flags]
List the apps ranking for a specific keyword in organic search, plus the keyword's own popularity and competitiveness scores.
Options
<keyword-term>required string. Keyword to look up.--countryrequired string. ISO country code (e.g. US, JP, GB)--storefrontrequired string. App store platform (e.g. apple:ios, google_play, amazon_appstore, steam, windows10, apple:mac, apple:tv, apple:imessage, or another supported storefront).--device-typestring. Device type--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af keywords advertisers
af keywords advertisers <keyword-term> [flags]
List the apps advertising on a specific keyword, with each advertiser's impression share, organic rank, and how long they've been bidding.
Options
<keyword-term>required string. Keyword to look up advertisers for--daysinteger, default180. Lookback period in days. Common values: 7, 14, 30, 90, 180, 365.--countryrequired string. ISO country code (e.g. US, JP, GB)--device-typestring. Device type--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af keywords related
af keywords related <keyword-term> [flags]
Find keywords related to a seed term for ASO research. Useful for finding alternatives with a similar audience that are more popular or less competitive.
Options
<keyword-term>required string. Seed keyword to find related terms for.--countryrequired string. ISO country code (e.g. US, JP, GB)--storefrontrequired string. App store platform (e.g. apple:ios, google_play, amazon_appstore, steam, windows10, apple:mac, apple:tv, apple:imessage, or another supported storefront).--device-typestring. Device type--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af keywords tracked
af keywords tracked [flags]
List tracked keywords with their opaque IDs.
Options
--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.--qstring. Filter bykeyword_term.--sortstring. Field to sort by. Omit to order by relevance whenqis set, otherwise list order.--orderstring, defaultdesc. Sort direction.--include-relationshipsboolean, defaultfalse. Include per-(product, country) tracking detail and sync state on each row. Off by default; adds a nested block per tracked (product, country) pair.
Examples
af keywords track
af keywords track <keyword-term> [flags]
Track a keyword to monitor your app's hourly rank for it over time and get automatic alerts when its position moves.
Options
<keyword-term>required string. Keyword to start tracking--product-idrequired integer. Product ID of the app to track the keyword for--countryrequired string. ISO country code (e.g. US, JP, GB)
Examples
af keywords untrack
af keywords untrack <keyword-id>
Stop tracking a keyword.
Options
<keyword-id>required string. Identifier of a tracked keyword row (returned bykeywords tracked). Not the keyword text.
Examples
af apple-ads organizations
af apple-ads organizations [flags]
List the Apple Ads organizations you manage campaigns in, with each one's currency and timezone.
Options
--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af apple-ads campaigns
af apple-ads campaigns [flags]
List your Apple Ads campaigns with each one's status, budget, targeted countries, and schedule.
Options
--display-statusstring. Filter to campaigns in one status. Omit to include all statuses.--namestring. Filter to campaigns whose name contains this text.--countriesstring[]. Filter to campaigns targeting any of these countries.--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af apple-ads ad-groups
af apple-ads ad-groups [campaign-id] [flags]
List Apple Ads ad groups with each one's default bid, CPA cap, pricing model, and schedule.
Options
[campaign-id]string. Scope to ad groups in one campaign.--display-statusstring. Filter to ad groups in one status. Omit to include all statuses.--namestring. Filter to ad groups whose name contains this substring.--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af apple-ads keywords
af apple-ads keywords <campaign-id> [flags]
List a campaign's bid keywords with each keyword's performance (impressions, taps, installs, spend, cost-per-install) over a date range, plus its match type, bid, and whether it's a targeting or negative term.
Options
<campaign-id>required string. Campaign whose bid keywords to list.--ad-group-idstring. Filter to keywords in one ad group.--statusstring. Filter to keywords in one status. Omit to include all statuses.--match-typestring. Filter to one match type. Omit to include both.--namestring. Filter to keywords whose text contains this substring.--sortstring. Order keywords by a performance metric or the bid. Omit for newest first.--orderstring, defaultdesc. Sort direction.--startstring. Start date (YYYY-MM-DD)--endstring. End date (YYYY-MM-DD, defaults to today)--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af apple-ads search-terms
af apple-ads search-terms <campaign-id> [flags]
List the actual user search terms that triggered a campaign's ads, each with its all-time performance (impressions, taps, installs, spend, cost-per-install). Use these to discover new keywords to bid on or exclude.
Options
<campaign-id>required string. Campaign whose search terms to list.--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af apple-ads report
af apple-ads report [flags]
Report Apple Ads performance per campaign (impressions, taps, installs, spend, cost-per-install), plus an account-wide total, over a date range.
Options
--campaign-idsstring[]. Limit the report to specific campaigns.--startstring. Start date (YYYY-MM-DD)--endstring. End date (YYYY-MM-DD, defaults to today)--countinteger, default10. Number of results to return.--pageinteger, default1. Page number.
Examples
af apple-ads top-keywords
af apple-ads top-keywords <campaign-id> [flags]
Rank a campaign's top-performing keywords by conversion rate, spend, and installs over a date range. Each list holds the top keywords on one metric.
Options
<campaign-id>required string. Campaign to rank keywords for.--topinteger, default5. How many keywords to return per ranking (max 10).--startstring. Start date (YYYY-MM-DD)--endstring. End date (YYYY-MM-DD, defaults to today)
Examples
af sdks list
af sdks list [flags]
List every known SDK with its id, or search to find a specific one.
Options
--countinteger, default50. Number of results to return.--pageinteger, default1. Page number.--qstring. Filter byname,description,tags.--sortstring. Field to sort by. Omit to order by relevance whenqis set, otherwise list order.--orderstring, defaultdesc. Sort direction.--sdk-idstring[]. Only return these SDK ids.--include-inactiveboolean, defaultfalse. Include inactive SDKs. Rare; most callers want active only.
Examples
af docs get
af docs get <slug>
Return a reference doc or guide by slug.
Options
<slug>required string. Which reference to return
Examples
af api
af api <path> [flags]
Make a raw API request for endpoints without a dedicated command. Endpoints, parameters, and response shapes are documented at https://docs.appfigures.com.
Options
<path>required string. API path (e.g. /users, /products)--methodstring, defaultGET. HTTP method (one of: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)--bodystring. Request body (JSON string)
af mcp
af mcp
(Deprecated) Run a local MCP server over stdio. Use the hosted Appfigures MCP server instead: https://mcp.appfigures.com/mcp
af auth login
af auth login [flags]
Sign in to Appfigures
Prints a URL to authorize this CLI. Open it, approve access, then re-run with --code <code> using the code shown after approval. Pass --interactive to sign in through a guided browser flow instead.
For unattended use (CI, scripts), set APPFIGURES_API_KEY in the environment instead. No browser flow needed.
Options
--codestring. Authorization code from the OAuth consent page. Second step ofaf auth login: exchanges the code, saves the token, exits.--interactiveboolean. Sign in through a guided browser flow.
af auth logout
af auth logout
Remove stored credentials
af auth status
af auth status
Show authentication and account status
Support
- Issues: github.com/appfigures/cli/issues
- API docs: docs.appfigures.com
Contributing
This package is developed in a private monorepo and published here as a mirror. To report bugs or request features, open an issue.
We're also hiring AI-native devs. If you want to help build the future of AI App Intelligence apply at appfigures.com/careers.
License
Apache 2.0
Source: README.md at commit e340cbb
Tools
0Version history
2- v4.0.0LatestOct 9, 2026
- v3.0.0Sep 16, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts