TikTok Music Posts Scraper avatar

TikTok Music Posts Scraper

Pricing

$0.15 / 1,000 music posts

Go to Apify Store
TikTok Music Posts Scraper

TikTok Music Posts Scraper

Collect TikTok music posts linked to selected sounds, or return matching sound records without expanding them. Use sound IDs, TikTok sound page URLs, or keywords and review structured sound, post, creator, engagement, and source-link fields.

Pricing

$0.15 / 1,000 music posts

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

🎵 Find TikTok Posts by Sound

For music researchers, social media teams, and creators, this Actor finds public TikTok sounds and the video posts that use them. It saves structured sound and post data with creators, captions, engagement counts, and source links, so you can compare how sounds are used and review the data in a dataset.

📦 TikTok sound and post rows

The default dataset contains sound rows or post rows. Sound rows keep the sound identity and metadata. Post rows keep the post details and the sound linked to that post. Source URLs remain references to TikTok pages or media, not downloaded files.

▶️ Run from an ID, URL, or keyword

Run steps

  1. Choose Posts to collect videos for each selected or discovered sound, or choose Sounds to return sound metadata only.
  2. Choose one source method: Sound IDs, Sound page URLs, or Keyword. Fill only the matching source field because inactive source fields are ignored.
  3. Add sound IDs, public TikTok sound page URLs, or one or more discovery keywords. A region preference applies only to keyword discovery.
  4. Set Sounds per keyword or Posts per sound when you want a limit. Leave either field empty to return all available results until the source is exhausted.
  5. Start the Actor and open the dataset link in the Output panel.

⚙️ Input

Input fields

FieldTypeWhat it does
resultTypestringChoose posts to collect video posts linked to each selected or discovered sound, or sounds to return sound metadata without expanding sounds into posts.
findBystringChooses one source method: soundIds, soundUrls, or keyword. Enter values only in the matching source field.
soundIdsarray of stringsOne or more TikTok sound IDs used when findBy is soundIds.
soundUrlsarray of objectsOne or more public TikTok music or sound page entries used when findBy is soundUrls.
soundUrls[].urlstringThe public TikTok music or sound page URL for one entry.
keywordsarray of stringsOne or more keywords used to find matching TikTok sounds when findBy is keyword.
regionstringOptional region preference used only for keyword discovery, such as US. Leave it blank to use the source default.
maxSoundsPerKeywordintegerLimits matching sounds returned or used for each discovery keyword. Leave it empty to return all available matching sounds for each keyword until the source is exhausted.
maxPostsPerSoundintegerLimits posts collected for each selected or discovered sound when resultType is posts. It is ignored for sounds. Leave it empty to return all available posts for each sound until the source is exhausted.

Example input

This example uses the prefilled post flow with one sound ID.

{
"resultType": "posts",
"findBy": "soundIds",
"soundIds": [
"6787016446238017538"
],
"maxPostsPerSound": 20
}

🧾 Output

The Output panel provides a link to the default dataset. The dataset uses two materially different row shapes.

Run output

FieldTypeWhat it does
resultsstringOpens the collected sound or post rows in the default dataset.

Sound row fields

FieldTypeWhat it does
resultTypestringAlways sound for a sound row.
discoveryKeywordstringThe keyword that first led to the sound during keyword discovery, when applicable.
soundobjectSound data reported by TikTok.
sound.soundIdstringTikTok's sound ID.
sound.titlestringSound title. This is required for a sound row.
sound.artiststringArtist reported for the sound, when available.
sound.albumstringAlbum reported for the sound, when available.
sound.durationSecondsnumberSound duration in seconds, when available.
sound.artworkUrlstringLink to the sound artwork, when available.
sound.audioUrlstringTikTok audio reference, when available. This is not a file download.
sound.sourcePageUrlstringTikTok page for the sound, when available.
sound.postCountintegerNumber of posts reported for the sound, when available.
sound.rightsobjectRights details reported by TikTok, when available.
sound.rights.isOriginalbooleanWhether TikTok reports the sound as original.
sound.rights.isCommercialbooleanWhether TikTok reports the sound as commercial.
sound.rights.isCopyrightedbooleanWhether TikTok reports the sound as copyrighted.

Example sound row

This unshortened row is a genuine sound row from a successful keyword search.

