TikTok Sound Scraper - Videos Using a Sound, No Login avatar

TikTok Sound Scraper - Videos Using a Sound, No Login

Pricing

from $0.25 / 1,000 result returneds

Go to Apify Store
TikTok Sound Scraper - Videos Using a Sound, No Login

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

Dami's Studio

Maintained by Community

Actor 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.

InputSound ids, or tiktok.com/music/ links
OutputOne row per video using the sound
Ceiling2,000 videos per run
Account neededNone 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
}
FieldDefaultWhat it is
musicIdsnoneThe numeric sound id. The form opens with one filled in as an example, which is a starting point rather than a default.
musicUrlsnoneOr 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.
resultsPerPage50Videos for the whole run, 1 to 2,000, despite what the field name suggests. This is also your spend cap.
sessionCookiesnoneOptional. 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.
proxyConfigurationoffLeave it off. It exists for people routing through their own servers at high volume.
notionConnector, notionParentIdnoneOptional. 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/..." }
}
FieldWhat it is
id, webVideoUrlUnique per video, and the link a person can open. Use id as your dedupe key across runs.
text, hashtagsThe caption, and the tags parsed out of it. An empty array when the caption has none.
createTime, regionWhen it was posted, as an ISO timestamp, and the region TikTok reports.
playCount, diggCount, commentCount, shareCount, collectCount, downloadCountViews, likes, comments, shares, saves and downloads, as the feed reports them at read time.
isAdTikTok's own flag for branded content.
videoDuration in seconds, the still and animated covers, playAddr without the watermark and downloadAddr with it.
authorThe account that posted it: id, handle, display name and avatar.
musicTitle, 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.

RowHow to spot itBilled
A videook: true and type: "video"yes
A diagnosticok: false and an errorCodeno

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

  1. Open TikTok Sound Scraper and click Try for free.
  2. Put the sound id into Music IDs, one per line, or paste links into Music URLs.
  3. Set Max videos per sound. It is the total for the run, so start at 50 while you look at the output shape.
  4. Click Start.
  5. 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 music block on each video is the nearest thing, and it is often null.
  • 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 wantUse
The videos using a soundThis one
Videos under a hashtagTikTok Hashtag Scraper
A profile plus its videos, or a keyword searchTikTok Scraper
Follower and likes counts for a list of handlesTikTok Profile Scraper
Comments under a videoTikTok 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.