TikTok Playlist Scraper
Pricing
from $2.70 / 1,000 playlist videos
TikTok Playlist Scraper
Collect public TikTok playlist details and videos from playlist or collection IDs, playlist URLs, public account handles, or public profile URLs. Get playlist names, counts, creator details, video order, engagement, and available media links with collection times in a structured dataset.
Pricing
from $2.70 / 1,000 playlist videos
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
🎵 Turn TikTok playlists into structured data
For content researchers, creator teams, and developers, this Actor collects public TikTok playlist details and video rows. Review playlist names, counts, creator details, video order, engagement, available media links, and collection times in one dataset.
Use cases
- Find public playlists from a TikTok account with TikTok playlists by username.
- Check playlist names, counts, creators, and source links with TikTok playlist metadata.
- Collect videos and their playlist positions with TikTok playlist videos.
- Build a structured playlist snapshot with TikTok playlist data.
- Extract public playlist details and videos with TikTok playlist scraper.
📚 See playlist details and videos
Each run writes playlist rows, video rows, or both to the default dataset. Use recordType to tell the two row shapes apart. TikTok may leave optional fields out when the public source does not provide them.
▶️ Run a TikTok playlist snapshot
Run steps
- Choose whether to return playlist metadata, playlist videos, or both.
- Choose
Playlist IDs or URLsto read direct playlist targets, or chooseProfile handles or URLsto find public playlists from accounts. - Add one or more values to the matching target list. The list for the other search method is ignored.
- Set an optional limit for playlists found per account or videos returned per playlist. Leave
maxPlaylistsPerAccountempty to return all available public playlists until the source is exhausted. LeavemaxVideosPerPlaylistempty to return all available public videos until the source is exhausted. - Start the run and open the dataset link in the Output panel.
Availability can differ from one run to another. Private, deleted, or otherwise unavailable TikTok content is outside the product. The Actor reads public source data and does not need a TikTok login, cookies, or source credentials.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
resultType | string | Chooses playlist metadata rows, playlist video rows, or both. |
discoveryMethod | string | Chooses direct playlist IDs or URLs, or public account handles or profile URLs whose playlists should be found. |
playlistTargets | array of strings | Adds one or more public playlist or collection IDs or playlist URLs. Use this list with discoveryMethod: "playlistTargets". |
profileTargets | array of strings | Adds one or more public TikTok account handles or profile URLs. Use this list with discoveryMethod: "profileTargets". |
maxPlaylistsPerAccount | integer | Optional cap for playlists found from each selected profile. Leave it empty to return all available public playlists until the source is exhausted. |
maxVideosPerPlaylist | integer | Optional cap for videos returned from each selected playlist. It applies to Playlist videos and Playlist metadata and videos. Leave it empty to return all available public videos until the source is exhausted. |
Result choices
resultType accepts playlistMetadata, playlistVideos, or playlistMetadataAndVideos. discoveryMethod accepts playlistTargets or profileTargets. Use one discovery method per run.
Example input
This is the public input from a successful run with one playlist target:
{"resultType": "playlistVideos","discoveryMethod": "playlistTargets","playlistTargets": ["7516638364301265695"],"maxVideosPerPlaylist": 1}
🧾 Output
The Output panel provides a link to the default dataset. A run can contain playlist rows, video rows, or both. The tables below list every field in each public row shape. Required playlist and video page links are included, while optional source data appears when TikTok provides it.
Run output field
| Field | Type | What it does |
|---|---|---|
datasetUrl | string | Link to the default dataset that holds the rows returned by the run. |
Playlist record fields
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as a playlist row. |
playlistId | string | Stable TikTok ID of the playlist or collection. |
name | string | Name shown for the playlist on TikTok. |
videoCount | integer | Number of videos in the playlist reported by TikTok. |
coverImageUrl | string | Source URL for the playlist cover image. |
playlistUrl | string | Public TikTok URL for the playlist. |
creator | object | TikTok account that owns the playlist. |
creator.id | string | Stable TikTok ID of the playlist creator. |
creator.handle | string | Public TikTok handle of the playlist creator. |
creator.displayName | string | Display name of the playlist creator. |
creator.profileUrl | string | Public TikTok profile URL of the playlist creator. |
creator.followersCount | integer | Creator follower count reported by TikTok. |
creator.followingCount | integer | Number of accounts followed by the creator. |
creator.likesCount | integer | Creator likes reported by TikTok. |
creator.videoCount | integer | Creator video count reported by TikTok. |
collectedAt | string | Time when the playlist row was collected. |
Example playlist row
This complete row came from a successful metadata run:
{"recordType": "playlist","playlistId": "7516638364301265695","name": "In The Mix","videoCount": 24,"coverImageUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oMr6rAA6QCIh5zBgE2FEAqDfIoAjTeAQIifXqO~tplv-tiktokx-origin.image?dr=9636&x-expires=1788062400&x-signature=oxdTe4Q1oeR9n48yb0dSLbeY06Q%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5","playlistUrl": "https://www.tiktok.com/@tiktok/playlist/In-The-Mix-7516638364301265695","creator": {"id": "107955","handle": "tiktok","profileUrl": "https://www.tiktok.com/@tiktok","displayName": "TikTok","followersCount": 95400000,"followingCount": 2,"likesCount": 463000000,"videoCount": 1497},"collectedAt": "2026-08-29T22:53:26.032Z"}
Playlist video record fields
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this row as a video row. |
playlistId | string | Stable TikTok ID of the playlist that contains the video. |
playlistUrl | string | Public TikTok URL for the playlist that contains the video. |
playlistName | string | Name of the playlist that contains the video. |
position | integer | Position of the video in the playlist as provided by TikTok. |
videoId | string | Stable TikTok ID of the video. |
videoUrl | string | Public TikTok page URL for the video. |
caption | string | Caption published with the video. |
publishedAt | string | Time when the video was published on TikTok. |
engagement | object | Engagement counts reported by TikTok for the video. |
engagement.views | integer | Video views reported by TikTok. |
engagement.likes | integer | Video likes reported by TikTok. |
engagement.comments | integer | Video comments reported by TikTok. |
engagement.shares | integer | Video shares reported by TikTok. |
engagement.saves | integer | Video saves reported by TikTok. |
creator | object | TikTok account that published the video. |
creator.id | string | Stable TikTok ID of the video creator. |
creator.handle | string | Public TikTok handle of the video creator. |
creator.displayName | string | Display name of the video creator. |
creator.profileUrl | string | Public TikTok profile URL of the video creator. |
creator.followersCount | integer | Creator follower count reported by TikTok. |
creator.followingCount | integer | Number of accounts followed by the creator. |
creator.likesCount | integer | Creator likes reported by TikTok. |
creator.videoCount | integer | Creator video count reported by TikTok. |
music | object | Sound details when TikTok provides them. |
music.id | string | Stable TikTok ID of the sound. |
music.title | string | Sound title on TikTok. |
music.authorName | string | Sound author name on TikTok. |
music.url | string | Public TikTok URL for the sound. |
media | object | Video file details and source links when TikTok provides them. |
media.durationSeconds | number | Video duration in seconds. |
media.width | integer | Video width in pixels. |
media.height | integer | Video height in pixels. |
media.quality | string | Media quality label supplied by TikTok. |
media.coverImageUrl | string | Source URL for the video's cover image. |
media.downloadUrl | string | Direct source URL for the video file. It may expire. |
captionLanguage | string | Language code supplied for the video caption. |
hashtags | array of strings | Hashtags found in the video caption. |
mentions | array of strings | TikTok handles mentioned in the video caption. |
images | array of objects | Images in a video slideshow when TikTok provides them. |
images[].url | string | Source URL for a slideshow image. |
images[].width | integer | Slideshow image width in pixels. |
images[].height | integer | Slideshow image height in pixels. |
collectedAt | string | Time when the video row was collected. |
Example playlist video row
This unshortened row came from a successful video run. The signed media links are source links and may expire:
{"recordType": "video","playlistId": "7585292371022088990","playlistUrl": "https://www.tiktok.com/@tiktok/playlist/TikTok-Awards-7585292371022088990","playlistName": "TikTok Awards","position": 1,"videoId": "7584645463475932447","videoUrl": "https://www.tiktok.com/@tiktok/video/7584645463475932447","collectedAt": "2026-08-29T22:55:18.047Z","caption": "So excited to perform at the first-ever U.S. TikTok Awards in LA on Dec 18. Catch it live on TikTok + Tubi. 💃🏽🫶🏽","publishedAt": "2025-12-17T02:18:15.000Z","engagement": {"views": 573300,"likes": 12200,"comments": 1443,"shares": 923,"saves": 1274},"creator": {"id": "107955","handle": "tiktok","profileUrl": "https://www.tiktok.com/@tiktok","displayName": "TikTok","followersCount": 95400000,"followingCount": 2,"likesCount": 463000000,"videoCount": 1497},"music": {"id": "7584645384653589278","url": "https://www.tiktok.com/music/sound-7584645384653589278","title": "original sound","authorName": "TikTok"},"media": {"durationSeconds": 31,"width": 720,"height": 1280,"quality": "720p","coverImageUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-p-0068-tx2/oUF6EpABfACCAYDlEu3CLWIADFRVhQZA2VEEEe~tplv-tiktokx-origin.image?dr=9636&x-expires=1788213600&x-signature=XaVN1kfv4B1TxS727rNpdBeyvMY%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast8","downloadUrl": "https://v16-webapp-prime.us.tiktok.com/video/tos/useast8/tos-useast8-ve-0068c001-tx2/o44lLfGtR9YCxCGgYEurbIdvQeEdEAFhEfQUeA/?a=1988&bti=ODszNWYuMDE6&&bt=1149&ft=4KJMyMzm8Zmo0h77ca4jVN_OQpWrKsd.&mime_type=video_mp4&rc=NTo4PGgzMzc6Njk5NGgzOUBpM3lydnQ5cmc0ODMzaTczNEBfLS01LTQyXjIxYF4tNDIuYSNzc3EwMmRrMi5hLS1kMTJzcw%3D%3D&expire=1788216948&l=202608292255178AF1644E149453488856&ply_type=2&policy=2&signature=5ca323f11c18540a225913c55ee8e269&tk=tt_chain_token&btag=e00090000"},"captionLanguage": "en"}
💳 Pricing
The Actor uses pay-per-event pricing. The Store page shows the price for each event and buyer tier.
| Event | When it is charged |
|---|---|
| Playlist Details | One public playlist's details are saved. |
| Playlist Video | One public video from a selected playlist is saved. |
🔌 Integrations
Dataset access
Open the dataset link in the Output panel to review the saved rows or use them in your workflow. Use playlistUrl and videoUrl to trace rows back to public TikTok pages. Signed media links may expire, so use them soon after the run.
Video guide
❓ FAQ
Do signed media links expire?
Yes. Source download and cover links can expire. Use playlistUrl and videoUrl as links to the public TikTok pages.
What does position mean?
It is the video's position in the playlist as provided by TikTok.
What if TikTok does not provide a field?
Optional fields can be absent when TikTok does not show that value. The Actor does not invent missing public-source data.
What happens when a playlist has no accessible public videos?
Only accessible public videos can produce video rows. Private, deleted, or unavailable videos are outside the product, and optional values stay absent when TikTok does not provide them.
Can I submit more than one playlist target?
Yes. Add multiple playlist IDs or URLs to playlistTargets, with one value for each playlist.
Can I submit more than one profile target?
Yes. Add multiple public account handles or profile URLs to profileTargets, with one value for each account.
Can I combine playlist targets and profile targets in one run?
No. Choose one discovery method per run. The fields for the other method are ignored. Use a separate run when you need the other target type.
Which result type should I choose?
Choose playlistMetadata for playlist names, counts, links, and creator details. Choose playlistVideos for video rows and their playlist positions. Choose playlistMetadataAndVideos for both shapes in one run.
Do I need a TikTok login or cookies?
No. The Actor reads public TikTok data without a TikTok login, cookies, or source credentials.
Do the limits have a fixed maximum?
The input schema does not set an upper bound for either limit. Leave maxPlaylistsPerAccount empty to return all available public playlists until the source is exhausted. Leave maxVideosPerPlaylist empty to return all available public videos until the source is exhausted.
📝 Changelog
0.0: Initial release
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- TikTok Search Scraper finds public TikTok videos or creators by keyword.
- TikTok Creator Analytics Scraper reviews public profile and audience metrics for creators found in a playlist.
- TikTok Video Downloader downloads media from the public video URLs in playlist rows.
- TikTok Transcript Scraper extracts public captions and transcripts from video URLs in playlist rows.
- TikTok Audio Downloader saves audio from playlist video URLs when TikTok exposes an audio track.
Made with ❤️ by Maxime Dupré