TikTok Trending Sounds Scraper - Viral Music & Chart History
Pricing
from $3.00 / 1,000 sound results
TikTok Trending Sounds Scraper - Viral Music & Chart History
TikTok sound tracker for the Popular and Viral Top 50 charts in nine countries. Export trending sounds and songs with audio usage counts, rank changes, music links and dated chart history as JSON, CSV or API. Find sounds gaining usage over 3 or 7 days, with cached example videos. No TikTok login.
Pricing
from $3.00 / 1,000 sound results
Rating
0.0
(0)
Developer
Trending TikTok Data
Maintained by CommunityActor stats
0
Bookmarked
100
Total users
67
Monthly active users
a day ago
Last modified
Categories
Share
Find covered TikTok sounds gaining usage over three or seven days, export Popular and Viral Top 50 charts, or retrieve a sound's observed history. Get structured JSON or CSV for nine countries from a maintained, validated archive.
Each dataset item represents one sound on one country, chart, and UTC observation date. The Actor reads a maintained chart archive. It does not search arbitrary sounds or scrape videos on demand.
Get the latest TikTok trending sounds
{"mode": "latest","countries": ["US"],"chartTypes": ["popular"],"maxRows": 10}
This returns up to 10 sound rows from the latest validated US Popular chart. Each row states its actual observation_date; the Actor does not relabel an older chart as today's data.
Daily TikTok music charts for all nine countries
Use the daily bulk-export example to feed a dashboard, reporting job or music research database:
{"mode": "latest","countries": ["US", "DE", "BR", "JP", "KR", "CA", "FR", "MX", "TR"],"chartTypes": ["popular", "viral"],"maxRows": 900}
This returns up to 900 rows: nine countries × two charts × 50 sounds. At current pricing, 900 delivered rows cost $2.70 plus $0.00005 per start; one full export per day for 30 days costs $81.0015. The example uses a $2.71 maximum charge per run. Fewer available rows cost less. A lower spending limit can stop the export before all selected charts are delivered. The Actor's default Try input remains the small 10-row US sample.
To automate your own daily export:
- Open the example and save the configuration as your own Apify Task. Run it once and check its coverage and cost.
- In Apify Console, create a Schedule, select your Task and set it to once daily. For example, use
0 3 * * *with timezone UTC. Enable the Schedule after checking its next run time. - Download the completed run's dataset as JSON or CSV, or fetch it through the Apify API using the run's
defaultDatasetId. Check the Coverage and missing dates output before importing.
Each run creates a dataset; scheduling does not append to an earlier run's dataset. Merge observations using observation_date + country + chart_type + sound_id. Repeated runs can return the same observed date, and selected charts can have different latest dates. Keep each row's actual date and collection timestamp. Scheduling an export reads the shared archive; it does not trigger a new TikTok collection.
TikTok sound and chart history backfill
{"mode": "history","countries": ["US"],"chartTypes": ["popular", "viral"],"fromDate": "2026-09-29","toDate": "2026-10-05","maxRows": 700}
The range is inclusive and limited to 30 calendar days per run. Historical coverage can have gaps. Check the Coverage and missing dates output for available_dates and missing_dates for each country and chart. The Actor never invents missing observations.
This one-week US backfill returns up to 700 rows and costs up to $2.10 plus $0.00005 per start. Replace the example dates with the fixed dates you need. History dates do not advance automatically when a Task is scheduled; use latest for an ongoing daily export.
For a larger backfill, split the date range or countries into separate runs. maxRows is a global cap of at most 5,000, and each run supports at most 30 dates. For all nine countries and both charts, use chunks of up to five dates: at most 4,500 rows per chunk. Check rows_written, truncated_by_max_rows, truncated_by_spending_limit and missing dates before treating a backfill as complete. Export each run's dataset and combine it using the row key below.
Add soundIds to any mode to filter up to 50 covered sound IDs. Keep IDs as strings. For example:
{"mode": "history","countries": ["US"],"chartTypes": ["viral"],"soundIds": ["7685822474004744200"],"fromDate": "2026-09-27","toDate": "2026-10-04","maxRows": 50}
This retrieves available observations in the selected range. An unknown sound returns no matching rows; it does not start a new collection or watchlist. The coverage summary distinguishes unknown IDs from known sounds outside the selected dates/charts.
Supported countries: United States (US), Germany (DE), Brazil (BR), Japan (JP), South Korea (KR), Canada (CA), France (FR), Mexico (MX), and Turkey (TR).
Track viral TikTok sounds gaining usage this week
{"mode": "insights","countries": ["US"],"chartTypes": ["viral"],"lookbackDays": 7,"sortBy": "usage_change","growthFilter": "rising","maxRows": 20}
This ranks sounds present in the selected end-date charts by their net change in source-reported sound-use count. Choose the Sound usage growth dataset view. Save this input as a Task and schedule it daily to refresh your shortlist; leave asOfDate blank for current results.
For percentage growth, set sortBy to usage_growth_pct and optionally minBaselineUsage to 1000 to exclude tiny baselines. growthFilter: "all" also returns declines, unchanged counts and sounds with an unknown baseline. maxRows is a global cap after filtering, not a separate limit per country.
Seven days compares the end date with exactly seven UTC calendar days earlier. Missing baselines produce null growth rather than an invented zero. Negative count changes are preserved. The count is neither views nor a verified count of newly created videos; country identifies chart membership and does not make the sound-use count country-specific. Do not add the same sound's count across different charts or countries.
Current queries use the latest common chart date with fresh collection for all selected series. If no recent common date exists, the run fails clearly. An explicit asOfDate requests historical insights and can return partial coverage. The archive only observes sounds while they appear in covered charts, so this is not a prediction of which uncharted sound will go viral.
Example TikTok videos for growing sounds
Add "includeExamples": true to an insights request to include up to three cached videos using each sound. Choose the Example videos dataset view for CSV links; JSON also includes caption, creator handle, publication time and available engagement counts.
{"mode": "insights","countries": ["US"],"chartTypes": ["viral"],"lookbackDays": 7,"includeExamples": true,"maxRows": 20}
Examples are collected centrally for the ten strongest positive seven-day changes in each country/chart, then deduplicated by sound and country. Other sounds can have cached examples too, but availability is not guaranteed. Your run never starts another video scrape. These are source-selected examples, not the newest videos, all videos using the sound, or a representative sample. Use published_at to see each video's age; examples_collected_at reports when its metrics were fetched. Missing engagement counts remain null.
The examples_status field is available, stale, not_collected, source_empty or source_error. Samples expire after 36 hours. A failed refresh can still return a previous fresh sample. An explicit asOfDate always returns an empty list with historical_examples_unavailable, preventing current examples from being presented as historical evidence. Unavailable examples do not remove the sound's growth result. With examples disabled, the existing growth row fields remain unchanged.
Three nested examples are included in the sound-result price: one row, one result charge. The coverage summary separates availability across all eligible rows from example_rows_written and examples_written, which count what was actually delivered. Example links can become unavailable on TikTok after collection.
TikTok sound data: usage counts, ranks and music links
Latest and history modes retain the following flat fields for JSON and CSV exports:
| Field | Meaning |
|---|---|
observation_date, country, chart_type, rank | UTC date and ranked chart position. |
sound_id, title, artist | TikTok sound ID, title, and artist. Sound IDs are strings. |
usage_count | Source-reported sound-use count, not video views. |
rank_change, usage_change | Change versus the previous adjacent UTC date, or null if that date or sound is unavailable. Positive rank change means the sound climbed. |
previous_observation_date | Prior validated chart date when the previous calendar day exists, otherwise null. |
is_original_sound, is_commerce_music | Source flags. The commerce flag does not grant or establish music licensing rights. |
duration_seconds, tiktok_url, cover_url | Sound length and source links where available. |
spotify_url, apple_music_url, youtube_music_url | Source-provided music service links when available; otherwise null. |
source_updated_at, collected_at | Source chart update time and collection time. |
Rank and usage count belong to the observation date. Title, artist, artwork, and music service links come from the current normalized sound record and may have changed since that date.
Insights retains the sound metadata but uses the requested period for rank_change and usage_change. It replaces previous_observation_date with explicit baseline fields:
| Field | Meaning |
|---|---|
record_type, calculation_version | sound_insight and calculation version 1. |
baseline_date, lookback_days | Exact baseline date and elapsed three- or seven-day period. |
baseline_rank, baseline_usage_count | Values observed at the exact baseline, or null. |
usage_growth_pct | Signed percentage change, rounded to four decimals; null for a missing or zero baseline. |
growth_status | growing, declining, flat or unknown. |
baseline_status | present, chart_missing or sound_absent. |
observed_days, expected_observations | Dates the sound was observed in the window, versus four or eight expected observations. |
coverage_status | complete, endpoints_only or missing_baseline. An endpoint comparison can be valid despite gaps in between. |
baseline_collected_at | Collection time for the baseline observation, or null. |
One insight result is one sound in one country/chart for one date and period. The same sound in several selected chart contexts can produce several rows. Source chart rankings may update less often than the usage counts; compare source_updated_at with collected_at.
TikTok sound chart coverage and pricing
The run's Coverage and missing dates output reports selected countries/charts, actual available and missing dates, total available records, records written, and whether the run stopped at maxRows or the spending limit. A zero-result request writes no dataset items and still reports coverage.
The primary billable unit is one dataset row: one chart observation or one sound-growth result. Both cost $3 per 1,000 rows, plus the $0.00005 start event at the default memory. A 20-row shortlist costs $0.06 plus start; running it daily for 30 days costs $1.80 plus start events. Apify's displayed pricing is authoritative. Historical gaps, filters and spending limits can reduce the delivered count and bill. Summaries and errors are not written as paid dataset rows.
For insights, the coverage output also reports the resolved date, candidate and comparable counts, missing baselines, sequential filter exclusions and total eligible results. If maxRows is omitted, insights defaults to 20, latest to 50 per selected chart, and history to 5,000. The Try form starts with 10.
For reliable automation, save an Apify Task with your preferred countries, charts, and dates, or call the Actor through the Apify API. The Actor returns stored chart observations and does not need an Apify proxy.
Delivery monitoring
The chart service stores operational receipts containing the Apify run/build IDs, timestamps, export mode, growth period, example request/return counts, elapsed time, row counts, platform event counters, owner/paid/free classification, spending-limit flags, and error category. An ad-hoc Apify webhook confirms the final run status and event counters after the run ends. This lets us investigate incomplete exports and compare accessible results with event counters. Receipts contain no API tokens, customer identity, raw input, or dataset contents. Event counters are operational billing evidence; they do not establish a settled payment or creator payout. Missing final receipts remain unconfirmed.