The state of app UGC, in numbers

Ask our library how many apps it holds and four of our own counters answer 32,749, 32,751, 33,538 and 34,624. Every headline count we publish is below, each with the denominator it was computed against, from one snapshot dated 14 August 2026.

Snapshot of 14 August 2026, plus a 30-day call-to-action window to the same date

565,898
Organic videos
245,937
Meta ads
204,953
Creators

565,898 videos, 245,937 ads, 204,953 creators · snapshot of 14 August 2026

Counted on 14 August 2026

These figures describe Apptonic's own library as of 14 August 2026. The library is a growing sample of the app market, not a census. Every count on this page comes from that one snapshot, and none of it is a market total.

Ask our library how many apps it holds and you get four answers: 32,749, 32,751, 33,538 and 34,624. All four read the same table in the same harvest, and they disagree because they are computed and cached differently.

Every other article we publish links here for its method. This page carries the counts and the caveats; the articles carry the argument.

Each number below sits next to the denominator it was computed against. A count with no denominator is not a fact, and a share with no denominator is a decoration.

Where two of our own counters return different answers for the same quantity, both are printed and neither is called the right one.

Four totals and where each one comes from

The whole-library counts, taken from the one call that reads the tables without narrowing them first.

The four entity totals, and what each one quietly leaves out.

EntityRowsWhat qualifies it
Organic videos565,898TikTok and Instagram only. Cached for six hours
Meta ads245,937The ads feed hides creatives we could not copy. Whether this counter does is unestablished
Creators204,953A second counter returns 207,516 for the same entity
Apps32,749Three other counters return 32,751, 33,538 and 34,624

All four come from one call whose result is cached for six hours and which returns no generation timestamp, so the age of any single reading is unknown. Browse and search screens report lower numbers again, because those queries narrow through joins and default filters before they count. An article should never quote a total off a listing screen. On the ads row: the ads feed drops creatives we could not copy into our own storage before it counts them. Whether the library counter used here does the same is not established by this snapshot.

4 whole-library totals · snapshot of 14 August 2026

Two counters that do not agree

Where the same quantity has two answers in our own system, both answers and the gap between them.

Two calls count apps and two calls count creators, and neither pair agrees. The library counter reads 32,749 apps and 204,953 creators. The coverage counter reads 34,624 apps and 207,516 creators.

The gap between the coverage counter's 34,624 apps and the library counter's 32,749 is 1,875, 5.7% of the smaller of the two. The creators gap, 207,516 against 204,953, is 2,563, 1.25%. Both gaps point the same way, with the coverage counter larger on both entities.

The two files were fetched three seconds apart, so this is not the library growing between two readings. It is two counters answering at the same moment with different numbers, and the likely difference between them is age.

The coverage payload stamps itself: generated at 04:29:38 UTC, sixteen minutes before we read it. The library counter is cached for six hours and carries no stamp at all. Its value may have been computed at any point in those six hours.

32,749
Apps, library counter
34,624
Apps, coverage counter
6 hours
Cache on the counter with no timestamp

the same entity, two counters · snapshot of 14 August 2026

We cannot prove that from two files. Cache age and real growth over an unknown interval leave the same evidence, and only one of the two counters can be dated at all. What we can give you is the rule we apply when they conflict.

Headline totals on this page come from the library counter. Every share of apps takes its denominator from the coverage counter, 34,624, and every share of creators from 207,516. Those are the counters that produced the numerators. Mixing them would report a share of a count that was never taken.

Apps have two further counters. The category facet over in-library apps sums to 32,751, and the category facet for the apps scope sums to 33,538. Four calls, four answers, spread across 1,875 apps.

A fifth counter is worse and we print none of its output. Browse counts stop at 10,001, a ceiling that means "10,000 or more" and nothing else. Where a filter saturates that ceiling, this page omits the figure.

Coverage is thin in places, and this is where

What share of the 34,624 apps on the coverage counter carries each kind of data. Every row is a count of apps.

What we hold on an app, against the 34,624 on that counter.

