TikTok Playlist Scraper: Names, Video Counts, Covers avatar

TikTok Playlist Scraper: Names, Video Counts, Covers

Pricing

from $2.00 / 1,000 playlists

Go to Apify Store
TikTok Playlist Scraper: Names, Video Counts, Covers

TikTok Playlist Scraper: Names, Video Counts, Covers

List every public playlist on any TikTok account. Returns playlist name, ID, video count, cover image, playlist URL and creator details, for one account or hundreds at a time. Playlist metadata only, the videos inside are not included. No login, no cookies. JSON, CSV, Excel.

Pricing

from $2.00 / 1,000 playlists

Rating

5.0

(1)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

21

Total users

3

Monthly active users

3 days ago

Last modified

Share

TikTok Playlist Scraper

TikTok Playlist Scraper

List every public playlist on any TikTok account, with names, video counts, covers and direct links. Switch on one option and get every video inside each playlist too.

Give it a handle. Get one row per playlist, and one row per video if you ask for them, ready for CSV or Excel.

What this returns

By default, one row per playlist: name, ID, video count, cover image, playlist URL and creator details.

With Include the videos in each playlist (includeVideos) switched on, every playlist row is followed by one row per video inside it: caption, hashtags, post date, duration, play, like, comment, share and save counts, cover, sound, and the video's TikTok URL. Each video row carries the playlist's ID, name and URL plus its position in the playlist, so you can group or filter by playlist straight away.

Rows are told apart by rowType: playlist or video.

Video rows start on 4 November 2026, when their per-video price takes effect. Until then the option is accepted, the run returns playlist rows only, and the log says so.

Why Use This Scraper

Playlists are how creators and brands organise a channel, so the list of them is a fast read on content strategy: which themes an account commits to, how many videos each theme carries, and which series are being built out.

With the videos included you can go one step further and see how each series performs: which playlist draws the views, which episodes carry it, and when the creator last added to it.

Useful when you want that across many accounts at once rather than clicking through profiles.

Supported Inputs

InputExample
Bare handlegymshark
With the @@gymshark
Profile URLhttps://www.tiktok.com/@gymshark

Many accounts in one run.

Use Cases

Competitor content audits, where you compare how rival brands structure their channels.

Series performance, by summing plays and likes per playlist to see which themes earn the attention.

Creator vetting before a partnership, to see whether an account maintains organised series or posts ad hoc, and how those series perform.

Content planning, using video counts per playlist as a signal of what an account invests in.

Channel monitoring, by rerunning and diffing to catch new playlists and new videos as they launch.

How It Works

How the TikTok Playlist Scraper works

Each handle is normalized and its playlists are read in one request, deduplicated by playlist ID. With videos switched on, each playlist's videos are then read page by page, in the order the playlist lists them, until the playlist ends or the per-playlist limit is reached. An account with no public playlists returns a single explanatory row rather than nothing at all.

Input Configuration

FieldTypeDefaultDescription
handlesarrayrequiredUsernames or profile URLs.
maxPlaylistsPerHandleinteger200Stop after this many playlists per account.
includeCreatorbooleantrueAdd creator ID, nickname, avatar and private flag to playlist rows.
includeVideosbooleanfalseAdd one row per video inside each playlist. Paid Apify plans only.
maxVideosPerPlaylistinteger200Stop after this many videos per playlist. Used only with includeVideos.

Minimal input

{
"handles": ["@gymshark"]
}

Playlists and their videos

{
"handles": ["@gymshark"],
"includeVideos": true,
"maxVideosPerPlaylist": 100
}

Output Sample

Playlist row

{
"rowType": "playlist",
"handle": "gymshark",
"playlistId": "7506522272257280790",
"playlistName": "Motivation",
"videoCount": 38,
"playlistUrl": "https://www.tiktok.com/@gymshark/playlist/Motivation-7506522272257280790",
"coverUrl": "https://p16-common-sign.tiktokcdn.com/...",
"creatorId": "6536068161471517696",
"creatorNickname": "Gymshark",
"creatorAvatarUrl": "https://p19-common-sign.tiktokcdn.com/...",
"creatorPrivate": false,
"scrapedAt": "2026-08-18T20:43:11.402Z"
}

Video row (with includeVideos)

{
"rowType": "video",
"handle": "brie_matthews",
"playlistId": "7664648671196465934",
"playlistName": "PLACES I BREASTFED",
"playlistUrl": "https://www.tiktok.com/@brie_matthews/playlist/PLACES-I-BREASTFED-7664648671196465934",
"positionInPlaylist": 1,
"videoId": "7664626549655702798",
"videoUrl": "https://www.tiktok.com/@brie_matthews/video/7664626549655702798",
"description": "The last video to this series...",
"hashtags": ["breastfeeding", "breastfedbaby", "motherhood", "breastfeedingjourney"],
"createdAt": "2026-07-20T15:06:25.000Z",
"isPhotoPost": false,
"durationSeconds": 24,
"playCount": 26200,
"likeCount": 1498,
"commentCount": 9,
"shareCount": 10,
"saveCount": 26,
"coverUrl": "https://p19-common-sign.tiktokcdn.com/...",
"musicTitle": "original sound",
"musicAuthor": "Brie Matthews",
"authorUsername": "brie_matthews",
"scrapedAt": "2026-10-21T13:10:02.511Z"
}

