YouTube Channel Videos Scraper
Pricing
from $0.06 / 1,000 video results
YouTube Channel Videos Scraper
Export recent public videos from YouTube channels with video IDs, URLs, titles, descriptions, published dates, thumbnails, Shorts flags, and view counts.
Pricing
from $0.06 / 1,000 video results
Rating
0.0
(0)
Developer
Fetch Cat
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
2
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
Export recent public video metadata from known YouTube channels using handles, channel URLs or stable channel IDs. Keep video identity, source channel, publish dates, titles, thumbnails and available counts, with a per-channel cap and optional Shorts exclusion. Public feeds expose a recent batch rather than a complete channel archive.
Quick start
Choose a known channel and a small per-channel video cap. The existing example uses Google Developers by handle and channel ID:
{"channelUrlsOrIds": ["https://www.youtube.com/@GoogleDevelopers","UC_x5XG1OV2P6uZZ5FSM9Ttw"],"maxVideosPerChannel": 10,"includeShorts": true,"connectionMode": "direct"}
Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.
Ready-to-run examples
Open an example or task, review the input, and run it as-is or adjust the channel list:
- Export TED Channel Videos: Export recent public videos from the TED channel.
- Monitor Google Developers YouTube Uploads: Track recent uploads from Google Developers.
- Track NASA YouTube Channel Videos: Build a recent video dataset for NASA.
What you get
Each row represents one recent public video, with videoId, videoUrl, channel identity, source URL and collection time. Titles, descriptions, publish timestamps, thumbnails, Shorts flags, duration and view count depend on the available public source. Missing counts or duration are not filled with estimates, and the output does not contain media files or private analytics.
Who is it for?
- Content operations teams preparing source-linked upload lists for editorial review.
- Creator researchers inspecting bounded recent content samples.
- Competitor analysts comparing their own channel-upload snapshots.
- Data developers handing stable video IDs to separate transcript, comment or detail workflows.
How you can use the data
- Review recent Google Developers uploads. Keep
videoId,title,publishedAtandsourceUrlfrom the channel input. Check original links before assigning topics or assuming a missing item was removed, because the public feed is a bounded recent view. - Separate short-form review work. Leave includeShorts on to inspect any Shorts exposed in the feed, or turn it off for a regular-video sample. The flag controls retained feed items rather than guaranteeing a complete Shorts inventory.
- Prepare your own upload comparison. Save
videoIdandscrapedAtin your destination and deduplicate repeated exports there. Compare new IDs and source timestamps downstream rather than expecting an automatic historical change report. - Hand known video IDs to another workflow. Use
videoIdorvideoUrlwith the linked transcript, comment or video-detail Actors. Extraction, summarization, classification and alerts are separate steps, and a video metadata row does not guarantee those other sources are available.
Input settings
| Setting | JSON key | Use it for |
|---|---|---|
| Channel URLs, handles, or IDs | channelUrlsOrIds | Public YouTube channel URLs, @handles, or UC... channel IDs. |
| Maximum videos per channel | maxVideosPerChannel | Maximum recent videos to save for each channel. YouTube public channel feeds usually expose the latest batch of public videos. |
| Include Shorts | includeShorts | Keep YouTube Shorts in the output when they appear in the channel's recent videos feed. |
| Resume pending channels after migration | resumeFromCheckpoint | Continue with this run's saved pending channels after a platform restart. Enabled by default. |
| Connection | connectionMode | Direct by default. Automatic allows the existing optional proxy fallback. See field help for costs and configuration details. |
Only public YouTube @handle URLs, @handles, and stable UC... channel IDs are accepted. Video, playlist, search, and non-YouTube URLs are rejected before the run's start event is charged.
Output data
The existing row illustrates historical source values, not current counts or a guaranteed result from every channel:
{"channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw","channelName": "Google for Developers","channelUrl": "https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw","videoId": "eaUd3iYkj_w","videoUrl": "https://www.youtube.com/shorts/eaUd3iYkj_w","title": "In production, which file actually gets loaded?","description": "A package import can look simple on the surface.","publishedAt": "2026-06-15T13:00:09+00:00","thumbnailUrl": "https://i2.ytimg.com/vi/eaUd3iYkj_w/hqdefault.jpg","duration": null,"isShort": true,"viewCount": 1315,"sourceUrl": "https://www.youtube.com/@GoogleDevelopers","scrapedAt": "2026-06-15T20:00:00.000Z"}
| Field | Description |
|---|---|
channelId | Stable YouTube channel ID when available. |
channelName | Channel name. |
channelUrl | Public channel URL. |
videoId | Stable YouTube video ID. |
videoUrl | Public video URL. |
title | Video title. |
description | Public video description or snippet text. |
publishedAt | Public publish timestamp when available. |
thumbnailUrl | Public thumbnail URL. |
duration | Duration value when available. |
isShort | Whether the actor identified the item as a YouTube Short. |
viewCount | Public view count when available. |
sourceUrl | Original channel input or source URL. |
scrapedAt | Timestamp when the row was saved. |
retryCount | Number of bounded transient retries used while resolving and reading the channel feed. |
httpStatusCodes | HTTP response status codes observed for that channel. |
Download your results
Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.
See Apify's download and export guide for the available formats and field options.
Pricing
This Actor uses Apify pay-per-event pricing:
The start event is charged once when a valid run begins, even if no videos are available. The result event is charged for each saved video.
Invalid input is rejected before start charging. Unavailable channels and legitimate empty results do not create result charges. A run stops when its result budget is exhausted, so a charge limit can reduce the saved count.
See the live Apify Pricing tab for current prices and plan-specific discounts. Apify may separately charge platform usage such as compute, storage, proxy, or data transfer according to your account plan.
Tips for best results
- Prefer channel IDs for automation: IDs are more stable than handles.
- Use handles for quick setup: Handles such as
@GoogleDevelopersare easy to paste into the UI. - Set a per-channel cap: Keep
maxVideosPerChannellow for tests and monitoring tasks. - Decide on Shorts early: Set
includeShortstofalseif your downstream workflow expects only regular video pages. - Chain by video ID: Use
videoIdorvideoUrlfor transcript, comment, or video-detail enrichment.
Limits and caveats
- The actor extracts public recent-video metadata. It does not download video files or access private analytics.
- YouTube public channel feeds may expose only a recent batch of videos, not a complete historical archive.
- Some fields, such as duration or view count, may be unavailable for some videos.
- Use the maintained 512 MiB memory setting (the supported ceiling). Responses are read incrementally with decompressed limits of 2 MiB per feed and 16 MiB per channel page. Excessively large or complex responses and output fields are rejected as extraction failures, not empty results, without repeating the oversized download or trying a paid fallback. Channel inputs are limited to 8,192 characters; use a channel URL, handle or ID without long query parameters.
- A run keeps successful channel rows when another channel fails. Review
RUN_SUMMARYfor isolated failures and incomplete work. Reaching the processing deadline with channels pending fails the run without removing saved rows. - A valid empty feed or an unavailable public channel page can produce a successful empty dataset with a reason in
RUN_SUMMARY. Blocking, unrecognized responses and parser errors are not treated as proven no-match results. - The actor uses public YouTube pages and feeds only. It does not collect cookies, use account credentials, or attempt PO-token or account-access circumvention.
The saved-video cap applies per channel. Shorts exclusion and source availability can reduce the result count. resumeFromCheckpoint resumes this run's saved pending channels after a platform restart when enabled, rather than creating cross-run upload history. A separately scheduled run can return previously seen items.
Automation and integrations
Save your settings for next time
Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.
Run on a schedule
Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.
Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.
Send results to your other tools
Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.
For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.
API usage
Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.
The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.
For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~youtube-channel-videos-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"channelUrlsOrIds":["https://www.youtube.com/@GoogleDevelopers"],"maxVideosPerChannel":10,"includeShorts":true}'
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/youtube-channel-videos-scraper').call({channelUrlsOrIds: ['https://www.youtube.com/@GoogleDevelopers'],maxVideosPerChannel: 10,includeShorts: true,});console.log(`Dataset: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('fetch_cat/youtube-channel-videos-scraper').call(run_input={'channelUrlsOrIds': ['https://www.youtube.com/@GoogleDevelopers'],'maxVideosPerChannel': 10,'includeShorts': True,})print(f"Dataset: https://console.apify.com/storage/datasets/{run['defaultDatasetId']}")
MCP and AI agents
You can ask your AI assistant to collect data with YouTube Channel Videos Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.
Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.
Easier setup with an Apify plugin
If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.
Use Apify AI in Console
Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's YouTube Channel Videos Scraper. You can describe the data you want and ask questions about the results.
Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.
Choose your assistant
- Claude and Claude Code (Anthropic): Apify setup guide.
- ChatGPT and Codex (OpenAI): Apify setup guides.
- Grok Bot (xAI): Apify plugin guide.
- Gemini CLI (Google): MCP server setup guide. Use the server URL below with the HTTP configuration supported by Gemini CLI.
Connect just this scraper
To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/youtube-channel-videos-scraper"}}}
Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.
Use Apify's general server
Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use YouTube Channel Videos Scraper by Fetch Cat, or give it the identifier fetch_cat/youtube-channel-videos-scraper.
Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.
Example requests
- “Get five recent Google Developers videos, including Shorts, with links and available publish dates for my editorial review.”
- “Collect up to five recent TED videos without Shorts. Keep unavailable metrics blank so I can review the sample in a spreadsheet.”
- “Get three recent NASA video links and IDs that I can pass to a separate transcript workflow.”
Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.
Pay with x402
If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.
Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.
Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.
Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.
Other ways for agents to pay
Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.
FAQ
Can I scrape multiple channels in one run?
Yes. Add multiple values to channelUrlsOrIds. The actor saves up to maxVideosPerChannel videos for each channel.
Can I use channel IDs instead of URLs?
Yes. Channel IDs are supported and are the most stable input format.
Does this actor download videos?
No. It extracts public metadata and URLs, not media files.
Does it include Shorts?
Yes, by default. Set includeShorts to false to skip Shorts when they appear.
Can I run it from code?
Yes. Use the Apify API, SDKs, webhooks, schedules, or MCP-compatible agents.
Related Actors
- YouTube Channel Details Scraper for channel profiles and public channel metrics.
- YouTube Video Details Scraper for video-level metadata.
- YouTube Transcript Scraper for public transcript extraction.
- YouTube Comments Scraper for comment datasets.
- YouTube Playlist Videos Scraper for playlist-based video exports.
- YouTube Shorts Scraper to collect metadata for available public YouTube Shorts.
Support and feedback
For custom additions or integrations, email hello@fetchcat.dev.
Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.
Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.
Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.
Made with care for curious people, AI agents and the possibilities in data. ♥