API reference

The threefold HTTP API is described by an OpenAPI 3.1.0 document generated from the endpoint registry. The live copy is at https://api.threefold.eco/openapi.json; this page is rendered from the copy committed with the typed clients (clients/openapi.json, API version 0.2.0).

Base URL: https://api.threefold.eco. Authentication: Authorization: Bearer <key> (tf_live_…, or sandbox tf_test_…), an OAuth 2.1 access token, or nothing for keyless library reads. See REST API for headers, paging and metering, and Errors for error bodies.

Account

Library Metadata

GET /api/meta library_meta

Library overview - configured markets, niches, the first-cut profile and data counts

Track App

POST /api/track track_app

Track an app across markets - ingest it now and keep it on your workspace with a home and target markets

NameInRequiredTypeDescription
idbodyyesstring
homebodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
targetsbody(gb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl)[]Defaults to the first library cut minus home
pillarsbodystring[]brand, organic, paid

Account Usage

GET /api/usage usage

Your workspace's plan, tracked apps and spend this month

Request Coverage

POST /api/coverage/request request_coverage

Record a market, app or channel you need that is not yet covered by Threefold

NameInRequiredTypeDescription
marketbodystringMarket code or country name needed, e.g. br, pl, kr
app_idbodystringApp id or package name needed
channelbodystringChannel or source needed, e.g. line, kakao, reddit
notebodystringContext on why this coverage is needed

Save Item

POST /api/collections/save save_item

Save research items (apps, screens, galleries, comparisons) to a collection or workspace

NameInRequiredTypeDescription
item_idbodyyesstringItem identifier to save
kindbodyapp | screen | gallery | comparisonKind of saved item
collection_idbodystringCollection UUID or 'all-saved'
collection_namebodystringName of collection to create or add into
market_codebodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clMarket code if applicable
titlebodystringItem title
notebodystringOptional research note

List Collections

GET /api/collections list_collections

List saved research collections for the current workspace with item counts

NameInRequiredTypeDescription
limitqueryintegerMax collections to return
offsetqueryintegerPaging offset

Get Collection

GET /api/collections/{id} get_collection

Retrieve items and notes in a saved research collection

NameInRequiredTypeDescription
idpathyesstringCollection UUID or 'all-saved'
limitqueryintegerMax items to return
offsetqueryintegerPaging offset

Add Collection Note

POST /api/collections/notes add_collection_note

Attach a team note or research comment to a collection or saved item

NameInRequiredTypeDescription
notebodyyesstringNote content
collection_idbodystringCollection UUID
item_idbodystringItem identifier

Create Watch

POST /api/watches create_watch

Create an alert watch on an app or niche in markets

NameInRequiredTypeDescription
target_typebodyyesapp | niche
target_idbodyyesstring
marketsbody(gb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl)[]
eventsbodystring[]
thresholdbodyinteger
webhook_urlbodystring
webhook_secretbodystring
emailbodystring

List Watches

GET /api/watches list_watches

List active alert watches for the current workspace

NameInRequiredTypeDescription
target_idquerystring

Delete Watch

POST /api/watches/{id}/delete delete_watch

Delete or deactivate an alert watch

NameInRequiredTypeDescription
idpathyesstringPath parameter id

Watch Events

GET /api/watches/{id}/events watch_events

Get recent detected events and delivery logs for a watch

NameInRequiredTypeDescription
idpathyesstringPath parameter id
limitqueryinteger

Workspace

POST /api/agent/workspace agent_workspace

The workspace's apps, competitors per market, target markets, watches and changes, saved items and usage

NameInRequiredTypeDescription
actionbodyget | set_apps | set_competitors | set_markets | watch | unwatch | changes | save | savedget (default)
appsbodystring[]Names, ids or store URLs
marketbodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clset_competitors: the market
marketsbody(gb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl)[]set_markets, watch
homebodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clset_markets: home market
itembodystringsave: JSON object with title, tool, args, note
sincebodystringchanges: since this date

Analysis

Explain Listing Differences

POST /api/analysis/listing explain_listing

AI explanation of why an app's listing differs between two markets

NameInRequiredTypeDescription
appbodyyesstring
tobodyyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
frombodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
refreshbodybooleanIgnore the cached result
task_intentbodystringCaller task intent or context, used to shape output and logged (hashed)
output_destinationbodycode | doc | chat | design_toolTarget environment: code (compact JSON), doc (citations and links), chat (summary sentence), design_tool (visual assets and layout)

Explain Paid

POST /api/analysis/paid explain_paid

AI explanation of the ad strategy in a market for an app or niche

NameInRequiredTypeDescription
marketbodyyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
appbodystring
nichebodygames | education | health-fitness | finance | productivity | lifestyle
frombodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
refreshbodyboolean
task_intentbodystringCaller task intent or context, used to shape output and logged (hashed)
output_destinationbodycode | doc | chat | design_toolTarget environment: code (compact JSON), doc (citations and links), chat (summary sentence), design_tool (visual assets and layout)

Brand Name Check

POST /api/analysis/brand-name brand_name_check

AI check of an app name and tagline for meaning or connotation problems in other markets

NameInRequiredTypeDescription
namebodyyesstring
taglinebodystring
marketsbody(gb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl)[]
refreshbodyboolean
task_intentbodystringCaller task intent or context, used to shape output and logged (hashed)
output_destinationbodycode | doc | chat | design_toolTarget environment: code (compact JSON), doc (citations and links), chat (summary sentence), design_tool (visual assets and layout)

Translate

POST /api/analysis/translate translate

Translate short texts such as ad copy or reviews into one target language

NameInRequiredTypeDescription
textsbodyyesstring[]
targetbodystringTarget language code
variantbodystringRegional language variant
formalitybodyformal | informalFormality register (e.g. for German)
nichebodygames | education | health-fitness | finance | productivity | lifestyleApp Store niche
marketbodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clTarget market code

Describe Video

POST /api/analysis/video describe_video

AI description of a video ad or post - hook, format, on-screen text, cultural cues

NameInRequiredTypeDescription
urlbodyyesstringPublic http(s) video URL
thumbnailbodystringPublic http(s) thumbnail URL
marketbodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
refreshbodyboolean

Visual Brief

POST /api/analysis/visual-brief visual_brief

Vision analysis evaluating screenshot compositions, cultural adaptations, and visual framing

NameInRequiredTypeDescription
marketbodyyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clTarget market
nichebodygames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingApp Store niche
appbodystringApp id
querybodystringResearch query
positionbodyintegerScreenshot position (1-based, default 1)
refreshbodybooleanIgnore cached analysis
task_intentbodystringCaller task intent or context, used to shape output and logged (hashed)
output_destinationbodycode | doc | chat | design_toolTarget environment: code (compact JSON), doc (citations and links), chat (summary sentence), design_tool (visual assets and layout)

i18n Readiness Rules Catalogue

GET /api/i18n/rules i18n_check_rules

Catalogue of automated internationalization and localization readiness rules across platforms and markets

NameInRequiredTypeDescription
platformquerystringFilter by platform: core, ios, android, web, flutter, react-native, store, legal
marketquerystringFilter by market code (e.g. de-DE, es-MX, ja-JP)

Store and Retrieve i18n Reports

GET /api/i18n/reports/{param} i18n_report_api_i18n_reports_param

Store an uploaded i18n readiness report or retrieve a previously stored report by ID

NameInRequiredTypeDescription
parampathyesstringReport UUID for retrieval

Store and Retrieve i18n Reports

POST /api/i18n/reports i18n_report_api_i18n_reports

Store an uploaded i18n readiness report or retrieve a previously stored report by ID

NameInRequiredTypeDescription
parambodystringReport UUID for retrieval

Market Glossary