Apps withAppsShare of 34,624
An App Store listing26,91777.7%
A Google Play listing15,80345.6%
Listings on both stores8,09623.4%
App Store only18,82154.4%
Google Play only7,70722.3%
Screenshots stored13,12537.9%
Download and revenue estimates14,49841.9%
Reviews scraped2,4887.2%
A competitor set1,9065.5%
Ever scraped for content7,45721.5%
A deep content scrape3,4079.8%
At least 1 organic video8,93825.8%
At least 50 organic videos2,5247.3%
At least 100 organic videos1,5194.4%
At least 1 Meta ad3,99611.5%
At least 50 Meta ads2,0936.0%

The store rows partition cleanly. 18,821 apps carry an App Store listing only, 7,707 a Google Play listing only and 8,096 both, and no app in the library sits outside those three. Content coverage is thinner: 25,686 apps, 74.2% of the counter, have no organic video attached at all.

34,624 apps · snapshot of 14 August 2026

How far we get looking for an app's Meta advertising.

StepCount
Meta pages attempted9,802
Meta pages matched5,716
Matched pages running zero active ads1,763
Apps with at least 1 ad3,996
Apps with at least 50 ads2,093

The match rate is 5,716 of 9,802 attempts, 58.3%. Attempted is not a sample: which apps we tried is driven by our scrape campaigns. A failed match can mean the app runs no Meta ads, or that we could not identify its page, so 58.3% is a floor on having a Meta presence and not a measurement of it. The zero-active row is the strong one — those 1,763 pages were positively identified and were running nothing, so a competitor missing from our ad data is more often an empty page than a hole in our collection.

9,802 Meta pages attempted, of 34,624 apps · snapshot of 14 August 2026

The labels a model puts on every post

Six closed vocabularies over the analysed subset of the video library. Counts are videos, not posts weighted by views.

Every video is classified by a language model into a fixed vocabulary of formats, hooks, tones and CTAs. It is a classification, not a human tag, and it is spot-checked, not formally benchmarked. We publish it as a distribution across hundreds of thousands of posts, never as a judgement about any single video.

419,998 of the 565,898 videos in the library carry a full label set, 74.2%. Hook, call to action, content type and tone all resolve to that same 419,998 videos, which is the denominator under every table here.

The vocabularies are closed enums enforced on the model's output. Two of them still carry a small tail of free text from older, looser runs. That is 1,807 extra rows on content type and 938 on tone, and both tails are excluded from the shares below.

Hook type: how the first seconds of the post open.

HookVideosShare
curiosity_gap185,84344.2%
problem81,59619.4%
bold_claim66,26715.8%
direct_callout61,19114.6%
result_first10,0002.4%
question8,7672.1%
other4,6621.1%
social_proof1,4720.4%
warning2000.05%

Nine values, no free-text tail, and they sum to the full 419,998. The residual bin "other" is 1.1% and is kept in the table because dropping it would leave eight shares that do not sum to 100%.

419,998 analysed videos · snapshot of 14 August 2026

Call to action: what the post asks the viewer to do.

Call to actionVideosShare
none197,55847.0%
link_in_bio87,00420.7%
follow_creator46,26911.0%
visit_website43,83110.4%
download_app40,1039.5%
offer5,1631.2%
other700.02%

Seven values, no free-text tail, summing to 419,998. Read "none" as "no call to action we could see". The pooled 47.0% covers a 20-point platform gap. Over the 30 days to 14 August 2026, no-CTA ran at 59.3% on TikTok, from 16,432 classified posts, and 39.0% on Instagram, from 6,529.

419,998 analysed videos · snapshot of 14 August 2026

In the 30 days to 14 August 2026, 59.3% of the TikToks our classifier read carried no call to action. On Instagram Reels the figure was 39.0%. Those are exact counts over 16,432 and 6,529 classified rows.

That number is partly a measurement limit. Posts where we resolved a transcript show a no-CTA share 15 to 21 points lower than posts where we did not. Nothing in the pipeline reads text shown on screen.

The gap runs the opposite way to the one you would expect from the pipelines. On TikTok we read the caption and the spoken transcript, and on Instagram the caption alone. A caption is typed, so the words link in bio are there to read; speech often omits the ask the video shows on screen.