Account with no playlists

{
"handle": "@someaccount",
"error": "no_playlists_found",
"message": "@someaccount has no public playlists."
}

Key Output Fields

FieldDescription
rowTypeplaylist or video.
playlistNameThe playlist title as shown on TikTok.
videoCountHow many videos it holds, as a number rather than a string.
playlistUrlDirect link, built in TikTok's own name-slug format.
playlistIdStable ID, for diffing runs over time. Also on every video row, to join videos to their playlist.
coverUrlPlaylist cover image on playlist rows, video cover on video rows.
creatorNicknameDisplay name of the account.
positionInPlaylistVideo rows: 1 for the first video the playlist lists, then 2, 3 and on.
videoUrlVideo rows: the video's TikTok link (a /photo/ link for photo posts).
playCount / likeCount / commentCount / shareCount / saveCountVideo rows: engagement counts at the time of the run.
createdAtVideo rows: when the video was posted.
error / messagePresent only on rows for handles that returned nothing.

Free Apify plan

On the free Apify plan, the first 3 playlists of each run come back in full, so you can check the data. After that, rows keep the handle, playlist ID, name and URL and the creator's ID and nickname, while the video count is rounded to its order of magnitude and the cover and creator avatar links are hidden. A freePlanNote field marks masked rows. The videos inside playlists (includeVideos) are available on paid plans only. Any paid Apify plan returns every field in full.

FAQ

Can I get the videos in a playlist? Yes, from 4 November 2026. Switch on includeVideos and every playlist row is followed by its videos, one row each. maxVideosPerPlaylist caps how many per playlist.

Do I need a login or cookies? No.

What if an account has no playlists? You get one row saying so. Most accounts do not use playlists at all.

Why is videoCount sometimes higher than the number of video rows I get? It counts everything the creator added, including videos since made private or deleted. Video rows cover the videos that are still public.

What does it cost? One charge per row returned, plus a small per-run start fee. Video rows also carry a small per-video charge on top of the row price. The exact prices are on the Pricing tab. No subscription.

Support

Found a bug or need a field added? Open an issue on the Actor's Issues tab in Apify Console, or email muhamed.didovic@gmail.com.

Additional Services

Need a custom TikTok or social-media scraper, or a private version of this Actor? Reach out at muhamed.didovic@gmail.com.

Explore More Scrapers

Browse the full portfolio: muhamed-didovic.github.io

🤖 For AI Agents & LLM Apps

Purpose: Return the public playlists of TikTok accounts and, optionally, the videos inside each playlist.

Minimal tested input:

{ "handles": ["@gymshark"] }

Output: array of flat objects in one dataset, told apart by rowType.

  • rowType: "playlist": handle, playlistId, playlistName, videoCount, playlistUrl, coverUrl, scrapedAt. With includeCreator: creatorId, creatorNickname, creatorAvatarUrl, creatorPrivate.
  • rowType: "video" (only with includeVideos: true): handle, playlistId, playlistName, playlistUrl, positionInPlaylist, videoId, videoUrl, description, hashtags, createdAt, isPhotoPost, durationSeconds, playCount, likeCount, commentCount, shareCount, saveCount, coverUrl, musicTitle, musicAuthor, authorUsername, scrapedAt.

Critical for agents: videos are separate rows, not an array on the playlist row; join them on playlistId. videoCount is TikTok's count and can exceed the number of video rows (private and deleted videos are counted but not returned). Handles with no public playlists return one row carrying error and message instead.

Behavior & billing: Pay-per-event. One charge per row returned; video rows add a per-video event. Unknown handles and accounts without playlists yield one error item each rather than failing the run. No login or cookies required.

⚠️ Disclaimer

This Actor accesses publicly available data on TikTok for legitimate research, market-intelligence, and business-analysis purposes. It does not log in, bypass authentication, or access private content. Use of this Actor must comply with TikTok's Terms of Service and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.). The authors are not responsible for any misuse. Users must:

  • Respect rate limits and avoid overloading TikTok's infrastructure
  • Not use scraped data to violate user privacy or platform terms
  • Process any personal data only with a lawful basis and in compliance with their jurisdiction
  • Not republish scraped content in violation of copyright

We do not store scraped data; the Actor returns it directly to your Apify dataset for your authorized use. TikTok is a trademark of ByteDance Ltd.; this Actor is not affiliated with or endorsed by TikTok or ByteDance.

SEO Keywords

tiktok playlist scraper, tiktok playlists, scrape tiktok playlists, tiktok playlist api, tiktok playlist videos, scrape tiktok playlist videos, tiktok mix scraper, tiktok playlist list, tiktok series videos, tiktok content series, tiktok channel structure, tiktok creator playlists, tiktok brand playlists, export tiktok playlists, export tiktok playlist videos, tiktok playlist names, tiktok playlist video count, tiktok series performance, tiktok competitor audit, tiktok content strategy, apify tiktok playlist scraper