App Store review-aspect sentiment (daily)
Daily enrichment panel scoring customer-review sentiment for 32 prominent US App Store apps (social, finance, shopping, streaming, productivity, navigation, food delivery, travel). Each run verifies the roster against Apple's keyless lookup API by bundleId, fetches up to 4 pages of the most recent customer reviews per app (keyless customerreviews RSS JSON), and ships trailing-30-day aggregates: review volume, rating distribution (avg, 1-2-star and 5-star shares), lexicon sentiment (review_sentiment = 100 * tanh(S/4) over a documented ~70-word valence lexicon with negation handling, S = signed weight sum), per-aspect sentiment for a documented 8-aspect keyword taxonomy (bugs, pricing, features, ux, performance, support, ads, privacy; null with < 5 mentions), health_score = 100 * (0.45 * norm(avg_rating) + 0.35 * norm(mean_sentiment) + 0.20 * (1 - clipped 1-2-star share)) with a deterministic health_rank, version_dip_flag when the latest version's 1-2-star share exceeds the rest-of-window share by >= 15 pp (>= 10 reviews on each side), and the worst qualifying top_aspect. Who joins this: a product/brand team joins daily per-app review-aspect sentiment to their release/QA calendar on bundle_id + as_of to catch launch regressions, and a competitive-intelligence team benchmarks apps within a category on category + as_of (primary key (as_of, bundle_id); join keys bundle_id, app_name, as_of, category). Caveats: aspect assignment is keyword-based, not semantic; sentiment is lexicon-based (sarcasm/idiom escape it); apps with < 10 in-window reviews keep null-scored rows flagged data_sufficient = 0; the mostRecent feed only exposes the newest ~200 reviews, so low-velocity apps have thinner windows. No review text, titles, or author names are stored — only derived numeric aggregates.
- Rows
- 32
- Columns
- 36
- Source cadence
- Daily
- Last refreshed
- Sep 27, 2026
- Theme
- technology
| Column | Type | Description |
|---|---|---|
| as_of | string | Snapshot date (YYYY-MM-DD, UTC). The panel aggregates the trailing 30 days ending here. Part of the primary key. (unit: date) |
| app_name | string | Curated roster app name. A join key. (unit: text) |
| bundle_id | string | Reverse-DNS app identifier (e.g. com.spotify.client) — the stable cross-platform app key a product team joins their own telemetry/release calendar on. Part of the primary key. (unit: identifier) |
| track_id | integer | Apple App Store numeric id, verified against the live lookup API at collection time. (unit: identifier) |
| category | string | Closed app-category vocabulary (social, finance, shopping, streaming, productivity, navigation, food_delivery, travel). A join key for competitive benchmarking. (unit: category) |
| country_code | string | Storefront country, ISO alpha-3 (always USA). (unit: ISO alpha-3) |
| source_url | string | customerreviews RSS URL pattern (page 1, mostRecent). The row aggregates pages 1-4 fetched with this same URL with page=1..4 substituted. (unit: URL) |
| n_reviews_fetched | integer | Unique reviews fetched for the app across all pages (before the trailing-30-day window is applied). (unit: count) |
| n_reviews_30d | integer | Reviews in the trailing-30-day window that feed the aggregates. (unit: count) |
| data_sufficient | integer | 1 when the app has >= 10 in-window reviews (scores computed); 0 when the row keeps null scores — thin data is signal, not an error. (unit: flag) |
| avg_rating | float | Mean star rating (1-5) over in-window reviews. (unit: stars) |
| pct_1_2star | float | Share of in-window reviews rated 1 or 2 stars. (unit: share) |
| pct_5star | float | Share of in-window reviews rated 5 stars. (unit: share) |
| mean_sentiment | float | Mean review_sentiment (-100..100) over in-window reviews (documented valence lexicon with negation handling). (unit: score) |
| bugs_mentions | integer | In-window reviews mentioning the bugs aspect (keyword assignment; a review may count toward several aspects). (unit: count) |
| bugs_sentiment | float | Mean review_sentiment (-100..100) of in-window reviews mentioning bugs; null with < 5 mentions. (unit: score) |
| pricing_mentions | integer | In-window reviews mentioning the pricing aspect (keyword assignment; a review may count toward several aspects). (unit: count) |
| pricing_sentiment | float | Mean review_sentiment (-100..100) of in-window reviews mentioning pricing; null with < 5 mentions. (unit: score) |
| features_mentions | integer | In-window reviews mentioning the features aspect (keyword assignment; a review may count toward several aspects). (unit: count) |
| features_sentiment | float | Mean review_sentiment (-100..100) of in-window reviews mentioning features; null with < 5 mentions. (unit: score) |
| ux_mentions | integer | In-window reviews mentioning the ux aspect (keyword assignment; a review may count toward several aspects). (unit: count) |
| ux_sentiment | float | Mean review_sentiment (-100..100) of in-window reviews mentioning ux; null with < 5 mentions. (unit: score) |
| performance_mentions | integer | In-window reviews mentioning the performance aspect (keyword assignment; a review may count toward several aspects). (unit: count) |
| performance_sentiment | float | Mean review_sentiment (-100..100) of in-window reviews mentioning performance; null with < 5 mentions. (unit: score) |
| support_mentions | integer | In-window reviews mentioning the support aspect (keyword assignment; a review may count toward several aspects). (unit: count) |
| support_sentiment | float | Mean review_sentiment (-100..100) of in-window reviews mentioning support; null with < 5 mentions. (unit: score) |
| ads_mentions | integer | In-window reviews mentioning the ads aspect (keyword assignment; a review may count toward several aspects). (unit: count) |
| ads_sentiment | float | Mean review_sentiment (-100..100) of in-window reviews mentioning ads; null with < 5 mentions. (unit: score) |
| privacy_mentions | integer | In-window reviews mentioning the privacy aspect (keyword assignment; a review may count toward several aspects). (unit: count) |
| privacy_sentiment | float | Mean review_sentiment (-100..100) of in-window reviews mentioning privacy; null with < 5 mentions. (unit: score) |
| health_score | float | 0-100 app-health composite = 100 * (0.45 * norm(avg_rating) + 0.35 * norm(mean_sentiment) + 0.20 * (1 - clipped 1-star share)). Bounded inputs make it snapshot-comparable without re-normalization. (unit: score) |
| health_rank | integer | Rank by health_score desc within the snapshot (1 = healthiest); ties broken by app_name asc; null rows stay unranked. (unit: rank) |
| version_latest | string | Latest app version string seen in-window (max by int-tuple parse). (unit: text) |
| version_dip_flag | integer | 1 when the latest version has >= 10 in-window reviews and its 1-2-star share exceeds the rest-of-window share by >= 15 pp (a launch regression signal); else 0. (unit: flag) |
| top_aspect | string | The aspect with the lowest sentiment among aspects with >= 5 mentions (the app's worst pain point); ties broken alphabetically; null when no aspect qualifies. (unit: category) |
| row_hash | string | Deterministic 16-hex-char content hash over (as_of, bundle_id, n_reviews_30d, avg_rating, mean_sentiment) — identical input yields an identical snapshot. (unit: hash) |
First 10 sample rows — a preview, not the complete dataset.
| as_of | app_name | bundle_id | track_id | category | country_code | source_url | n_reviews_fetched | n_reviews_30d | data_sufficient | avg_rating | pct_1_2star | pct_5star | mean_sentiment | bugs_mentions | bugs_sentiment | pricing_mentions | pricing_sentiment | features_mentions | features_sentiment | ux_mentions | ux_sentiment | performance_mentions | performance_sentiment | support_mentions | support_sentiment | ads_mentions | ads_sentiment | privacy_mentions | privacy_sentiment | health_score | health_rank | version_latest | version_dip_flag | top_aspect | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-27 | TikTok | com.zhiliaoapp.musically | 835,599,320 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=835599320/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 3.24 | 0.352 | 0.347 | 9.63 | 11 | -14.83 | 4 | — | 36 | 13.89 | 12 | 23.63 | 8 | -22.1 | 5 | -0.73 | 4 | — | 2 | — | 50.3 | 12 | 47.0.0 | 0 | performance | e9449fabc641e495 |
| 2026-09-27 | com.burbn.instagram | 389,801,252 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=389801252/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 2.638 | 0.561 | 0.327 | 0.6 | 9 | -49.52 | 2 | — | 18 | -4.97 | 10 | -31.36 | 1 | — | 14 | -29.07 | 13 | -14.27 | 5 | -39.46 | 36.03 | 20 | 448.0.0 | 0 | bugs | 889d30ad42f48cd6 | |
| 2026-09-27 | Snapchat | com.toyopagroup.picaboo | 447,188,370 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=447188370/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 2.153 | 0.684 | 0.194 | -5.25 | 13 | -43.28 | 22 | -21.06 | 38 | -13.87 | 12 | -30.85 | 5 | 9.8 | 5 | -30.3 | 18 | -16.89 | 6 | -18.29 | 29.55 | 24 | 14.25.0.48 | 0 | bugs | 59d9a71d115beebc |
| 2026-09-27 | X | com.atebits.Tweetie2 | 333,903,271 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=333903271/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 3.51 | 0.352 | 0.571 | 8.99 | 7 | -43.26 | 7 | -33.76 | 15 | -3.1 | 7 | 7.87 | 5 | 24.47 | 8 | -5.22 | 1 | — | 2 | — | 53.23 | 9 | 12.29 | 0 | bugs | 20f8f7e5f643d109 |
| 2026-09-27 | com.facebook.Facebook | 284,882,215 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=284882215/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 3.102 | 0.449 | 0.454 | 6.66 | 12 | -55.93 | 5 | 29.89 | 20 | -20.55 | 9 | -24.34 | 3 | — | 5 | 11.79 | 26 | -1.15 | 3 | — | 44.35 | 16 | 580.0.0 | 0 | bugs | 11358154422645a3 | |
| 2026-09-27 | com.reddit.Reddit | 1,064,216,828 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=1064216828/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 1.878 | 0.786 | 0.179 | -11.01 | 10 | -57.96 | 4 | — | 30 | -32.66 | 17 | -11.1 | 0 | — | 7 | -16.14 | 25 | -20 | 14 | -40.51 | 25.45 | 28 | 2026.38.0 | 0 | bugs | a2295cabc5ceb234 | |
| 2026-09-27 | Discord | com.hammerandchisel.discord | 985,746,746 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=985746746/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 1.918 | 0.76 | 0.174 | -5.9 | 12 | -37.65 | 21 | -9.61 | 41 | -4.92 | 13 | -47.66 | 5 | -57.65 | 16 | -15.44 | 9 | 8.82 | 47 | -10.81 | 26.8 | 27 | 346.0 | 0 | performance | 1d34274dc7910b28 |
| 2026-09-27 | net.whatsapp.WhatsApp | 310,633,997 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=310633997/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 2.765 | 0.541 | 0.367 | -0.03 | 11 | -40.17 | 0 | — | 23 | 2.25 | 2 | — | 4 | — | 22 | -24.09 | 4 | — | 5 | 20.13 | 37.35 | 19 | 26.37.76 | 0 | bugs | a6a04be7b5f0c91f | |
| 2026-09-27 | Telegram | ph.telegra.Telegraph | 686,449,807 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=686449807/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 2.699 | 0.536 | 0.306 | -4.83 | 14 | -72.93 | 19 | -33.83 | 13 | -11.98 | 4 | — | 10 | -7.89 | 11 | -25.54 | 11 | 1.57 | 5 | -53.11 | 35.77 | 21 | 12.9.4 | 0 | bugs | 0bc23fb18a55511c |
| 2026-09-27 | Threads | com.burbn.barcelona | 6,446,901,002 | social | USA | https://itunes.apple.com/us/rss/customerreviews/id=6446901002/page=1/sortBy=mostRecent/json | 196 | 196 | 1 | 3.097 | 0.439 | 0.424 | -2.82 | 13 | -48.05 | 3 | — | 18 | -22.81 | 7 | -20.2 | 3 | — | 8 | -34.95 | 2 | — | 2 | — | 43.05 | 17 | 448.0 | 0 | bugs | 2877e421e6a2d0ca |
- Current
20260927T155255Z-93928100d259 · sha256 93928100d259…
32 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/app_store_review_signals/app_review_sentiment_daily" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/app_store_review_signals/app_review_sentiment_daily").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/app_store_review_signals/app_review_sentiment_daily
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20260927T155255Z-93928100d259 and its content hash, so readers get exactly the data you used.
App Store review-aspect sentiment (agent-curated). (2026). App Store review-aspect sentiment (daily) [Data set, snapshot 20260927T155255Z-93928100d259, sha256 93928100d259]. Datazimuts. Retrieved 2026-09-27, from https://datazimuts.com/en/datasets/app_store_review_signals/app_review_sentiment_daily?snapshot=20260927T155255Z-93928100d259
@misc{dz_app_store_review_signals_app_review_sent_93928100,
title = {{App Store review-aspect sentiment (daily)}},
author = {{App Store review-aspect sentiment (agent-curated)}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/app_store_review_signals/app_review_sentiment_daily?snapshot=20260927T155255Z-93928100d259}},
note = {Snapshot 20260927T155255Z-93928100d259, sha256 93928100d259a529c12ce0178468141db6060ff9ce6970f3ee472f48ee183743; accessed 2026-09-27}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=app_store_review_signals%2Fapp_review_sentiment_daily&lang=en&theme=auto&snapshot=20260927T155255Z-93928100d259&x=mean_sentiment&y=track_id&agg=avg" title="App Store review-aspect sentiment (daily)" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.