The pooled all-time figure sits between the two platforms, as a mix should: 197,558 of 419,998 classified videos, 47.0%. Among the posts that do carry an ask, link_in_bio outnumbers download_app by 2.2 times, 87,004 against 40,103.

Content type: the shape of the post.

Content typeVideosShare
promo212,52350.6%
tips111,30626.5%
demo36,6638.7%
storytime28,6926.8%
other11,9682.8%
review8,5692.0%
listicle5,5371.3%
reaction2,4500.6%
testimonial1,4120.3%
comparison4490.1%
pov4290.1%

Eleven enum values summing to 419,998. A further 1,807 videos carry free-text content types from older runs, the largest of them "Tutorial / How-to" at 539, and they are excluded from these shares.

419,998 analysed videos · snapshot of 14 August 2026

How long each content type runs, in seconds.

Content typeMedian secondsTikTok share of the 100
listicle82.090%
review76.086%
comparison67.075%
demo66.581%
reaction60.077%
tips56.586%
testimonial55.066%
pov54.576%
storytime45.076%
promo30.058%
other15.079%

Duration is observed and exact, one of the few fields here that carries no hedge. Each row is a separate draw of the 100 most recent videos of that type, so this is a recency sample and not the corpus. Each format contributes exactly 100 rows, so nothing here is a library average. The platform column is printed because the two platforms have different length norms: promo is both the shortest row and the most Instagram-heavy, so some of that gap is platform mix and not format.

1,100 videos, 100 in each of 11 formats · published 20 May to 13 August 2026

Emotional tone, as the model read it.

ToneVideosShare
informative254,17460.5%
excited121,92229.0%
inspirational14,1243.4%
wholesome7,1461.7%
urgent6,5331.6%
relatable6,1991.5%
funny4,7681.1%
calm4,7081.1%
other3500.08%
controversial740.02%

Ten enum values summing to 419,998, plus 938 videos carrying free-text tones from older runs, which are excluded. Two tones account for 89.5% of the analysed corpus, and 74 videos in 419,998 were read as controversial.

419,998 analysed videos · snapshot of 14 August 2026

Target audience. Multi-select, so the column sums past the video count.

AudienceVideos taggedShare of 419,998
general386,62092.1%
creators381,00090.7%
professionals259,65661.8%
entrepreneurs163,00538.8%
students105,15425.0%
gamers34,5968.2%
parents19,7264.7%
fitness7,2921.7%
developers5,5461.3%
other6800.16%

This is the only multi-select facet. The ten values carry 1,363,275 tags across 419,998 videos, 3.2 tags each, so the shares describe how often a tag is applied and cannot be read as a split of the corpus.

419,998 analysed videos, 1,363,275 tags · snapshot of 14 August 2026

Language of the post, top 16 values.

LanguageVideosShare
en268,04063.8%
unknown62,30514.8%
es30,6317.3%
pt16,2853.9%
id9,4962.3%
fr4,8041.1%
de3,9830.9%
ar3,7500.9%
tr3,5380.8%
hi2,1810.5%
vi1,9290.5%
ru1,6260.4%
it1,5870.4%
ja1,5870.4%
th1,1200.3%
zh9800.2%

Language is free ISO-639-1 and the facet returns its top 60 values, which cover 419,611 of the 419,998 analysed videos. "unknown" is a stored value and the second largest one: 62,305 videos, 14.8%, have no language we could read.

419,998 analysed videos · snapshot of 14 August 2026

How recent the two libraries are

Cumulative windows, counted by publish date for organic posts and by start date for ads.

Content by age, cumulative from the snapshot date backwards.

WindowOrganic videosAds
Last 7 days9,3573,024
Last 14 days22,32613,713
Last 30 days80,38554,188
Last 180 days345,917231,885
Last 365 days498,736241,928

Each window contains the ones above it. Read the short windows as our collection cadence and not as creator behaviour: 9,357 posts in seven days is 1,337 a day against 2,680 a day across 30 days, and a post published yesterday may exist without having been collected yet.

565,898 videos, 245,937 ads · snapshot of 14 August 2026

