Data and freshness

Pillars

threefold organises market evidence in three pillars:

  • Brand: how an app presents itself in each storefront. Listings, charts, reviews.
  • Paid: what it advertises there. Ad libraries.
  • Organic: how it gets talked about. Creator posts.

Sources

SourcePillarNeedsStatusDefault refresh
App Store charts and listings (Apple's public RSS and lookup endpoints)BrandnothingNo key neededweekly
Google Play listings and top-free chartsBrandnothingNo key neededweekly
Store reviews, App Store and Google PlayBrandnothingNo key neededweekly
Meta Ad Library (official API; ads delivered in the EU and UK)PaidMeta access (identity confirmation)Waiting on Meta accessdaily
TikTok Commercial Content API (official; EU, UK and Switzerland)PaidTikTok approvalWaiting on TikTok approvalweekly
Google Ads Transparency Center (public BigQuery dataset; EEA and Turkey)Paidcloud credentialsWaiting on cloud accessweekly
Paid in the US, Mexico, Argentina, Brazil, Japan and KoreaPaidn/aLinks onlynot collected
YouTube (official Data API)OrganicAPI credentialsWaiting on credentialsweekly
Instagram brand accounts (official Graph API; the apps' own business accounts)OrganicAPI credentialsWaiting on credentialsweekly
TikTok, X, creator posts on InstagramOrganicn/aLinks onlynot collected
LINE, Kakao, WhatsApp, FacebookOrganicn/aLinks onlynot collected

While Paid and Organic sources are not connected, answers that cover them return live links to each platform's own library or search, filtered by country, instead of collected rows. A source above is "waiting" because the platform has not yet issued the access; no Paid or Organic row is collected until it is. Over REST, endpoint schemas state which sources each endpoint reads; over MCP, tool digests state coverage and gaps directly.

The library started from an App Store snapshot generated on 27 October 2026: 10 markets, 6 niches, the top 10 free apps per niche and market (360 apps), and every charting app's listing in every market (3,600 listings). Live ingest has collected on top of it since.

How fresh the data is

GET /api/meta says when each source was last collected: freshness.sources lists App Store and Google Play listings, charts and reviews, and each Paid and Organic source once it has rows, with collectedAt (null when never collected). generatedAt is the newest of them, and freshness.snapshotAt is the date of the starting snapshot. The times come from the rows themselves (when each listing was fetched, when the job that wrote the latest chart finished), so they move with every pull. Every MCP tool result carries the same times in _meta.data_freshness, and the footer of threefold.eco shows them per store.

Coverage

DimensionValues
Marketsgb, us, es, mx, ar, br, de, fr, jp, kr
Language variantsen-GB, en-US, es-ES, es-MX, es-AR, pt-BR, de-DE, fr-FR, ja-JP, ko-KR
Nichesgames, education, health-fitness, finance, productivity, lifestyle
StoresApp Store (ios), Google Play (play)

Each market carries a profile: its language variant, its market-native channels (Japan's are LINE, X and TikTok; Korea's include Kakao), and a monetisation note so a US price is not copied across. Spanish is split into es-ES, es-MX and es-AR. Mainland China storefronts are out of scope.

Missing a market, app or channel? Call request_coverage (free). Requests are counted and guide what is added next.

History

Every pull appends history rather than overwriting:

  • Listings: a new row whenever the title, copy, screenshots, languages, price or icon changes (ratings excluded). listing_history answers questions like “when did they localise for Japan?”.
  • Charts: every chart pull, by day (chart_history).
  • Ads: first and last seen, times seen, and the platform's delivery dates where it gives them, so “has run for 60+ days” is measurable.
  • Posts: views and likes per post per day.

Matching ads and posts to apps

Evidence, strongest first: a store link in the ad's landing URL or the post text (confidence 1); the advertiser or author is the developer or the app's own account (0.85); the app's short title is mentioned in the copy (0.65). Below 0.6 a row is kept but not attributed to an app. A search term alone never attributes: searching for an app's name returns plenty of posts that are not about it. Ads and posts are also tagged with a language variant.

Media

Ad and post images and videos live on platform CDNs that expire within hours or days. threefold's media archive copies them (deduplicated by content hash) so evidence does not turn into dead links.

Retention

DataKept
Listings, charts, listing history, adsKept: the history is the product
Raw supplier payloads for ads and posts90 days
YouTube dataRefreshed or deleted after 27 days (YouTube's limit is 30)
Creator posts not seen again730 days
Daily post metrics400 days, then one row per month

Creators can ask to be erased: their posts, metrics, archived media, store reviews and any cached analysis that cites them are deleted, and a hash of the handle is kept so they are not collected again.