{
"resultType": "sound",
"discoveryKeyword": "music",
"sound": {
"soundId": "7467649576808303377",
"title": "original sound",
"artist": "8D MUSIC 🎧",
"durationSeconds": 66,
"artworkUrl": "https://p16-common-sign.tiktokcdn-eu.com/tos-alisg-avt-0068/eded1d7d312cd3ae000c4270a098f0ea~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=10399&refresh_token=dc69921e&x-expires=1790161200&x-signature=fqxjgl9BpKpPA16ohwMEG7kOMAY%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=no1a",
"audioUrl": "https://v45.tiktokcdn-eu.com/24d3e9898976a0e07b27e1cedfa0770a/6ab26915/video/tos/alisg/tos-alisg-v-27dcd7/oY5VEzBz0ugiKVozABMAQ5XfdlYwZiIBQ2oAoT/?a=1233&bti=ODszNWYuMDE6&&bt=125&ft=cD1VS7z7ThWH5W7HLGZmo0P&mime_type=audio_mpeg&rc=ZThlO2VoPGU5Ojo6O2ZkOkBpM2pxcnM5cmg5eDMzODU8NEA1NjIxLTEvX14xXmIuXy9gYSNoYDFtMmRza2VgLS1kMS1zcw%3D%3D&vvpl=1&l=202609211138593B2E4E2AB9D5B32E6BFC&btag=e00095000&sp_exp=hash_v0",
"sourcePageUrl": "https://www.tiktok.com/music/original-sound-7467649576808303377",
"postCount": 20100,
"rights": {
"isOriginal": true,
"isCommercial": true,
"isCopyrighted": false
}
}
}

Post row fields

FieldTypeWhat it does
resultTypestringAlways post for a post row.
discoveryKeywordstringThe keyword that first led to the sound during keyword discovery, when applicable.
soundobjectSound data linked to the post.
sound.soundIdstringTikTok's sound ID.
sound.titlestringSound title, when available.
sound.artiststringArtist reported for the sound, when available.
sound.albumstringAlbum reported for the sound, when available.
sound.durationSecondsnumberSound duration in seconds, when available.
sound.artworkUrlstringLink to the sound artwork, when available.
sound.audioUrlstringTikTok audio reference, when available. This is not a file download.
sound.sourcePageUrlstringTikTok page for the sound, when available.
sound.postCountintegerNumber of posts reported for the sound, when available.
sound.rightsobjectRights details reported by TikTok, when available.
sound.rights.isOriginalbooleanWhether TikTok reports the sound as original.
sound.rights.isCommercialbooleanWhether TikTok reports the sound as commercial.
sound.rights.isCopyrightedbooleanWhether TikTok reports the sound as copyrighted.
postobjectPost data reported by TikTok.
post.postIdstringTikTok's post ID.
post.postUrlstringDirect TikTok link to the post.
post.captionstringPost caption or text, when available.
post.createdAtstringPost creation time in ISO 8601 format, when available.
post.durationSecondsnumberPost duration in seconds, when available.
post.coverUrlstringLink to the post cover image, when available.
post.playbackUrlstringTikTok playback or media reference, when available. This is not a file download.
post.hashtagsarray of stringsHashtags associated with the post, when available.
post.creatorobjectCreator details reported by TikTok, when available.
post.creator.creatorIdstringTikTok ID of the creator.
post.creator.handlestringCreator handle.
post.creator.displayNamestringCreator display name.
post.creator.profileImageUrlstringLink to the creator profile image.
post.creator.followerCountintegerCreator follower count reported by TikTok.
post.engagementobjectEngagement counts reported by TikTok, when available.
post.engagement.viewCountintegerNumber of views or plays reported for the post.
post.engagement.likeCountintegerNumber of likes reported for the post.
post.engagement.commentCountintegerNumber of comments reported for the post.
post.engagement.shareCountintegerNumber of shares reported for the post.

Example post row

This unshortened row is a genuine post row from a successful TikTok sound page run. The source URLs are public references and are shown as returned.

