YouTube API Alternative & Scraper — Videos, Channels | $1/1k avatar

YouTube API Alternative & Scraper — Videos, Channels | $1/1k

Pricing

from $1.00 / 1,000 results

Go to Apify Store
YouTube API Alternative & Scraper — Videos, Channels | $1/1k

YouTube API Alternative & Scraper — Videos, Channels | $1/1k

Scrape YouTube without an API key: keyword search with filters, channel videos, Shorts and live streams, playlists and single videos. Exact views, likes, comment count, duration, upload date, description, hashtags, channel subscribers and channel profiles. $1 per 1,000 results.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Raffy

Raffy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

What does YouTube Scraper do?

YouTube Scraper turns YouTube searches, channels, playlists and videos into clean video data: title, channel, subscribers, exact views, likes, comment count, duration, upload date, full description, hashtags and thumbnail. Type a keyword, paste a channel link, an @handle, a playlist or a video link, and a few seconds later you have one row per video as JSON, CSV or Excel.

It works as a YouTube API alternative with no API key and no quota: no Google Cloud project, no OAuth, no browser. The Actor reads the same public data the youtube.com web page shows to a logged-out visitor, so it is fast and cheap.

Four ways in, freely combined in one run:

  • Search YouTube by keyword, with YouTube's own filters: upload date (last hour to this year), type (videos, Shorts, channels, playlists, movies), length (under 4, 4 to 20, over 20 minutes) and sort by relevance or view count. Each row keeps its searchQuery and position.
  • Scrape a channel: its Videos, Shorts or Live tab, newest, most popular or oldest first, by @handle, channel link or channel ID. Optionally add one channel profile row with the About data: description, subscribers, total videos, total views, join date, country and the links the creator lists.
  • Scrape a playlist by link or ID, in playlist order.
  • Look up single videos or Shorts by link or video ID.

Typical use cases:

  • Influencer and creator research. List a creator's latest or most popular videos with views, likes and comment counts, and compare channels by subscribers and output.
  • Competitor and content monitoring. Track what a brand or competitor channel published this week and how each video performs, on a schedule.
  • Keyword and trend research. See which videos rank for a keyword, how old they are and how many views they get; filter by upload date to catch new content.
  • Datasets for analytics and AI. Titles, descriptions, hashtags, durations and engagement numbers for thousands of videos, ready for a spreadsheet, a BI tool or a model.
  • Tools for AI agents. Give an agent a YouTube search and video lookup without an API key.

It reads video and channel metadata only. It does not collect comments, commenter names, e-mail addresses or any other data about individual viewers.

Why use YouTube Scraper?

  • Cheap. $1 per 1,000 results, Apify platform usage included, with no extra charge for video details, filters or channel profiles.
  • Fast. No browser. The default run finishes in well under a minute on Apify (10 to 40 seconds in our tests); a run with 3 search terms, 2 channels and 1 playlist saved 583 fully detailed videos in under 4 minutes.
  • Complete rows by default. Search, channel and playlist rows are opened one by one to add exact views, likes, comment count, upload date, full description, hashtags and the channel's subscribers (switch Include video details off for list data only).
  • Honest results. Every row carries status (ok, not_found, error). A deleted video, an unknown @handle or a missing playlist is a free not_found row, and the run still ends successfully.
  • Built for agents and automation. Call it with no input and it returns data; paste links, @handles or bare IDs; schedule it, call it from the API or connect it to Google Sheets, Slack, Zapier or Make.

What data can YouTube Scraper extract?

FieldTypeDescription
typestringvideo, short, channel or playlist
sourcestringHow the row was found: search, channel, playlist or video (a link or ID you gave)
titlestringVideo, channel or playlist title
videoIdstringYouTube video ID
urlstringLink to the video, Short, channel or playlist
channelNamestringChannel name
channelIdstringChannel ID (UC...)
channelHandlestringChannel @handle
channelUrlstringChannel link
channelVerifiedbooleanChannel shows a verified badge
subscriberCountintegerChannel subscribers as YouTube shows them (YouTube rounds, e.g. 4.55M)
viewCountintegerViews (exact with video details)
likeCountintegerLikes (exact, with video details)
commentCountintegerComments as YouTube shows them (with video details)
durationstringLength as shown, e.g. 13:38
durationSecondsintegerLength in seconds
publishedAtstringUpload date YYYY-MM-DD (with video details, and for single videos)
publishedTimeTextstringRelative time as shown, e.g. 3 days ago, Streamed 5 months ago
descriptionstringFull description with video details (a search snippet without)
hashtagsarrayHashtags above the title and in the description
thumbnailUrlstringThumbnail image
isShortbooleanThe video is a Short
isLivebooleanLive right now
wasLivebooleanA past live stream
searchQuerystringThe search term that found the row
positioninteger1-based position in the search, channel list or playlist
inputUrlstringThe link, @handle or ID you gave
statusstringok, not_found or error (see below)
errorstringReason when status is not ok
scrapedAtstringISO 8601 time of extraction