GET /api/market-glossary market_glossary_api_market_glossary

Extract domain terms and CTAs used by top-ranked storefront listings in a niche

NameInRequiredTypeDescription
nichequeryyesgames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingNiche or any collected genre slug (GET /api/meta genres)
marketqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
variantquerystringOptional regional variant
storequeryios | playios (default) or play
formatqueryjson | csv | tsv | tbxExport format
include_foreignquerybooleanKeep terms naming another market (flagged foreign_market_reference) in terms and CTAs; default false

Market Glossary

POST /api/market-glossary market_glossary_api_market_glossary

Extract domain terms and CTAs used by top-ranked storefront listings in a niche

NameInRequiredTypeDescription
nichebodyyesgames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingNiche or any collected genre slug (GET /api/meta genres)
marketbodyyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
variantbodystringOptional regional variant
storebodyios | playios (default) or play
formatbodyjson | csv | tsv | tbxExport format
include_foreignbodybooleanKeep terms naming another market (flagged foreign_market_reference) in terms and CTAs; default false

Variant Lint

POST /api/variant-lint variant_lint_api_variant_lint

Lint arbitrary copy against regional language dialect rules

NameInRequiredTypeDescription
textbodyyesstring
variantbodyyesstring

Variant Lint

GET /api/variant-lint variant_lint_api_variant_lint

Lint arbitrary copy against regional language dialect rules

NameInRequiredTypeDescription
textqueryyesstring
variantqueryyesstring

Listing Check

POST /api/listing-check listing_check

Validate proposed localized store copy against store limits and competitive benchmark

NameInRequiredTypeDescription
nichebodyyesgames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingNiche or any collected genre slug (GET /api/meta genres)
marketbodyyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
titlebodystring
storebodyios | playios (default) or play

Price Points

GET /api/price-points price_points

Analyze what top apps in a niche charge per storefront from stored listing prices

NameInRequiredTypeDescription
nichequeryyesgames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingNiche or any collected genre slug (GET /api/meta genres)
marketqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
storequeryios | playios (default) or play

Market Launch Checklist

GET /api/market-launch-checklist market_launch_checklist

Consolidated per-market launch checklist merging B2B, profile, and statutory legal checks

NameInRequiredTypeDescription
marketqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
report_idquerystringOptional stored i18n report UUID

Label Profile

GET /api/labels/profile label_profile

Label shares for one market - how its listings, screenshots, ads or posts are labelled (subscription mentions, screenshot type, hook, post format), with item ids

NameInRequiredTypeDescription
item_typequeryyeslisting | screenshot | ad | postWhat was labelled
marketqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
nichequerygames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingListings and screenshots: niche or genre (the top of its chart). Ads and posts: niche only. Omit for the whole market.
storequeryios | playListings and screenshots: ios (default) or play
chartqueryfree | paid | grossingListings and screenshots with a niche: chart type (default free)
topqueryintegerListings and screenshots with a niche: the top N of the chart (1-100, default 100)

Language Fit

GET /api/labels/language-fit language_fit

Share of a market's listings, screenshots and ads written in its own language and variant (es-MX in Mexico, not es-ES), with item ids

NameInRequiredTypeDescription
marketqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
nichequerygames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingListings and screenshots: niche or genre (the top of its chart). Ads: niche only. Omit for the whole market.
storequeryios | playListings and screenshots: ios (default) or play
chartqueryfree | paid | grossingListings and screenshots with a niche: chart type (default free)
topqueryintegerListings and screenshots with a niche: the top N of the chart (1-100, default 100)
item_typesquerystring[]listing, screenshot, ad (default all three)

App

Get App

GET /api/apps/{id} get_app

One app across storefronts - localised title, copy language, screenshots, ratings and signals per market

NameInRequiredTypeDescription
idpathyesstringApp Store id, or play:<package> for Play-only apps
marketsquery(gb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl)[]Comma-separated market codes. Defaults to every market.
storequeryios | playios (default) or play
include_imagesquerybooleanFetch and return low-res preview images (default false)
image_formatquerywebp | jpgPreview image format (webp default, or jpg)

GET /api/visuals/gallery screenshot_gallery

Side-by-side screenshot gallery across markets for one app or top apps in a niche with inline low-res previews and high-res export links

NameInRequiredTypeDescription
appquerystringApp Store id (or play:<package> for Play-only apps)
marketsquery(gb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl)[]Comma-separated target market codes
marketquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clMarket for niche mode
nichequerygames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingNiche for top apps mode
storequeryios | playios (default) or play
limitqueryintegerMaximum screenshots or apps (1-20, default 5)
image_formatquerywebp | jpgPreview image format (webp default, or jpg)
task_intentquerystringCaller task intent or context, used to shape output and logged (hashed)
output_destinationquerycode | doc | chat | design_toolTarget environment: code (compact JSON), doc (citations and links), chat (summary sentence), design_tool (visual assets and layout)

App

GET /api/agent/app agent_app

One app across stores, Brand, Paid and Organic, and markets, as a digest with links and next steps

NameInRequiredTypeDescription
appqueryyesstringApp name, App Store id, play:<package> or store URL
marketsquery(gb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl)[]Markets to cover (default: where the app charts, up to 5)
storequeryios | playios or play (default: both where linked)
focusqueryoverview | brand | paid | organic | reviews | changesoverview (default) or one part in depth
platformquerystringPaid/Organic platform filter
formatquerystringCreative format filter
sincequerystringOnly items observed on or after this date
cursorquerystringCursor from a previous answer

Brief

Market Brief

GET /api/apps/{id}/brief market_brief

Rules-based market-entry brief for moving one app into one market across Brand, Paid and Organic

NameInRequiredTypeDescription
idpathyesstringPath parameter id
toqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clTarget market
fromquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clHome market
storequeryios | playios (default) or play
task_intentquerystringCaller task intent or context, used to shape output and logged (hashed)
output_destinationquerycode | doc | chat | design_toolTarget environment: code (compact JSON), doc (citations and links), chat (summary sentence), design_tool (visual assets and layout)

B2B Market Checklist

GET /api/b2b b2b_checklist_api_b2b

B2B market-entry checklist - procurement, compliance and channels for selling software into a market

NameInRequiredTypeDescription
marketquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clOmit for the index of covered markets

B2B Market Checklist

GET /api/b2b/{market} b2b_checklist_api_b2b_market

B2B market-entry checklist - procurement, compliance and channels for selling software into a market

NameInRequiredTypeDescription
marketpathyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clOmit for the index of covered markets

Market Entry Report

GET /api/reports/market-entry market_entry_report

Printable market-entry report for one app moving into one market (HTML, PDF or JSON)

NameInRequiredTypeDescription
appqueryyesstring
toqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
fromquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
formatqueryhtml | pdf | jsonhtml (default)
task_intentquerystringCaller task intent or context, used to shape output and logged (hashed)
output_destinationquerycode | doc | chat | design_toolTarget environment: code (compact JSON), doc (citations and links), chat (summary sentence), design_tool (visual assets and layout)

Market Entry Narrative

POST /api/analysis/brief market_entry_narrative

AI-written market-entry brief citing listings, ads and posts as evidence

NameInRequiredTypeDescription
appbodyyesstring
tobodyyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
frombodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
refreshbodyboolean
task_intentbodystringCaller task intent or context, used to shape output and logged (hashed)
output_destinationbodycode | doc | chat | design_toolTarget environment: code (compact JSON), doc (citations and links), chat (summary sentence), design_tool (visual assets and layout)

Market Take

GET /api/market-take market_take

The weekly threefold take on one market and niche - a headline and evidenced points on how its listings, screenshots, ads and posts differ from the US