{
"resultType": "post",
"sound": {
"soundId": "6787016446238017538",
"title": "All Shades of Blue",
"artist": "Gregory Alan Isakov",
"album": "The Weatherman",
"durationSeconds": 60,
"artworkUrl": "https://p77-sg.tiktokcdn.com/aweme/720x720/tos-alisg-v-2774/eac52bdb059042baa323c7f7c3b23c2e.jpeg",
"audioUrl": "https://sf77-ies-music-sg.tiktokcdn.com/obj/tos-alisg-ve-2774/590e1c8f0afe48319a5572f88f9cd6de",
"sourcePageUrl": "https://www.tiktok.com/music/All-Shades-of-Blue-6787016446238017538",
"postCount": 66300,
"rights": {
"isOriginal": false,
"isCommercial": false,
"isCopyrighted": false
}
},
"post": {
"postId": "7546774934077312287",
"postUrl": "https://www.tiktok.com/@natalieeab/video/7546774934077312287",
"caption": "okay WEIRDOOO",
"createdAt": "2025-09-06T01:01:21.000Z",
"durationSeconds": 11,
"coverUrl": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast8-p-0068-tx2/o8fjQIfC06BCdMN3O6CUQckDAIFeIRAwdhDqkE~tplv-tiktokx-origin.image?dr=10395&x-expires=1790164800&x-signature=zRSMVOVEFGqezp6VM4ufpoPcqNw%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=no1a",
"playbackUrl": "https://v16-webapp-prime.tiktok.com/video/tos/alisg/tos-alisg-ve-37c799-sg/oQCRwCfkJAh6gjYmAQF0dDqDBfNOhewEIIC93I/?a=1988&bti=ODszNWYuMDE6&&bt=3423&ft=-Csk_mgdPD12NdWPNn-Ux_D5SY3W3wv257cAp&mime_type=video_mp4&rc=aTc2ZzwzPGczZTVkOzg2NEBpMzo8a3c5cmpyNTMzaTczNEBjMTY1YWItNjIxMjQvMS4vYSNhLmotMmRjY3FhLS1kMTJzcw%3D%3D&expire=1790165073&l=20260921120422BCEAD46B43D9DE30DE47&ply_type=2&policy=2&signature=30631a91bdbca4f3bf610fc68e47fa5f&tk=tt_chain_token&btag=e000b0000",
"creator": {
"creatorId": "6738933801970746373",
"handle": "natalieeab",
"displayName": "Natalie Abatemarco",
"profileImageUrl": "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/472e908bb402d66ca5fe4d97aead398c~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=10399&refresh_token=b8e653c5&x-expires=1790164800&x-signature=fBRkWYH1HQiiqRJvR0qW%2FHVTn2w%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=no1a",
"followerCount": 88100
},
"engagement": {
"viewCount": 1900000,
"likeCount": 243000,
"commentCount": 994,
"shareCount": 8066
}
}
}

💳 Pricing

This Actor uses pay per event. The charged event is one public TikTok post saved to the dataset. Sound-only runs do not create that post event. The current price is shown on the Store page.

🔌 Integrations

Open the default dataset from the Output panel or use its Apify API URL in a data workflow. The structured rows keep source links for later review, while audio and playback URLs remain source references rather than downloaded files.

Video guide

❓ FAQ

Can I collect sounds without posts?

Yes. Choose Sounds as the result type. The Actor returns sound metadata without expanding each sound into posts.

Can I use sound IDs and sound page URLs?

Yes. Choose one source method per run, then fill Sound IDs or Sound page URLs. Values in inactive source fields are ignored.

How do I find sounds by a word or phrase?

Choose Keyword, add one or more values to Discovery keywords, and optionally set a region preference. Set Sounds per keyword if you want to limit discovery.

What happens when the same sound or post matches more than once?

The first eligible occurrence is saved as soon as it is found. If the same source item appears again through another keyword, URL, ID, or similar submitted value, the later match is ignored.

Are audio and playback URLs downloaded files?

No. They are source references returned by TikTok. This Actor does not download or store the audio or video files.

What happens when a work limit is empty?

An empty Sounds per keyword value returns all available matching sounds for each keyword until the source is exhausted. An empty Posts per sound value returns all available posts for each sound until the source is exhausted.

Are private sounds or posts included?

No. Private or access-restricted TikTok sounds and posts are outside this Actor's scope.

How is a post charge counted?

The paid event is one public TikTok post saved to the dataset. Sound-only rows do not use that post event.

📝 Changelog

v0.0 (21-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré