YouTube Scraper avatar

YouTube Scraper

Pricing

Pay per event

Go to Apify Store
YouTube Scraper

YouTube Scraper

Scrape YouTube videos, channels, and metadata without an API key. Search by keyword or scrape a full channel's video catalogue. Returns structured records with video ID, title, description, view count, like count, channel, duration, publish date, and thumbnail URLs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Scrape YouTube videos, channels, and metadata without an API key. Search by keyword or scrape a full channel's video catalogue. Returns structured records with video ID, title, view count, channel, duration, publish date, and thumbnail URLs.

What it does

The actor uses YouTube's InnerTube REST API — the same JSON API used by YouTube's own web client. No API key, no browser rendering, and no proxy needed. Requests run on standard datacenter infrastructure, keeping costs low.

Two scraping modes are available:

  • Search mode (mode: search) — submit one or more keyword queries and collect matching video results, paginated via InnerTube continuation tokens.
  • Channel mode (mode: channel) — supply a channel URL, handle, or bare channel ID and collect all videos from that channel's Videos tab.

Input

FieldTypeDescription
modestringsearch (default) or channel
queriesarrayKeywords to search for (search mode only)
channelUrlstringChannel URL, @handle, or UC... ID (channel mode only)
maxItemsintegerMaximum videos to return per query / total for channel mode

Channel URL formats accepted:

  • https://www.youtube.com/@MrBeast
  • https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA
  • Bare ID: UCX6OQ3DkcsbYNE6H8uQQuVA

Output

Each record contains:

FieldTypeDescription
videoIdstringYouTube video ID
videoUrlstringFull watch URL
titlestringVideo title
descriptionstringDescription snippet (if shown in search results)
channelIdstringYouTube channel ID (UC...)
channelNamestringChannel display name
channelUrlstringChannel canonical URL
viewCountintegerTotal view count
likeCountintegerLike count (null if hidden)
commentCountintegerComment count (null if unavailable)
durationSecondsintegerDuration in seconds
publishedAtstringRelative publish date (e.g. "1 year ago")
thumbnailUrlstringHighest-resolution thumbnail URL
tagsstringComma-separated tag list (if available)
isLivebooleanWhether the video is a live stream
categoryIdstringVideo category name
querystringThe search query or channel URL that produced this record
scrapedAtstringISO timestamp when the record was collected

Example: search mode

{
"mode": "search",
"queries": ["python tutorial", "javascript crash course"],
"maxItems": 50
}

Example: channel mode

{
"mode": "channel",
"channelUrl": "https://www.youtube.com/@MrBeast",
"maxItems": 100
}

Performance and cost

  • Memory: 256 MB
  • Proxy: none required
  • Approximate throughput: 20 videos per InnerTube page, ~200 ms delay between pages
  • Pricing: pay-per-result (DATA_RECORD events)

Notes

  • publishedAt returns YouTube's relative format ("3 days ago", "1 year ago") rather than an absolute ISO date — the InnerTube browse/search API does not expose absolute timestamps in these endpoints.
  • likeCount and commentCount are not available from the InnerTube browse/search endpoints and will always be null.
  • description is populated only when YouTube includes a snippet in search results; it is typically null in channel mode.
  • The actor handles YouTube's EU consent mechanism automatically via a session cookie header.