YouTube Video Scraper — Search & Channels ($1/1k) avatar

YouTube Video Scraper — Search & Channels ($1/1k)

Pricing

from $1.00 / 1,000 video scrapeds

Go to Apify Store
YouTube Video Scraper — Search & Channels ($1/1k)

YouTube Video Scraper — Search & Channels ($1/1k)

Scrape YouTube by search query, channel or direct video URL: title, channel, views, likes, duration, description, thumbnail, publish date. No browser, plain HTTP against YouTube's own InnerTube API. $1 per 1,000 videos.

Pricing

from $1.00 / 1,000 video scrapeds

Rating

0.0

(0)

Developer

Mohammed Samaan

Mohammed Samaan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

YouTube Video Scraper

Scrape YouTube by search query, channel or direct video URL — title, channel, views, likes, duration, description, thumbnail, publish date. No browser: it talks straight to YouTube's own InnerTube web API (the same JSON the youtube.com website itself loads), so it's fast and cheap to run.

Price: $1 per 1,000 videos. Rows are de-duplicated by video ID across every search query, channel and direct URL in one run — you never pay twice for the same video.

Who it's for

  • Creator and competitor research — pull every upload from a channel with view counts
  • Trend and niche research — scrape search results for a keyword, sorted by date or views
  • Influencer discovery — search a niche term, get channels and view counts back
  • Content calendars — track what a set of channels has published recently

Inputs

At least one of the three lists below is required.

FieldWhat it does
searchQueriesSearch terms, one per line, e.g. ["dubai restaurant", "muscat cafe review"]
channelUrls@handle, youtube.com/@handle, /channel/UC…, or /c/name URLs
videoUrlsDirect video URLs — watch?v=, youtu.be/…, or /shorts/…
maxResultsPerQueryCap per search query or per channel (default 50, max 5000)
sortByrelevance / date / views — search queries only
uploadDateany / hour / today / week / month / year — search queries only
localeTwo-letter language code (default en)

Note: sortBy and uploadDate are both applied through single YouTube filter params. If you set both on the same run, uploadDate wins and sortBy is skipped for search — YouTube encodes the two together as a format we don't attempt to build. Run them as separate queries if you need both at once.

Example input

{
"searchQueries": ["dubai restaurant"],
"channelUrls": ["https://www.youtube.com/@GoogleDevelopers"],
"videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
"maxResultsPerQuery": 100,
"sortBy": "date"
}

Output

One row per video:

{
"videoId": "9bZkp7q19f0",
"url": "https://www.youtube.com/watch?v=9bZkp7q19f0",
"title": "PSY - GANGNAM STYLE(강남스타일) M/V",
"channelName": "officialpsy",
"channelId": "UCrDkAvwZum-UTjHmzDI2iIw",
"channelUrl": "https://www.youtube.com/channel/UCrDkAvwZum-UTjHmzDI2iIw",
"publishedText": "2012-07-15T00:46:32-07:00",
"publishedAt": "2012-07-15T07:46:32.000Z",
"durationSeconds": 252,
"viewCount": 6061897295,
"likeCount": 32000000,
"description": "PSY - 'I LUV IT' M/V ...",
"thumbnailUrl": "https://i.ytimg.com/vi_webp/9bZkp7q19f0/maxresdefault.webp",
"isLive": false,
"isShort": false,
"keywords": ["PSY", "싸이", "KPOP"],
"searchQuery": null,
"sourceChannel": null,
"scrapedAt": "2026-09-14T18:43:07.475Z"
}

Detail depth depends on the source. A videoUrls row gets an exact view count, ISO publish date, full description and (approximate) like count — it comes from YouTube's own player + video-details endpoints. A row from searchQueries or channelUrls gets an approximate view count, a relative published date ("3 months ago" — YouTube's search/channel listings don't expose the exact date, so publishedAt is null there), and a description snippet rather than the full text. likeCount is only fetched for videoUrls rows and is read off YouTube's abbreviated display count (e.g. "19M"), so it's an approximation, not an exact figure.

How it works

YouTube's own web client calls https://www.youtube.com/youtubei/v1/{search,browse,next,player} with a plain JSON POST body — no API key, no login, no browser. This is the exact same server-rendered payload the youtube.com website itself parses to draw the page. Channel URLs are resolved by fetching the channel's /videos page HTML and reading ytInitialData, then paginated further pages come through the same InnerTube /browse continuation endpoint. Confirmed working 14 Sep 2026.

How it compares

No browser means no Chromium to boot, no memory overhead, no proxy tax — just a handful of HTTP requests per query. That's faster and materially cheaper to run than a browser-based YouTube scraper for the same result set.

FAQ

Does it need my own API key? No — it uses YouTube's public web endpoints, the same ones your browser calls when you use youtube.com.

Can I get Shorts specifically? isShort is set true when duration ≤ 60s (for videoUrls) or estimated from duration for search/channel rows — it isn't a guaranteed YouTube-side flag, so treat it as a strong signal, not a certainty.

Why is publishedAt sometimes null? Only videoUrls rows carry YouTube's exact ISO publish date. Search and channel listings only expose a relative string like "3 months ago" — we pass that through as publishedText rather than guess a date.

Does it use proxies? No — plain outbound HTTP requests, no browser, no proxy configuration needed or offered.

Our other actors


Using this actor? A quick review helps other buyers find it: youtube-video-scraper