Ads are the newer library by a distance. 231,885 of 245,937 started inside 180 days, 94.3%, and 241,928 started inside a year, 98.4%. That leaves 4,009, 1.6%, outside the year — a residual between two counters computed differently, not a count of ads with a start date older than a year.

Organic reaches further back. 498,736 of 565,898 videos were published inside the year, 88.1%, leaving 67,162 older than it. Ad campaigns end and drop out of the Ad Library; a video published two years ago stays where it was posted.

The creators and how much we know about them

Geography and enrichment across 207,516 creators, on the counter that produced these shares.

Where creators are, among those with a country resolved. 193 country codes appear in total.

CountryCreatorsShare of 140,026
United States69,19649.4%
United Kingdom10,7637.7%
Philippines5,7254.1%
Indonesia5,6894.1%
Brazil4,2193.0%
Canada4,0082.9%
Mexico3,9542.8%
Germany2,7902.0%
Australia2,4701.8%
France2,0851.5%
Spain1,9311.4%
Nigeria1,6371.2%

140,026 of 207,516 creators carry one of 193 country codes; the other 67,490, 32.5%, carry none and appear in no row above. Nine more sit under three values that are not countries and are excluded: an empty string, a double hyphen and a plus-one dialling code. Because one country holds half of what is resolved, any cut of this data by country is a United States cut against everything else.

140,026 creators with a resolved country, of 207,516 · snapshot of 14 August 2026

How much of a creator profile we hold.

Creators withCreatorsShare of 207,516
A country resolved140,02667.5%
An email in the bio66,35032.0%
2 or more videos in the library53,99426.0%
Classification as a brand account8,1743.9%

Read 26.0% as a floor on repeat creators, not a measurement of them. It counts videos we captured, so thinner capture pushes the figure down and the true share is higher. An email in a public bio is a starting point for contact, not consent to be contacted. A creator's video count here is a count of what we captured, so a prolific account we sampled twice reads as a two-post account.

207,516 creators · snapshot of 14 August 2026

The 31 categories and what sits in each

The canonical taxonomy, folded read-time from 63 raw store spellings. Apps are counted directly; the other three columns count links through a matched app.

Every canonical category, ordered by app count, with the content matched into it.

CategoryAppsOrganicAdsCreators
Utilities3,35422,64711,05010,066
Games2,49949,12517,62518,595
Finance2,45345,75427,98316,979
Health & Fitness2,25836,36213,94012,562
Entertainment2,23552,75816,21317,617
Education2,08728,73312,6309,253
Lifestyle2,00230,15914,96111,371
Shopping1,895106,75530,32853,341
Business1,84414,7807,3625,810
Productivity1,82126,0816,40212,052
Photo & Video1,45033,4509,67316,370
Travel1,30631,26312,66814,738
Social Networking1,26118,0418,1629,606
Music96417,9234,2038,177
Books & Reference85014,5205,5215,747
Food & Drink79531,1709,48015,714
Sports69013,1683,4302,995
Navigation5244,4303,0261,887
Graphics & Design47713,5013,3466,096
Communication3596,2882,1753,324
Medical3392,8452,4331,191
Personalization3212,5231,316869
News2495,7032,0271,289
Weather2222,053446453
Dating1061,4721,410771
Auto & Vehicles991,5371,197518
House & Home76942631188
Developer Tools715281319
Parenting691,363296728
Beauty501,990443761
Events25772229308

Beauty holds 50 apps and Events 25, so any claim about "every category" is carried by two columns that thin out to a few dozen rows at the bottom. Developer Tools shows one ad against 71 apps. The app column is the category facet's own counter and not the library counter. It sums to 32,751, two above the library counter of 32,749 named earlier on this page, and 1,873 below the coverage counter of 34,624.

32,751 apps across 31 categories · snapshot of 14 August 2026

Shopping is the eighth largest category by app count, at 1,895 apps. It is the largest by content in all three other columns: 106,755 organic posts, 53,341 creators, 30,328 ads. That is 5.8% of the apps against 17.3% of the organic column.

The last three columns are link counts and not entity counts. A video matched to two apps in different categories is counted once in each. The organic column sums to 618,636 against 565,898 videos, and the creator column to 259,695 against 204,953 creators.

