YouTube Playlist Scraper - $0.40/1k, No API Key avatar

YouTube Playlist Scraper - $0.40/1k, No API Key

Pricing

Pay per event

Go to Apify Store
YouTube Playlist Scraper - $0.40/1k, No API Key

YouTube Playlist Scraper - $0.40/1k, No API Key

"20M views", "6 years ago" - a playlist page prints strings, not numbers, and that is what lands on the row, next to id, title, watch URL and thumbnail. It walks continuations, so long playlists finish in one run. No Google API key. $0.40/1k.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

4

Monthly active users

2 days ago

Last modified

Categories

Share

YouTube Playlist Scraper — every video in a playlist

Paste playlist URLs (or bare PL… / UU… ids) and get one row per video: id, title, watch URL, view count, age, runtime and the largest thumbnail YouTube offers. It walks continuations, so long playlists come back in one run rather than the first 20 items.

No Google API key, no OAuth, no quota to manage.

What you get

One row from a run, so you can see the shape and the exact value formats:

{
"ok": true,
"videoId": "0eKVizvYSUQ",
"title": "How Google Search Works (in 5 minutes)",
"url": "https://www.youtube.com/watch?v=0eKVizvYSUQ",
"channelName": "Google",
"channelId": "UCK8sQmJBp8GCxrOtXWBpyEA",
"viewCountText": "20M views",
"publishedTimeText": "6 years ago",
"lengthText": "5:16",
"thumbnail": "https://i.ytimg.com/vi/0eKVizvYSUQ/hqdefault.jpg?...",
"mode": "playlist"
}

Two things to be straight about, because they'd otherwise bite you in week two:

The counts are strings, not numbers. viewCountText is "20M views", publishedTimeText is "6 years ago", lengthText is "5:16". That's what YouTube renders on the playlist page and it's what you get. If you need integers and exact dates, parse them yourself or pull the videos through a video-detail scraper.

The uploader is read per video, not per playlist. channelName and channelId come off each video's own byline, so a playlist collecting clips from 19 different creators gives you 19 different channels rather than the playlist owner's. That is usually what you want and occasionally not. A row here and there arrives with no byline and those two fields come back blank. One in 100 on a channel's own uploads playlist, none at all across the three other playlists checked.

Input

{
"playlistUrls": ["https://www.youtube.com/playlist?list=PL590L5WQmH8dpP0RyH5pCfIaDEdt9nk7r"],
"maxItems": 100
}
FieldDefaultNotes
playlistUrlsAny URL containing ?list=…. A watch URL with a list parameter works too.
playlistIdsOr bare ids: PL…, UU…, OL…, RD…, FL…, LL….
maxItems100Total videos across every playlist you pass, capped at 5,000. This is your spend cap.
proxyConfigurationApify datacenterFine as-is for YouTube.
notionConnector / notionParentIdOptional: write each video into a Notion database too.

You must supply one of playlistUrls or playlistIds — an empty run fails fast rather than charging you a start fee for nothing.

Limits

  • Public and unlisted playlists. A private playlist needs a signed-in account and won't work.
  • Continuation paging stops at 80 requests per playlist. At roughly 100 videos per page that's a very long playlist before it matters, but it's the ceiling.
  • Deleted and private videos inside a playlist are skipped. YouTube shows them as placeholder rows with no video id; they don't reach your dataset and you aren't charged for them.
  • Videos are deduplicated by id across every playlist in the run, so a video in two of your playlists is returned and billed once.
  • A playlist that fails gets its own uncharged diagnostic row with the reason, and the run carries on to the next one.

Billing

$0.0004 per video ($0.40 per 1,000), plus $0.001 when a run starts. Same rate on every Apify plan, no volume tiers, no minimum.

Charged per video actually delivered. Diagnostic rows, duplicates and playlists that return nothing cost nothing beyond the start fee. That one is charged per gigabyte of run memory, so it's $0.001 at the default 1 GB.