YouTube Scraper: Video, Channel, Playlist & Search (No API Key) avatar

YouTube Scraper: Video, Channel, Playlist & Search (No API Key)

Pricing

from $2.00 / 1,000 results

Go to Apify Store
YouTube Scraper: Video, Channel, Playlist & Search (No API Key)

YouTube Scraper: Video, Channel, Playlist & Search (No API Key)

Scrape YouTube videos, channels, playlists and search results without the YouTube API or an API key. Get exact view and like counts, subscribers, duration, tags, category, publish date, thumbnails, chapters and hashtags. Sort and filter search. No key, no quota. Export JSON, CSV, Excel.

Pricing

from $2.00 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

5 days ago

Last modified

Share

YouTube Scraper

YouTube Scraper: Video, Channel, Playlist and Search Data (No API Key)

Scrape YouTube video data, channel data, playlists and search results without the official YouTube Data API, no API key and no quota. Give it search queries, video URLs, channel URLs or handles, or playlist URLs and get one clean JSON record per video with title, description, exact view count, exact like count, channel name and subscriber count, duration, publish date, tags, category, thumbnails, hashtags, chapters and Shorts / Live flags. Export to JSON, CSV or Excel.

Here is one real result, with the fields the actor returns for an enriched video:

{
"videoId": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"description": "The official video for \"Never Gonna Give You Up\" by Rick Astley ...",
"channelName": "Rick Astley",
"channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
"channelUrl": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw",
"channelHandle": "@RickAstleyYT",
"subscriberText": "4.53M subscribers",
"subscriberCount": 4540000,
"viewCount": 1811933605,
"viewCountText": "1,811,933,605 views",
"likeCount": 19374320,
"likeCountText": "19374320",
"commentCount": null,
"duration": null,
"durationSeconds": 213,
"publishedText": "Oct 24, 2009",
"publishedAt": "2009-10-24",
"uploadDate": "2009-10-25",
"category": "Music",
"tags": ["rick astley", "Never Gonna Give You Up", "nggyu", "rick roll"],
"hashtags": ["#RickAstley", "#NeverGonnaGiveYouUp"],
"chapters": [],
"isLive": false,
"isUpcoming": false,
"isShort": false,
"isFamilySafe": true,
"availableCountriesCount": 249,
"thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
"thumbnails": [{ "url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg", "quality": "1280x720" }],
"source": "video",
"detailsFetched": true,
"observedAt": "2026-09-05T12:00:00.000Z",
"error": null
}

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What this YouTube scraper does

This is a YouTube data extractor and video metadata API that reads YouTube's public data layer and returns one normalized record per video. It accepts four kinds of input, in any combination:

  • Search queries (searchQueries): keywords to search YouTube for, with optional sort order, upload-date, duration and type filters. This is your no-key YouTube Search API.
  • Video URLs (videoUrls): video URLs or IDs to fetch full per-video details for, including the channel's subscriber count, description and chapters.
  • Channel URLs or handles (channelUrls): pull a channel's recent videos for channel analytics and monitoring.
  • Playlist URLs (playlistUrls): pull every video in a playlist.

Turn on enrichDetails (default) and each video is upgraded with a full detail record: exact like and view counts, tags / keywords, category, duration in seconds, exact publish and upload dates, channel handle, hashtags, and Shorts / Live flags. Missing values are always returned as null so your schema stays stable.

Why use it (no API key, no quota)

  • No API key and no OAuth. You do not need a Google Cloud project or the official YouTube Data API. There is no daily quota to run out of.
  • Exact numbers. Get the exact like count and exact view count, not rounded "19M" style values.
  • Four inputs in one actor. Search, video, channel and playlist scraping in a single run.
  • Fast HTTP transport. No headless browser, so runs are quick and cheap.
  • Structured, stable output. Every record carries the same fields with honest nulls, ready for JSON, CSV or Excel.

Quickstart

Open the actor, paste this into the input, and press Run. It returns the top 10 videos for a search, sorted by view count.

{
"searchQueries": ["lofi hip hop"],
"sortBy": "views",
"maxVideos": 10,
"enrichDetails": true,
"country": "US",
"language": "en"
}

Provide any combination of searchQueries, videoUrls, channelUrls and playlistUrls.

Input reference

FieldTypeRequiredDefaultDescription
searchQueriesstring[]no["lofi hip hop"]Keywords to search YouTube for. Each query returns matching videos.
videoUrlsstring[]no[]Video URLs or IDs (watch?v=..., youtu.be/..., /shorts/..., or a bare 11-character ID).
channelUrlsstring[]no[]Channel URLs or handles (/@handle, /channel/UC..., /c/name). Returns the channel's recent videos.
playlistUrlsstring[]no[]Playlist URLs or playlist IDs (playlist?list=PL..., or a bare PL... id).
maxVideosintegerno50Maximum number of videos to return across all inputs. Free Apify plans are capped at 10 per run.
sortBystringnorelevanceSort search results: relevance, date, views, rating (search only).
uploadDatestringnoanyUpload-date filter: any, hour, today, week, month, year (search only).
durationstringnoanyDuration filter: any, short (<4 min), medium (4-20 min), long (>20 min) (search only).
videoTypestringnoanyResult type: any, video, channel, playlist, movie (search only).
enrichDetailsbooleannotrueFetch each video's full detail record (see below). Adds a paid details event per enriched video on paying accounts. Turn off for the fastest, cards-only run.
countrystringnoUSTwo-letter country code for results (gl).
languagestringnoenInterface language code (hl).

At least one of searchQueries, videoUrls, channelUrls or playlistUrls must be provided.

Output reference

One dataset item per video. Types are string, integer, boolean, array, or null when the source value is absent.

