TikTok Sound Scraper — $0.25/1k, No Login or API Key
Pricing
Pay per event
TikTok Sound Scraper — $0.25/1k, No Login or API Key
There is a page for every TikTok sound listing the videos that used it, and this walks it: play, like, comment, share and save counts, hashtags, region, author, and both the watermark-free and watermarked MP4 links. $0.25 per 1,000 videos plus a $0.001 run start.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
TikTok Sound Scraper
Give it a TikTok sound and it returns the videos using that sound, one row per video.
You pass either the sound's numeric ID or a full /music/ link. The run walks that sound's feed and hands back each video with its counters, caption, author and file links. TikTok serves this feed to signed-out visitors, so the run doesn't use an account of yours.
What you get per video
| Field | Notes |
|---|---|
id | TikTok's video id. |
webVideoUrl | https://www.tiktok.com/@handle/video/<id>. |
text | The caption. |
createTime | ISO timestamp. |
hashtags | Parsed out of the caption. |
region | Two-letter code, e.g. US. |
isAd | Whether TikTok flags the video as an ad. |
playCount, diggCount, commentCount, shareCount, collectCount, downloadCount | Views, likes, comments, shares, saves, downloads, as the feed reports them at run time. |
Three nested objects:
video—duration,cover,dynamicCover,playAddr(the MP4 without the watermark) anddownloadAddr(the watermarked one).author—id,uniqueId,nickname,avatar.music—id,title,authorName,playUrl,original,duration. This one comes backnullon videos where the feed doesn't attach music info, so don't key anything off it without a null check.
Input
{"musicIds": ["7654341603238103821"],"resultsPerPage": 200}
musicUrls does the same job with full links, and the ID gets pulled out of the slug:
{"musicUrls": ["https://www.tiktok.com/music/original-sound-7654341603238103821"]}
The ID is the trailing digits of any /music/ URL. You'll also find it in the music.id field of anything this scraper (or a TikTok video scraper) returns.
| Field | Default | Notes |
|---|---|---|
musicIds | — | Sound IDs. Several per run is fine. |
musicUrls | — | Or /music/ links. Mix both if you like. |
resultsPerPage | 50 | Cap on videos per sound, 1 to 2000. |
sessionCookies | empty | Optional, see below. |
proxyConfiguration | off | Optional. The scraper works without one. |
notionConnector / notionParentId | — | Optional delivery into Notion via an Apify MCP connector. |
Limits worth knowing
- 2,000 videos per sound is the ceiling the input box accepts. Quiet sounds run out well before that and the run just stops.
- You get the feed's order, which is roughly newest first. There's no sort option, because the source doesn't offer one.
- CDN links expire.
playAddr,coverandavatarare signed URLs with an expiry a few days out. Download what you need in the same run or soon after; don't store them as permanent links. - Counts are a snapshot at the moment of the run, not a history.
- A sound that returns nothing gives you one
ok: falserow withNO_RESULTS,BLOCKEDorRATE_LIMITEDrather than an empty dataset, so you can tell "no videos" apart from "something broke".
Your own cookie (optional)
Runs work with nothing from you. If you're tracking a lot of sounds and want a rate limit nobody else shares, paste your own TikTok sessionid into sessionCookies (Chrome: F12 → Application → Cookies → tiktok.com → sessionid), one per line. Several get rotated. It's only ever sent to TikTok and never written to the log. An expired cookie isn't fatal, the run just carries on without it.
Billing
$0.001 when a run starts, then $0.00025 per video returned, which is $0.25 per 1,000. Flat on every plan.
You pay for rows you got. Duplicates are dropped before the charge fires, and diagnostic rows (ok: false) are never charged, so a sound with no videos costs you the $0.001 start fee and nothing more.