Channel profile rows (type: channel) add videoCount, channelViewCount, joinedDate, country, links (title and URL of each link on the About panel), avatarUrl and bannerUrl. Playlist search results (type: playlist) carry playlistId and videoCount. detailsError appears only when the extra video-details request failed; the row then keeps its list data. Optional fields are left out when YouTube does not show them.

Result status (tri-state output)

statusMeaningBilled?
okThe video, channel or playlist was found and extracted.Yes
not_foundYouTube answered, but the video, @handle, channel tab or playlist does not exist, or a search has no results.No
errorYouTube could not be read after retries. error says why.No

How to scrape YouTube with YouTube Scraper

  1. Open the Actor in Apify Console and click Try for free.
  2. Paste links, @handles or IDs into YouTube URLs, handles or IDs, and/or type keywords into Search terms.
  3. Set Max results per search, channel or playlist and Maximum results (total). Start with the defaults to see the output.
  4. Optional: pick search filters (upload date, type, length, sort), the channel tab (Videos, Shorts, Live, About) and the channel order (Latest, Popular, Oldest).
  5. Click Start. The default run takes well under a minute.
  6. Open the Output tab or Export the dataset as JSON, CSV, Excel, XML or HTML.

To automate it, use the API tab (Node.js, Python, curl examples) or add a Schedule.

Which input finds what

You giveYou get
web scraping tutorial in Search termsThe top videos for that keyword, with searchQuery and position
https://www.youtube.com/@TED, @TED, UCAuUUnT6oDeKwE6v1NGQxugTED's videos (or Shorts / Live with Channel tab)
https://www.youtube.com/@veritasium/shortsThat channel's Shorts
https://www.youtube.com/@NASA/about or Channel tab aboutOne channel profile row
https://www.youtube.com/playlist?list=PL... or PL...The playlist's videos in order
https://youtu.be/dQw4w9WgXcQ, dQw4w9WgXcQ, a /shorts/ linkThat one video with full details
https://www.youtube.com/results?search_query=...The same search, including its filters

How much does it cost to scrape YouTube?

This Actor uses pay-per-event pricing, with Apify platform usage included:

EventPrice
Actor start$0.005 per run
Result (status: ok row)$0.001 per result

Example: 1,000 videos with full details cost about $1.01. Rows with status not_found or error are never billed. The free Apify plan includes enough credit to try the Actor on a few thousand videos. You can cap spending per run with Maximum results and in the run's Max total charge option.

Input

See the Input tab for the full schema. The main options:

FieldTypeDefaultDescription
startUrlsarray of strings["https://www.youtube.com/@TED"]Video, Short, channel, @handle, playlist or search-result links, or bare IDs
searchQueriesarray of strings-Keywords to search
maxResultsPerSourceinteger10Cap per search term, channel and playlist
maxItemsinteger20Cap for the whole run
includeVideoDetailsbooleantrueOpen each video for exact views, likes, comments, date, description, hashtags
includeChannelInfobooleanfalseAdd one channel profile row per channel
channelTabstringvideosvideos, shorts, streams or about
channelSortstringnewestnewest, popular or oldest
searchTypestringvideovideo, shorts, channel, playlist, movie or all
uploadDatestringanyhour, today, week, month, year
videoDurationstringanyshort (under 4 min), medium (4 to 20), long (over 20)
sortBystringrelevancerelevance or views
querystring-A single search term (same as one entry in searchQueries)
proxyConfigurationobjectApify Proxy on (datacenter)Residential proxies are not needed

Example input:

{
"searchQueries": ["web scraping tutorial"],
"uploadDate": "year",
"startUrls": ["https://www.youtube.com/@TED/videos"],
"channelSort": "popular",
"maxResultsPerSource": 50,
"maxItems": 100
}

Output

You can download the dataset in various formats such as JSON, HTML, CSV or Excel. Example rows from a run on Apify (description shortened):