FieldTypeDescription
videoIdstringYouTube 11-character video ID.
urlstringCanonical watch URL.
titlestringVideo title.
descriptionstringVideo description (full on detail records, snippet on search cards).
channelNamestringName of the channel that published the video.
channelIdstringChannel ID (UC...).
channelUrlstringCanonical channel URL.
channelHandlestringChannel handle, for example @RickAstleyYT.
subscriberTextstringChannel subscriber count as shown, for example 4.53M subscribers.
subscriberCountintegerSubscriber count parsed to an integer.
viewCountintegerExact view count (from the detail record) or parsed card value.
viewCountTextstringView count as shown.
likeCountintegerExact like count from the detail record, or null.
likeCountTextstringLike count as text.
commentCountintegerComment count. Returned null (see FAQ).
durationstringDuration text, for example 1:44:52 (on search / channel / playlist cards).
durationSecondsintegerDuration in whole seconds (from the detail record).
publishedTextstringRelative or absolute publish text, for example 3 years ago or Oct 24, 2009.
publishedAtstringExact publish date normalized to YYYY-MM-DD.
uploadDatestringUpload date normalized to YYYY-MM-DD.
categorystringYouTube category, for example Music, Gaming, Education.
tagsstring[]Video tags / keywords set by the creator.
hashtagsstring[]Hashtags parsed from the description.
chaptersarrayChapters as { title, startSeconds, startText } when the creator set them (video URLs).
isLivebooleantrue for a live stream.
isUpcomingbooleantrue for a scheduled / premiere video.
isShortbooleantrue for a YouTube Short.
isFamilySafebooleanFamily-safe flag.
availableCountriesCountintegerNumber of countries the video is available in.
thumbnailUrlstringURL of the best available thumbnail.
thumbnailsarrayAll available thumbnails as { url, quality }.
sourcestringsearch, video, channel or playlist.
playlistId / playlistTitlestringPresent on playlist-source records.
detailsFetchedbooleantrue when the detail add-on enriched this record.
observedAtstringISO 8601 timestamp when the record was collected.
errorstringnull on success; populated instead of data when an item could not be fetched (never charged).

Comparison with other YouTube scrapers

Honest comparison against popular Apify YouTube scrapers such as streamers/youtube-scraper and bernardo/youtube-scraper.

CapabilityThis actorstreamers / bernardo
Search query scrapingYesYes
Sort order (relevance / date / views / rating)YesYes
Upload-date, duration and type filtersYesYes
Video URL scrapingYesYes
Channel URL / handle scrapingYesYes
Playlist URL scrapingYesYes
Exact like countYesPartial
Exact view countYesYes
Tags / keywordsYesYes
Category, family-safe, availabilityYesPartial
Channel handle + subscriber countYesYes
Shorts / Live / Upcoming flagsYesYes
Hashtags and chaptersYesPartial
No API key requiredYesYes
Full comment scrapingNoYes
Subtitles / transcript downloadNoYes
Headless browserNo (HTTP only, faster)Yes

Where the browser-based leaders reach further: streamers/youtube-scraper can download full comment threads and subtitles / transcripts, which this HTTP-only actor does not. If you need comments or transcripts, use a browser-based actor for those two fields. For everything else, including exact like counts, tags, category and availability, this actor returns a strict superset with faster, cheaper runs. Need transcripts specifically? See our YouTube Video Summarizer.

Common use cases

  • YouTube search API without a key: pull ranked results for any keyword with sort and date filters.
  • Channel analytics and monitoring: track a channel's latest videos, view counts and publish dates.
  • Competitor and trend research: collect tags, categories and view counts across many videos.
  • Content and playlist audits: export an entire playlist to CSV or Excel.
  • Video metadata enrichment: resolve a list of video URLs or IDs into full records for a dataset or dashboard.

Run via API and CLI

Start a run and read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~youtube-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["lofi hip hop"],"sortBy":"views","maxVideos":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~youtube-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"channelUrls":["https://www.youtube.com/@RickAstleyYT"],"maxVideos":50}'

Apify CLI:

apify call scrapers_lat/youtube-scraper \
--input '{"videoUrls":["https://www.youtube.com/watch?v=dQw4w9WgXcQ"]}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object.

Billing and limits

  • Pay per result. You are charged per video record returned (result event). See the pricing tab for the current per-result price.
  • Optional details add-on. When enrichDetails is on, each enriched video also charges a small details event for the full detail record (exact counts, tags, category, dates and flags). Enrichment and its charge apply to paying accounts only. Turn enrichDetails off to pay the base result price only.
  • No charge on failure. Items that cannot be fetched are written with a populated error field and are not charged. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxVideos.

FAQ and troubleshooting

Do I need a YouTube API key? No. This actor reads YouTube's public data layer directly. There is no API key, no OAuth and no daily quota.

A run returned 0 records. Why? No input was provided, or the search matched nothing. Provide at least one of searchQueries, videoUrls, channelUrls or playlistUrls. Zero-result runs are not charged.

Why is likeCount or tags null on some records? Exact like counts, tags, category and duration in seconds come from the detail add-on. Keep enrichDetails on so search, channel and playlist cards are upgraded. On free Apify accounts the detail add-on does not run, so those fields stay null.

Why is commentCount null? Comment counts are not exposed on the public video data layer without an extra paginated request, so this field is returned as null for honesty rather than guessed.

Can I get comments or subtitles / transcripts? Not from this actor. Full comment threads and subtitles require a browser-based scraper. See the comparison table above.

Can I mix search, video, channel and playlist inputs? Yes. Provide any combination; results from all sources are merged and deduplicated by video ID up to maxVideos.

Is this an official YouTube tool? No. This actor is independent and has no affiliation with YouTube or Google. It reads only data that is publicly available.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with YouTube or Google. Accesses only publicly available data.