TikTok Sound Scraper - Videos Using a Sound
Pricing
from $0.24 / 1,000 results
TikTok Sound Scraper - Videos Using a Sound
Scrape the TikTok videos that use a sound, by sound id or /music/ link. Each video row has plays, likes, comments, shares and saves, the caption, hashtags and author, and the MP4 links. $0.25 per 1,000 videos.
Pricing
from $0.24 / 1,000 results
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
Scrape the TikTok videos that use a sound: give it a sound and get the videos posted with it, one row each, with plays, likes, comments, shares and saves, the caption, the author, and the video file links. Nothing to log into.
Two things to know before the first run. The limit is run wide, not per sound: three sounds with a limit of 50 gives you 50 videos in total, and the first sound can take the lot. And what you get is the feed TikTok serves under that sound today, in the feed's own order, which is not a complete history of everything ever posted with it.
| Input | Sound ids, or tiktok.com/music/ links |
| Output | One row per video using the sound: plays, likes, comments, shares, saves, caption, hashtags, author, branded flag and the video file links |
| Ceiling | 2,000 videos per run |
| Account needed | None |
| Price | $0.25 per 1,000 videos on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 20,000 |
🔍 What TikTok Sound Scraper does
Every sound on TikTok has its own page of videos. This walks that page and flattens each video into a row, the same row shape our hashtag scraper returns, so the two can go into the same table.
The id is the trailing digits of a /music/ link. You will also find it in the music.id field of
rows from our other TikTok scrapers, which is the usual way people get here: spot a sound that keeps
appearing, then pull everything using it.
Ids from musicIds and ids read out of musicUrls are merged, so listing the same sound twice
costs you nothing extra. A sound with no videos gets a row saying so, and the run moves on to the
next one.
📋 What data you get from each TikTok video using a sound
| What you get | Field |
|---|---|
| Video id and the link a person can open | id, webVideoUrl |
| Caption, and the hashtags in it | text, hashtags |
| When it went up, and the region TikTok reports | createTime, region |
| Plays, likes, comments, shares, saves and downloads | playCount, diggCount, commentCount, shareCount, collectCount, downloadCount |
| Branded content flag | isAd |
| Length, still and animated covers | video.duration, video.cover, video.dynamicCover |
| The video file links | video.playAddr, video.downloadAddr |
| Who posted it: id, handle, display name, avatar | author |
| The sound block, when TikTok attaches one | music |
▶️ How to scrape TikTok videos by sound
- Open TikTok Sound Scraper and click Try for free.
- Put the sound id into Music IDs, one per line, or paste links into Music URLs.
- Set Max videos per sound. It is the total for the run, so start at 50 while you look at the output.
- Click Start.
- Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.
Give it at least one sound. A run with nothing in either box fails rather than returning a sample.
💰 How much does it cost to scrape TikTok videos by sound?
$0.25 per 1,000 videos on the Free plan. Paid plans pay a little less: $0.248 on Starter, $0.246 on Scale and $0.244 on Business. On the free plan, the $5 Apify gives you each month covers about 20,000 videos.
You pay for videos delivered. Diagnostic rows and duplicates caught inside a run are not charged.
resultsPerPage is the ceiling on both the rows and the spend.
📥 What you give it
{"musicIds": ["7654341603238103821"],"resultsPerPage": 200}
| Field | Default | What it is |
|---|---|---|
musicIds | none | The numeric sound id. The form opens with one filled in as an example, which is a starting point rather than a default. |
musicUrls | none | Or paste links like https://www.tiktok.com/music/original-sound-7654341603238103821. The id is read out of the slug, so pass musicIds when you have the digits: a slug carrying another long number can be read wrong, and a link with no id in it is skipped without a row. |
resultsPerPage | 50 | Videos for the whole run, 1 to 2,000, despite what the field name suggests. This is also your spend cap. |
sessionCookies | none | Optional. Your own TikTok sessionid. The field is stored encrypted. |
proxyConfiguration | off | Optional. Your own servers are used exactly as given. |
notionConnector, notionParentId | none | Optional. Write each video into a Notion database as well as the dataset. |
📤 What you get back
A real row from a real run, with the media links trimmed:
{"ok": true,"type": "video","id": "7654341587425692942","webVideoUrl": "https://www.tiktok.com/@tiktok/video/7654341587425692942","text": "what are fans searching about @Malcolm Todd on TikTok? expect the unexpected during TikTok In The Mix with Jack Coyne, presented by @T-Mobile","createTime": "2026-06-22T21:54:52.000Z","hashtags": [],"region": "US","playCount": 32128243,"diggCount": 47298,"commentCount": 1058,"shareCount": 435,"collectCount": 4902,"downloadCount": 33,"isAd": true,"video": { "duration": 71, "cover": "https://p16-common-sign.tiktokcdn.com/...", "playAddr": "https://v19.tiktokcdn.com/...", "downloadAddr": "https://v19.tiktokcdn.com/..." },"music": null,"author": { "id": "107955", "uniqueId": "tiktok", "nickname": "TikTok", "avatar": "https://p16-common-sign.tiktokcdn.com/..." }}
| Field | How to read it |
|---|---|
id | Unique per video. Use it as your dedupe key across runs. |
hashtags | An empty array when the caption has none, as above. |
playCount and the other counters | As the feed reports them at read time. A counter TikTok did not send reads 0. |
isAd | TikTok's own flag for branded content. |
video.playAddr, video.downloadAddr | The video file links. Signed links that stop working after a while. |
music | Title, artist, length and whether it is an original sound. It comes back null on plenty of rows, including the real one above, so check before you read into it. |
🧾 Reading the output
Two kinds of row land in your dataset.
| Row | How to spot it | Billed |
|---|---|---|
| A video | ok: true and type: "video" | yes |
| A diagnostic | ok: false and an errorCode | no |
Filter on ok == true and you have your data.
| Code | What it means |
|---|---|
NOT_FOUND | TikTok has no sound with that id. |
NO_RESULTS | The sound exists but nothing came back for it. |
RATE_LIMITED | That sound would not answer this run. Re-running usually clears it. |
NOT_SERVED | This video was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED. |
TIME_LIMIT | The run neared its time limit and stopped, keeping every video it had delivered. If none had come back by then, the run ends as failed. |
One quirk of the Overview table: it shows five columns, so a diagnostic row reads as a nearly blank line there. Open the row itself or download the JSON and everything is present.
💡 What people use it for
- Checking whether a sound is actually travelling before building a post around it.
- Finding the creators who picked a track up early, since every row carries the author handle.
- Watching a sound your brand paid for and counting the videos that used it.
From a sound you keep hearing to the creators using it, in three runs:
- Run TikTok Hashtag Scraper on a tag in
your niche and look for a
music.idthat keeps repeating. - Paste that id into Music IDs here and sort the rows on
createTimeto see who used it first. - Copy their
author.uniqueIdinto TikTok Profile Scraper for follower counts.
🚧 What it does not do
- No row for the sound itself. There is no title, artist or total-video-count row, only the
videos using it. The
musicblock on each video is the nearest thing, and it is oftennull. - Not the full history of a sound. You get the feed TikTok is serving now.
- The limit is shared across your sounds. One popular sound can use the whole run.
- No sort option. You get the feed's own order, because that is all TikTok offers here.
- Media links expire. They are signed and short lived.
- A counter TikTok does not send reads as
0. - An empty input fails the run instead of returning a sample.
- It is not an official TikTok tool. Dami's Studio is independent and is not affiliated with or endorsed by TikTok, or by any other company named on this page.
🧭 Which TikTok scraper do you need?
| If you want | Use |
|---|---|
| Videos using one sound | This one |
| Videos posted under a hashtag | TikTok Hashtag Scraper |
| A profile plus its newest videos, or a keyword search | TikTok Scraper |
| Follower and like counts for a list of handles | TikTok Profile Scraper |
| Comments under a video | TikTok Comments Scraper |
| The hashtags ranking in a country right now | TikTok Trending Hashtags |
❓ Questions people ask
Where do I find a TikTok sound id?
It is the digits at the end of a /music/ link, and it is in the music.id field of rows from our
hashtag and video scrapers.
Do I need a TikTok account to scrape a sound?
No. The cookie field is optional.
Is the limit per sound or per run?
Per run. The field is called "Max videos per sound", but the number you set is the total the run will deliver.
Why is music null on a sound scraper?
Because the feed does not always attach the sound block to each video it returns. You already know which sound you asked for, so the row is still yours.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code
for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/tiktok-music-scraper. Either way the
run happens on your Apify account at the same price.
Is scraping TikTok legal?
This reads public videos only, never private accounts or messages. Results can still contain personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Include the sound ids you used and the run ID, and the log is usually enough for us to see what happened.