[
{
"url": "https://www.youtube.com/watch?v=hHQlcnubuFI",
"status": "ok",
"scrapedAt": "2026-09-28T19:20:19.499Z",
"type": "video",
"source": "search",
"searchQuery": "web scraping tutorial",
"position": 2,
"title": "Learn Web Scraping in 5 Minutes (NO PRIOR KNOWLEDGE)",
"videoId": "hHQlcnubuFI",
"channelName": "CodeHead",
"channelId": "UCFVteOob_YXJHPaGTqlDV2Q",
"channelHandle": "@codehead01",
"channelUrl": "https://www.youtube.com/@codehead01",
"viewCount": 168096,
"duration": "4:53",
"durationSeconds": 293,
"publishedTimeText": "6 months ago",
"wasLive": false,
"isLive": false,
"isShort": false,
"description": "Get Rid of IP Blocking for just $1 with DataImpulse: https://dataimpulse.com/?utm_source=y... ...",
"thumbnailUrl": "https://i.ytimg.com/vi/hHQlcnubuFI/hqdefault.jpg",
"subscriberCount": 102000,
"likeCount": 6647,
"commentCount": 92,
"publishedAt": "2026-03-05",
"hashtags": ["#webdevelopment", "#programming", "#coding"]
},
{
"url": "https://www.youtube.com/youtubei/v1/navigation/resolve_url?prettyPrint=false&ytk=resolve&ytin=https%3A%2F%2Fwww.youtube.com%2F%40thisdoesnotexist12345xyz&yto=0&ytl=5",
"status": "not_found",
"error": "HTTP 404: page does not exist",
"scrapedAt": "2026-09-28T18:56:51.746Z"
}
]

The second row is what an unknown @handle returns: free, and the run still succeeds. For not_found and error rows, url is the request that answered, with the link you gave inside it.

Tips

  • Keep maxItems small while testing, then raise it.
  • Put many search terms, channels and playlists into one run instead of many single runs; you pay the start fee once.
  • Switch Include video details off when you only need titles, links, durations and rounded view counts: runs need one request per 20 videos instead of one per video (the price stays the same).
  • For a channel's most viewed videos use Channel sort order: Popular; for new uploads keep Latest and schedule the run.

Limitations

  • Video tags (keywords), category and captions/transcripts are not included: YouTube only serves them to its video player, which refuses requests from cloud servers.
  • Comments and commenter data are not collected.
  • subscriberCount and commentCount are YouTube's rounded figures (e.g. 4.55M); likes and views are exact with video details on.
  • Without video details, channel and playlist rows carry YouTube's rounded view counts and a relative upload time only; search rows carry exact views.
  • YouTube search returns a few hundred results per keyword at most. Age-restricted, private and members-only videos are not available logged out.
  • Results reflect YouTube at the time of the run. When YouTube changes its pages, rows come back as error and the Actor is updated quickly (report it in the Issues tab).

FAQ

Do I need a YouTube API key or a Google account?

No. There is no API key, no quota and no login. The Actor reads the public data youtube.com shows to any logged-out visitor.

Scraping publicly available data is generally legal, but you are responsible for how you use the output. Read the legal notice below and YouTube's terms of service, and do not collect personal data without a legitimate reason.

Paste the channel link or @handle, set Channel sort order to Popular and Max results per search, channel or playlist to the number you want.

Turn on Add one channel profile row per channel, or set Channel tab to About for the profile row only.

Can it scrape Shorts?

Yes: a channel's Shorts tab (a /shorts channel link or Channel tab: Shorts), Shorts in search (Search result type: Shorts) and single /shorts/ links.

Why is a row not_found?

The video was removed or made private, the @handle does not exist, the channel has no Shorts or Live tab, or the search had no results. not_found rows are free.

Can I use this Actor from an AI agent or MCP client?

Yes. Every row is self-describing (status + error), inputs are plain strings, links, @handles or IDs, and a call with no input returns data. Results can be read through the dataset API or the Apify MCP server.

Why did I get fewer rows than maxItems?

Each search term, channel and playlist stops at Max results per search, channel or playlist, a search can run out of results, or the run hit your Max total charge limit.

This Actor extracts only data that YouTube publishes publicly to logged-out visitors; it does not extract private user data such as e-mail addresses, phone numbers, gender or precise location, it does not collect comments or commenter names, and it does not log in or get around access controls. Channel names, @handles and the links a creator lists on their channel are public business information, but your results could still contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure whether your reason is legitimate, consult your lawyers. You are responsible for complying with YouTube's terms of service and applicable law when using the extracted data.

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by YouTube, Google or their owners. All trademarks belong to their respective owners.