NameInRequiredTypeDescription
marketqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clAny market except the reference (us)
nichequeryyesgames | education | health-fitness | finance | productivity | lifestyle
weekquerystringISO week YYYY-WW (default: the latest take)

Check

POST /api/agent/check agent_check

Grade the user's listing, screenshots, ad, name, repository or live app for a target market - rule checks, criteria and reference examples

NameInRequiredTypeDescription
marketbodyyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
whatbodyyeslisting | screenshots | ad | name | repo | website | app
urlbodystringFor what: website: the page to check (home or pricing page)
genrebodystringGenre in plain words or a slug
frombodygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clThe user's home market
appbodystringApp name, id or store URL
namebodystringFor what: name
listingbodystringFor what: listing. JSON object: title, subtitle, keywords, promotional_text, description, screenshot_count
storebodyios | playios or play

Chart

Top Apps

GET /api/chart top_apps

Top free, paid or grossing apps in one market and niche or genre, with localisation signals and the market profile

NameInRequiredTypeDescription
marketqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
nichequeryyesgames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingNiche or any collected genre slug (GET /api/meta genres)
storequeryios | playios (default) or play
chartqueryfree | paid | grossingChart type: top free (default), top paid or top grossing

Compare

Compare Markets

GET /api/compare compare_markets

Compare one niche in two markets - shared winners, apps that have not crossed over, local-only winners

NameInRequiredTypeDescription
fromqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clHome market
toqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clTarget market
nichequeryyesgames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingNiche or any collected genre slug (GET /api/meta genres)
storequeryios | playios (default) or play
chartqueryfree | paid | grossingChart type: top free (default), top paid or top grossing
include_imagesquerybooleanFetch and return low-res preview images (default false)
image_formatquerywebp | jpgPreview image format (webp default, or jpg)
task_intentquerystringCaller task intent or context, used to shape output and logged (hashed)
output_destinationquerycode | doc | chat | design_toolTarget environment: code (compact JSON), doc (citations and links), chat (summary sentence), design_tool (visual assets and layout)

Compare Paid

GET /api/apps/{id}/paid-compare compare_paid

Compare one app's ads at home against a target market

NameInRequiredTypeDescription
idpathyesstringPath parameter id
toqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
fromquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clHome market

Label Compare

GET /api/labels/compare label_compare

Label differences between two markets - share of each answer per label for listings, screenshots, ads or posts, largest differences first, with item ids

NameInRequiredTypeDescription
item_typequeryyeslisting | screenshot | ad | postWhat was labelled
fromqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clReference market
toqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clMarket compared with it
nichequerygames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingListings and screenshots: niche or genre (the top of its chart). Ads and posts: niche only. Omit for the whole market.
storequeryios | playListings and screenshots: ios (default) or play
chartqueryfree | paid | grossingListings and screenshots with a niche: chart type (default free)
topqueryintegerListings and screenshots with a niche: the top N of the chart (1-100, default 100)

Market

GET /api/agent/market agent_market

One market and genre - what wins there, optionally next to a reference app or a home market, as a digest

NameInRequiredTypeDescription
marketqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
genrequeryyesstringGenre in plain words or a slug
likequerystringReference app: name, id or store URL
vsquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | clHome market to compare against
storequeryios | playios or play
focusqueryoverview | brand | paid | organic | pricing | language | launchoverview (default) or one part in depth
platformquerystringPaid/Organic platform filter
formatquerystringCreative format filter
cursorquerystringCursor from a previous answer

History

Listing History

GET /api/apps/{id}/history listing_history

History of an app's store listing - title, description, screenshots and price changes over time

NameInRequiredTypeDescription
idpathyesstringPath parameter id
marketquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
storequeryios | playios (default) or play

Chart History

GET /api/chart-history chart_history

Daily chart rank history for an app or a market and niche

