Tiktok Sound Music Scraper
Pricing
from $2.40 / 1,000 sound results
Tiktok Sound Music Scraper
TikTok Sound / Music Scraper extracts TikTok sound pages, music metadata, and videos using a sound, including captions, creators, stats, and URLs. Use it for trend tracking, viral audio discovery, campaign monitoring, creator research, and analytics.
Pricing
from $2.40 / 1,000 sound results
Rating
0.0
(0)
Developer

Delowar Munna
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
TikTok Sound / Music Scraper
Extract TikTok sound pages, music metadata, and videos using a sound for trend tracking, campaign monitoring, creator discovery, and analytics workflows.

What does this actor do?
TikTok Sound / Music Scraper is an Apify Actor that extracts public TikTok data for one or more sounds/music, including:
- Video records — video metadata, engagement metrics (plays, likes, comments, shares, saves), creator info, hashtags, mentions, and content classification
- Sound summary records — sound-level stats with usage counts, top hashtags, top creators, and run health fields
- Sound lineage — every output row traces back to the exact source sound that produced it
This actor is designed for sound intelligence — not just fetching videos, but providing analytics-ready output for viral audio discovery, campaign monitoring, creator research, and AI workflows.
Why use this actor?
- Multi-sound batching — scrape one or many sounds in a single run
- Keyword-based sound search — discover sounds by keyword without knowing exact URLs
- Rich structured output — video-level and sound-level data with creator details and engagement metrics
- Sound lineage — every row shows which source sound produced it, making cross-sound comparison easy
- Sound summaries — per-sound summary rows with usage counts, top hashtags, top creators, and run status
- Optional cross-sound deduplication — remove duplicate videos when the same video appears under multiple sounds
- Consistent null handling — missing optional fields return
null, never omitted unpredictably - Structured error handling — failed sounds emit error records instead of breaking the run
- AI-ready datasets — feed results into clustering, summarization, trend scoring, and reporting pipelines
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
sounds | string[] | [] | TikTok sound/music URLs or numeric sound IDs |
searchKeywords | string[] | [] | Search for sounds by keyword — discovered sounds are scraped automatically |
maxSoundsPerKeyword | integer | 5 | Maximum sounds to scrape from each keyword search (1–50) |
maxVideosPerSound | integer | 50 | Maximum videos to extract per sound (1–500) |
includeSoundSummary | boolean | true | Emit sound summary records |
includeCreatorFields | boolean | true | Include creator fields on video records |
includeVideoFields | boolean | true | Include video records in output |
deduplicateVideosAcrossSounds | boolean | false | Deduplicate videos across sounds in a batch |
stopOnError | boolean | false | Stop entire run on first sound failure |
debugMode | boolean | false | Enable verbose logging |
proxyConfiguration | object | — | Apify proxy configuration (residential recommended) |
Sound input formats
The actor accepts sounds in these formats:
- Full URL:
https://www.tiktok.com/music/original-sound-1234567890123456789 - Numeric ID:
1234567890123456789 - Search keyword: provide keywords in
searchKeywordsto discover sounds automatically
You can combine all three input modes in a single run. Duplicates are removed automatically.
Sample input: Viral sound tracking
Track videos that use a specific sound and monitor how widely it spreads.
{"sounds": ["https://www.tiktok.com/music/original-sound-7442277701498820385"],"maxVideosPerSound": 50,"includeSoundSummary": true,"includeCreatorFields": true,"includeVideoFields": true,"proxyConfiguration": {"useApifyProxy": true}}
Sample input: Discover sounds by keyword
Find trending sounds related to a topic without knowing specific URLs. The actor searches TikTok for sounds matching each keyword and scrapes the top results.
{"searchKeywords": ["swift", "trending beat"],"maxSoundsPerKeyword": 3,"maxVideosPerSound": 50,"includeSoundSummary": true,"includeCreatorFields": true,"proxyConfiguration": {"useApifyProxy": true}}
Output
The actor outputs a dataset where each video is one row with full sound lineage. Results are available in five dataset views:
- Overview — combined view with record type, sound info, key metrics, and creator data
- Videos — full video details with engagement data
- Engagement — engagement metrics for quick comparison
- Creators — creator/author data with their video performance
- Sound Summary — sound-level stats, usage counts, top hashtags, and run health