The ads column runs the other way: it sums to 230,607, below the 245,937 ads we hold. Two effects pull against each other. Multi-matching inflates a column, and content with no matched app deflates it, because an ad with no matched app appears in no category at all.

For organic, almost everything is matched, so inflation wins and the column overshoots. For ads, enough ads have no matched app that deflation wins.

The 15,330 shortfall is a lower bound on unmatched ads and not a count of them. The two effects cannot be separated from two numbers. Read a cell as ads linked to apps in that category, never as a slice of 245,937, and never subtract one from the other.

What this data cannot see

The gaps are specific and most of them are structural. Every one below is a thing we are asked for and do not have.

No ad spend. We do not have it, and for ordinary commercial ads nobody does. Meta publishes spend only for political and issue advertising: 12 of 1,164 ads in one production sample. Any spend figure attached to an ordinary Meta creative is modelled, because the source figure does not exist.

No usage data of any kind. No daily or monthly actives, no retention, no session length, no time in app. No source in our pipeline carries any of it, so nothing on this page or in the product is derived from it.

No ratings history and no chart rank. Ratings and review counts are the latest scraped values, and each refresh writes over the last one, so there is no rating trend to plot. We store which category an app is in and not where it ranks inside that category.

TikTok ads and YouTube are not collected. Every ad figure on this page is Meta. Every organic figure is TikTok or Instagram. Neither gap is a sampling decision — no collector exists for either, so an article about TikTok ad creative is one we cannot write.

Instagram is mostly classified without a transcript. On TikTok we read the caption and the spoken transcript. On Instagram we read the caption alone, apart from one rescue path. 51 of the 586 classified Instagram rows in our sample did carry a resolved transcript. All of them came through that one path, and on the rest a call to action spoken aloud is invisible to us.

Nothing in the pipeline reads text shown on screen. One text-only pass runs over the caption and the transcript. An end card reading download now is invisible on both platforms, which puts a floor under every no-CTA count on this page.

A quarter of the organic corpus carries no labels. 419,998 of 565,898 videos have a hook and a call-to-action label. The other 145,900, 25.8%, were never analysed and the backfill script has never been run. Every facet share here is a share of the analysed subset and says nothing about the rest.

The newest content is the least labelled. A probe of the 1,995 newest videos across both platforms found 13 carrying an analysis row. Labelling lags collection, so a share computed today describes work finished weeks ago and not what was posted this week.

Category figures only see content we matched to an app. Category filters resolve through the matched app. A post we could not tie to an app is invisible to every category number on this page. Only 8,938 of 34,624 apps have any organic content at all.

Content is linked to apps by store links where we can find them and by name matching otherwise. Name matching is deliberately generous and it is not perfect. Our own log records videos about a sunset and a yawning rabbit matched to a meditation app on the shared word "calm".

The library is a sample, and not a random one. It grew by our customers asking about their competitors. A category that looks large here is a category we collected heavily. Comparing two categories on this page compares our collection before it compares the market.

Download and revenue figures are third-party estimates, not figures reported by the developer. They are rounded at source, so month-to-month movements of a million are rounding and not growth. 14,498 of 34,624 apps carry any estimate, 41.9%, and June 2026 was the most recent month available on the day of this count.

Ad reach is mostly missing. Impression buckets appear on roughly 4% of ads, the political, issue and EU-delivered inventory Meta reports on. Ad country and audience demographics are not stored at all. What the ad data does carry is the creative, the copy, the destination, the run length and the variant count.

Virality is our own score. It is Apptonic's 0–100 number, weighted toward view-to-follower breakout and recency. It measures what is travelling now, not lifetime performance, and it is a ranking signal, not a platform-reported metric. Its classes are percentiles of a moving distribution, so an "exploding" share from July and one from August are answering different questions.

Video view counts are as-of-last-scrape. Most videos were collected once and never collected again, so there is no view history behind any figure here. Instagram reports no meaningful share count, which is why share and save numbers are never pooled across the two platforms.

Creator figures are library figures. Follower counts come from a profile fetch that has not reached the long tail, and rows without one carry a null. The same person posting on TikTok and on Instagram is two rows on this page, because we do not stitch identity across platforms.