NameInRequiredTypeDescription
appquerystring
marketquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
nichequerygames | education | health-fitness | finance | productivity | lifestyle | business | weather | utilities | travel | sports | social-networking | reference | photo-video | news | navigation | music | entertainment | books | medical | magazines-newspapers | catalogs | food-drink | shopping | stickers | developer-tools | graphics-design | games-action | games-adventure | games-casual | games-board | games-card | games-casino | games-dice | games-educational | games-family | games-music | games-puzzle | games-racing | games-role-playing | games-simulation | games-sports | games-strategy | games-trivia | games-word | games-arcade | communication | dating | video-players | personalization | auto-vehicles | beauty | comics | events | house-home | parentingNiche or any collected genre slug (GET /api/meta genres)
storequeryios | playios (default) or play
chartqueryfree | paid | grossingChart type: top free (default), top paid or top grossing
daysqueryintegerLook-back window in days
limitqueryinteger
offsetqueryinteger

Backfill App

POST /api/apps/{id}/backfill backfill_app

Trigger or check historical backfill for an app across approved sources

NameInRequiredTypeDescription
idpathyesstringPath parameter id

Export History

GET /api/export/history export_history

Export full history of listing snapshots, ads and posts as streaming JSONL with evidence fields

NameInRequiredTypeDescription
appqueryyesstring

Organic

Organic Posts

GET /api/organic organic_posts

Creator and social posts about an app or niche in a market, with publish dates and views

NameInRequiredTypeDescription
marketquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
appquerystring
nichequerygames | education | health-fitness | finance | productivity | lifestyle
sourcequerystringChannel: youtube, tiktok, instagram or x
sincequerystring
sortqueryviews | recentviews (default) or recent
brand_accountquerybooleantrue: posts from the app's own account (Instagram Business Discovery); false: creator and hashtag posts. Omit for both.
limitqueryinteger
offsetqueryinteger

Paid Ads

GET /api/paid paid_ads

Ads running in a market, for an app or a niche, with start and stop dates and how long they ran

NameInRequiredTypeDescription
marketquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
appquerystring
nichequerygames | education | health-fitness | finance | productivity | lifestyle
sourcequerymeta_ad_library | tiktok_creative_center | tiktok_commercial_content | google_ads_transparency | linkedin_ad_library
activequerybooleanOnly ads still running
minDaysqueryintegerRan at least this many days
langquerystringLanguage (es) or variant (es-MX)
sortquerylongest | recentlongest (default) or recent
limitqueryinteger
offsetqueryinteger

Paid Summary

GET /api/paid/summary paid_summary

Summary of ads in a market - advertisers, counts and longest running ads

NameInRequiredTypeDescription
marketquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
appquerystring
nichequerygames | education | health-fitness | finance | productivity | lifestyle

Reviews

App Reviews

GET /api/apps/{id}/reviews app_reviews

Store reviews for an app in one market, with dates, ratings, version and language

NameInRequiredTypeDescription
idpathyesstringPath parameter id
marketquerygb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl
storequeryios | playios (default) or play
limitqueryinteger
cursorquerystringPaging cursor from the previous response

Review Summary

GET /api/apps/{id}/reviews/summary review_summary

Summary of an app's reviews in one market - rating mix, languages and recent themes

NameInRequiredTypeDescription
idpathyesstringPath parameter id
marketqueryyesgb | us | es | mx | ar | br | de | fr | jp | kr | ca | au | tw | it | nl | tr | sa | in | ca-fr | hk | th | id | ch | pl | se | ae | vn | ph | pt | at | co | cl

Search Apps

GET /api/search search_apps

Search apps already in the library by name or developer, with where each one charts

NameInRequiredTypeDescription
qqueryyesstringApp name or developer
storequeryios | playios (default) or play
limitqueryintegerPage size
offsetqueryintegerSkip this many results

Search App Store

GET /api/store-search search_store

Live App Store search for any app, not only charting ones, to get its id

NameInRequiredTypeDescription
qqueryyesstringSearch term