Sound summary record
When includeSoundSummary is enabled, the actor emits one summary record per sound. This record appears first in the dataset with recordType: "sound-summary".
{"recordType": "sound-summary","sourceInput": "search:swift","soundTitle": "Suspicious and comical strings(1013021)","soundAuthor": null,"soundId": "7031618809568757762","soundUrl": "https://www.tiktok.com/music/Suspicious-and-comical-strings-1013021-7031618809568757762","soundDuration": null,"soundCoverUrl": null,"soundUsageCount": null,"requestedMaxVideos": 50,"returnedVideos": 57,"deduplicatedVideos": 0,"topCreatorsCount": 44,"topHashtags": ["fyp", "humour", "reaction", "FeriaArtePopularXcaret", "ramadanterang", "lebarantenang", "prison", "seafood", "faim", "lyon"],"runStatus": "completed","startedAt": "2026-03-17T05:11:23.572Z","finishedAt": "2026-03-17T05:11:28.228Z","durationSeconds": 5}
Video record
Each video record carries full sound lineage, video metadata, engagement metrics, creator info, and content classification.
{"recordType": "video","sourceInput": "search:swift","sourceSoundUrl": "https://www.tiktok.com/music/Suspicious-and-comical-strings-1013021-7031618809568757762","sourceSoundId": "7031618809568757762","soundTitle": "Suspicious and comical strings(1013021)","soundAuthor": "yumi","soundDuration": 235,"soundCoverUrl": "https://p16-common.tiktokcdn-us.com/tos-alisg-v-2774/43faa110cb7545508bcb8448e005da2d~tplv-tiktokx-cropcenter:720:720.jpeg","soundUsageCount": null,"scrapedAt": "2026-03-17T05:11:28.226Z","videoId": "7556065836314774802","videoUrl": "https://www.tiktok.com/@luzvaldezmx/video/7556065836314774802","caption": "Feria Xcaret de arte popular mexicano 2025 @Xcaret #FeriaArtePopularXcaret ","createTime": "2025-10-01T01:54:42.000Z","durationSeconds": 73,"playCount": 7500000,"likeCount": 771700,"commentCount": 7774,"shareCount": 42000,"saveCount": 67900,"engagementTotal": 889374,"hashtags": ["FeriaArtePopularXcaret"],"mentions": ["xcaretparks"],"isAd": false,"region": null,"language": "es","videoThumbnailUrl": "https://p16-common-sign.tiktokcdn-us.com/...","position": 1,"isPartial": false,"errorType": null,"errorMessage": null,"creatorUsername": "luzvaldezmx","creatorDisplayName": "Luz Valdez","creatorProfileUrl": "https://www.tiktok.com/@luzvaldezmx","creatorId": "193707532996145152","creatorVerified": false,"creatorFollowersCount": 810400,"creatorFollowingCount": 591,"creatorLikesCount": 28500000}
Engagement view record
The engagement view highlights metrics for quick comparison.
{"videoId": "7614702821019061526","caption": "Tiger shark came in like what's all this commotion?","creatorUsername": "scubadan_","playCount": 7800000,"likeCount": 641000,"commentCount": 3181,"shareCount": 33500,"saveCount": 51700,"engagementTotal": 729381,"isAd": false,"soundTitle": "Suspicious and comical strings(1013021)","sourceSoundId": "7031618809568757762"}
Creators view record
The creators view surfaces author details alongside their video performance.
{"creatorUsername": "scubadan_","creatorDisplayName": "SCUBA DAN","creatorProfileUrl": "https://www.tiktok.com/@scubadan_","creatorVerified": false,"creatorFollowersCount": 1700000,"creatorFollowingCount": 11,"creatorLikesCount": 82000000,"creatorId": "6820369642847077381","videoId": "7614702821019061526","caption": "Tiger shark came in like what's all this commotion?","playCount": 7800000,"engagementTotal": 729381,"soundTitle": "Suspicious and comical strings(1013021)"}
Error record
Failed sounds emit structured error records so individual failures don't break the run.
{"recordType": "error","error": true,"errorType": "no_data","errorMessage": "No data found for sound 1234567890123456789","sourceInput": "1234567890123456789","sourceSoundUrl": "https://www.tiktok.com/music/1234567890123456789","sourceSoundId": "1234567890123456789","scrapedAt": "2026-03-17T05:30:00.000Z"}
Output fields
Source sound lineage (all video records)
| Field | Description |
|---|---|
recordType | "video", "sound-summary", or "error" |
sourceInput | The original sound input as provided (or "search:keyword" for keyword-discovered sounds) |
sourceSoundUrl | Full TikTok sound/music URL |
sourceSoundId | TikTok internal sound/music ID |
soundTitle | Sound/music title |
soundAuthor | Sound/music author name |
soundDuration | Sound duration in seconds |
soundCoverUrl | Sound cover art URL |
soundUsageCount | Number of videos using this sound (if available) |
scrapedAt | ISO 8601 timestamp of extraction |
Video fields
| Field | Description |
|---|---|
videoId | TikTok video ID |
videoUrl | Full video URL |
caption | Video caption/description |
createTime | Video creation time (ISO 8601) |
durationSeconds | Video duration in seconds |
Engagement fields
| Field | Description |
|---|---|
playCount | Play/view count |
likeCount, commentCount, shareCount, saveCount | Engagement counts |
engagementTotal | Sum of likes + comments + shares + saves |
Creator fields (optional)
| Field | Description |
|---|---|
creatorUsername, creatorDisplayName, creatorId | Creator identification |
creatorProfileUrl | Creator profile URL |
creatorVerified | Verified badge status |
creatorFollowersCount, creatorFollowingCount, creatorLikesCount | Creator stats |
Content classification
| Field | Description |
|---|---|
hashtags | Array of hashtag strings on the video |
mentions | Array of @mentions in the caption |
isAd | Sponsored/ad indicator |
region | Region/country code (best-effort) |
language | Content language (if available) |
videoThumbnailUrl | Thumbnail URL |
Quality fields
| Field | Description |
|---|---|
position | Position of this video in the sound page listing |
isPartial | Whether this record has incomplete data |
errorType | Error type (null when no error) |
errorMessage | Error message (null when no error) |
Sound summary fields
| Field | Description |
|---|---|
soundId, soundUrl, soundTitle, soundAuthor | Sound identification |
soundDuration, soundCoverUrl, soundUsageCount | Sound metadata |
requestedMaxVideos | Configured max videos per sound |
returnedVideos | Actual number of videos returned |
deduplicatedVideos | Number of videos removed by deduplication |
topCreatorsCount | Count of unique creators across returned videos |
topHashtags | Top 20 hashtags ranked by frequency across returned videos |
runStatus | "completed" or "no_videos" |
startedAt, finishedAt | Run timing |
durationSeconds | Elapsed time for this sound |
Best-effort fields
The following fields depend on what TikTok includes in its responses. They are extracted when available and returned as null when not:
soundUsageCount, soundCoverUrl, soundDuration, saveCount, region, language, creatorFollowersCount, creatorFollowingCount, creatorLikesCount, videoThumbnailUrl
Use cases
- Viral sound tracking — track videos that use a specific sound and monitor how widely it spreads
- Campaign monitoring — track brand or campaign audio usage across creators and videos
- Music promotion research — analyze creator adoption of a track, content style, and performance
- Sound discovery — search for sounds by keyword to find trending or relevant audio
- Trend intelligence — find which sounds are associated with emerging niches, hashtags, and creators
- Creator discovery — identify creators repeatedly using certain sounds or campaign audio
- Enrichment pipeline — use sound-derived videos as inputs for video, profile, comment, or hashtag scraping
Tips and best practices
- Use
sourceSoundIdto trace results — every record includes the sound that produced it - Check
recordType— the Overview tab shows"sound-summary","video", and"error"so you can easily distinguish record types - Start small — use
maxVideosPerSound: 10–20for initial exploration, then increase - Batch multiple sounds — scrape many sounds in a single run for comparative analysis
- Use keyword search — provide
searchKeywordsto discover sounds without knowing exact URLs - Schedule for monitoring — run on a schedule to track sound momentum over time
- Toggle output sections — disable
includeCreatorFieldsto reduce output size when you don't need creator data - Use deduplication — enable
deduplicateVideosAcrossSoundswhen batching multiple sounds that may share videos
Proxy configuration
Residential proxies are recommended for reliable TikTok scraping.
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Integrations
- Google Sheets — export sound data to spreadsheets for team dashboards
- Slack/email — set up notifications when new content appears using a sound
- Webhooks — trigger downstream workflows when a run completes
- API — access results programmatically via the Apify API
- Other actors — feed discovered video URLs into TikTok Video Scraper, creator usernames into TikTok Profile Scraper, or hashtags into TikTok Hashtag Scraper for deeper analysis
Limitations
- Results per sound depend on how much data TikTok returns on the sound page. The actual number may be lower than
maxVideosPerSound. - Some fields are best-effort and may be
nulldepending on what TikTok includes in its page data (see "Best-effort fields" above). - This actor scrapes public sound pages. It does not access private or restricted content.
- TikTok sound pages do not reliably support sorting; results reflect TikTok's default ordering.
- Very large sounds may return partial results depending on platform constraints.
- Keyword search results depend on TikTok's search ranking and may vary by region and session.
FAQ
How many results can I get per sound? Up to 500 per sound. The actual number depends on how much data TikTok returns for that sound page.
Why are some fields null?
Fields like soundUsageCount, region, language, saveCount, and creator stats depend on what TikTok includes in its page data. They are extracted on a best-effort basis and returned as null when unavailable.
What is the first record with mostly empty video fields?
That's the sound-summary record (recordType: "sound-summary"). It contains sound-level metadata only — not video data. Use the recordType column in the Overview tab to identify it.
Can I use sound IDs instead of URLs?
Yes. You can provide numeric sound IDs directly (e.g., "7442277701498820385") and the actor will resolve the sound page.
How does keyword search work?
When you provide searchKeywords, the actor navigates to TikTok's music search page for each keyword, extracts the matching sounds (up to maxSoundsPerKeyword), and then scrapes each discovered sound's page for videos. The sourceInput field on those records will show "search:your keyword" so you can trace which keyword discovered each sound.
What happens if a sound fails?
Failed sounds emit a structured error record with error: true and errorMessage, so you can identify failures without the whole run breaking. Set stopOnError: true if you want the run to stop on the first failure.
Is the sound-summary record charged?
Yes. The pay-per-event pricing charges for each record pushed to the dataset, including summary records. Error records are not charged.
How does cross-sound deduplication work?
When deduplicateVideosAcrossSounds is enabled, if the same video appears under multiple sounds in a batch run, it is only included once (for the first sound that returned it).