youtube collects the videos, Shorts and live streams of YouTube channels, or the videos of a playlist. One result
is one row; most rows are videos.
Run it
Inputs
Send channel or playlist links inchannelUrls. channelHandles, directUrls, startUrls and urls are accepted
too, and everything you send is merged.
limit: 50 on a channel with 50 or more long-form videos returns no Shorts and no streams: set
maxResultsShorts and maxResultStreams to keep room for them. limit: 0 skips the Videos tab, so
{"limit": 0, "maxResultsShorts": 100} collects Shorts only. On a job with a date filter within the last 29 days,
maxResultsShorts and maxResultStreams are capped at 200.watch?v=, /shorts/<id>, /live/ or youtu.be/) is refused with 400 naming the field:
send its channel instead. Search isn’t supported either: a job with only searchQueries is refused with 400.
downloadSubtitles, subtitlesFormat and subtitlesLanguage are accepted and have no effect: subtitles are not
collected. downloadSubtitles: true, or a format other than srt or a language other than en, adds a warning to
the job’s log.
A date filter within the last 29 days makes the job a recent crawl, which is billed at its own rate; see
Billing.
Output
A real row from a job for @NobelPrize:Other rows
These rows stay in the results but cost nothing:items_scraped counts video rows only, so it can be lower than
the total of /results/.
On a daily job over many channels, every channel with nothing new returns one
DATE_FILTER_TOO_STRICT row, free. A
daily job where nothing new was posted reports items_scraped: 0 and costs $0.
What logged-out means here
You get: public videos, Shorts and streams with their titles, descriptions, counts and channel fields. Not available:- An exact publish date for every video. YouTube withholds it from signed-out visitors for some videos. On a job with
a date filter within the last 29 days, such videos are left out unless their listing date places them in the range;
on other jobs they come back with
date: nullordateIsApproximate: true. - Subtitles, monetisation and dislike counts.
- Private and deleted videos in a playlist; they are skipped.
Completeness
scraper_metadata is null unless something you sent failed. Then it holds targets_failed: one entry per channel,
playlist or link, with target, reason (not_found, extraction_failed or unknown), detail (for reading, not
parsing) and retriable. A channel whose videos were found but none could be read is listed with
reason: "extraction_failed" and retriable: true. A job where some channels fail and others deliver still
completes.