TikTok Sound Scraper - Videos Using a Sound, No Login
Pricing
from $0.25 / 1,000 result returneds
TikTok Sound Scraper - Videos Using a Sound, No Login
Scrape the TikTok videos that use a sound. Every TikTok sound has its own page of videos, and this walks it. Each video has play, like, comment, share and save counts. You also get hashtags, region and author. Both MP4 links are there, with and without the watermark. $0.25 per 1,000 videos.
Pricing
from $0.25 / 1,000 result returneds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
TikTok Sound Scraper: every video using a sound, with its counts and links
Give it a TikTok sound and you get the videos posted with it, one row each, with plays, likes, comments, shares and saves, the caption, the author, and both 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 |
| Ceiling | 2,000 videos per run |
| Account needed | None from you |
| Price | $0.25 per 1,000 videos, flat on every plan |
๐ 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
anything our other TikTok scrapers return, 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 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. |
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, used only for sounds that came back empty. Use a throwaway account: the value sits in the run input, which anyone who can open the run can read. |
proxyConfiguration | off | Leave it off. It exists for people routing through their own servers at high volume. |
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 | What it is |
|---|---|
id, webVideoUrl | Unique per video, and the link a person can open. Use id as your dedupe key across runs. |
text, hashtags | The caption, and the tags parsed out of it. An empty array when the caption has none. |
createTime, region | When it was posted, as an ISO timestamp, and the region TikTok reports. |
playCount, diggCount, commentCount, shareCount, collectCount, downloadCount | Views, likes, comments, shares, saves and downloads, as the feed reports them at read time. |
isAd | TikTok's own flag for branded content. |
video | Duration in seconds, the still and animated covers, playAddr without the watermark and downloadAddr with it. |
author | The account that posted it: id, handle, display name and avatar. |
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. NO_RESULTS means the sound exists but nothing came
back for it, RATE_LIMITED and BLOCKED mean that sound would not answer this run and re-running
usually clears it. None of them is charged.
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.
โถ๏ธ How to run it
- 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 shape.
- Click Start.
- Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.
๐ฐ How much does it cost?
$0.25 per 1,000 videos. Flat on every Apify plan, no volume tiers.
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 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.
- Pulling reference clips for an edit: caption, duration and both file links in one row.
๐ง 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 consume the whole run.
- No sort option. You get the feed's own order, because that is all the source offers.
- Media links expire. They are signed and short lived. Fetch the file during the run if you want to keep it.
- A counter TikTok does not send reads as
0. - An empty input fails the run instead of returning a sample. Give it at least one sound.
๐งญ Which TikTok scraper do you need?
| If you want | Use |
|---|---|
| The videos using a sound | This one |
| Videos under a hashtag | TikTok Hashtag Scraper |
| A profile plus its videos, or a keyword search | TikTok Scraper |
| Follower and likes counts for a list of handles | TikTok Profile Scraper |
| Comments under a video | TikTok Comments Scraper |
โ Questions people ask
Where do I find a 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? No. The cookie field is optional and only comes into play for sounds that came back empty without it.
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.
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.
Can I run it on a schedule? Yes. Use Apify's scheduler, or start it from the API and read the dataset when it finishes.
๐ 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.