How we counted

We froze one harvest of the production library on 14 August 2026, between 04:46 and 04:56 UTC. Every figure on this page is read from that one set of files. Nothing is averaged across dates and nothing is carried over from an earlier count. The library grows daily, and two counts taken a week apart would put two different numbers on the same quantity.

The four entity totals come from the single counter that reads the tables without filtering them first. Coverage figures come from one coverage call, which stamps itself 04:29:38 UTC. The facet vocabularies come from one grouped pass over the analysed videos.

Category counts come from the category facet for each of the four scopes. Window counts come from the period facet, and durations from eleven draws of 100 videos each.

Totals are taken from the library counter and shares of apps from the coverage counter, 34,624, because that is the counter that produced the numerators. Every share is computed against the denominator printed on the block that shows it. Where a counter saturates at its 10,001 ceiling we omit the figure instead of printing the ceiling as a number. Where two counters disagree, both are printed and the gap is named.

The category table's app column is the category facet's own counter, which sums to 32,751 and is not the 32,749 in the totals table. Creator country shares divide by 140,026, the country facet's sum after three values that are not countries are dropped.

The call-to-action platform figures come from one 30-day window ending on the snapshot date. That window is the widest of 90, 60, 30 and 14 days whose largest cell cleared the 10,001 ceiling. They are exact counts and not a sample. The transcript comparison behind them is a sample: 1,245 classified rows drawn 40,000 rows down each platform feed.

The data is compiled from public social platforms, the Meta Ad Library, the App Store and Google Play, plus licensed app-performance estimates. App-level performance figures are estimates from a third-party provider and are described as such wherever they appear.

Organic videos, TikTok and Instagram
565,898 rows · library counter, 14 August 2026
Meta ads
245,937 rows · library counter, 14 August 2026
Creators
204,953 rows · library counter, 14 August 2026
Apps, one row per app across both stores
32,749 rows · library counter, 14 August 2026
Apps on the coverage counter, the denominator for app shares
34,624 rows · generated 14 August 2026, 04:29 UTC
Organic videos carrying a full set of AI labels
419,998 rows · facet pass, 14 August 2026
Creators carrying one of 193 country codes
140,026 rows · country facet, 14 August 2026
Classified organic posts in the 30-day call-to-action window, TikTok and Instagram
22,961 rows · published 16 July to 14 August 2026

Frequently asked

How big is the app UGC market?
Nobody can answer that, including us. What we can answer is what one library held on 14 August 2026: 565,898 organic videos, 245,937 Meta ads, 204,953 creators and 32,749 apps. That library grew by our customers asking about their competitors. It is a sample shaped by their questions, not a census of the market.
How current are these numbers?
Every count was taken on 14 August 2026. Organic ingest runs the same day: the newest video in the snapshot was published at 04:30 that morning. Download and revenue estimates lag much further, with June 2026 the most recent month available on the day of the count.
What share of your videos carry AI labels?
419,998 of 565,898, or 74.2%. The remaining 145,900 have never been analysed and the backfill has not been run. Hook, call to action, content type and tone all resolve to the same 419,998 videos, and every facet share on this page uses that denominator.
Why do your own counters disagree with each other?
Two calls count apps and creators, and both give the coverage counter the larger number: 34,624 apps against 32,749, and 207,516 creators against 204,953. The likely cause is age. The coverage call stamps itself 04:29:38 UTC, while the library counter is cached for six hours and carries no timestamp, so we cannot date it. Totals on this page use the library counter and shares of apps use the coverage counter, and the page names the gap wherever it matters.
Do you have competitor ad spend?
No. Meta discloses spend only for political and issue advertising: 12 of 1,164 ads in one production sample. No ad library carries spend for ordinary commercial advertising. What it does carry is how long an ad has run and how many variants sit behind it. Those are the honest proxies.
Can I reproduce these figures?
Not from outside. They are counts of a private library. So the page prints its count date, a denominator under every share, and the places our own counters disagree. Read it as a dated snapshot with its workings shown, and check the parts that overlap with anything you can measure yourself.