YouTube Channel Videos Scraper avatar

YouTube Channel Videos Scraper

Pricing

from $0.06 / 1,000 video results

Go to Apify Store
YouTube Channel Videos Scraper

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

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

2

Monthly active users

11 days ago

Last modified

Security

Limited permissions

Share

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:

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, publishedAt and sourceUrl from 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 videoId and scrapedAt in 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 videoId or videoUrl with 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

SettingJSON keyUse it for
Channel URLs, handles, or IDschannelUrlsOrIdsPublic YouTube channel URLs, @handles, or UC... channel IDs.
Maximum videos per channelmaxVideosPerChannelMaximum recent videos to save for each channel. YouTube public channel feeds usually expose the latest batch of public videos.
Include ShortsincludeShortsKeep YouTube Shorts in the output when they appear in the channel's recent videos feed.
Resume pending channels after migrationresumeFromCheckpointContinue with this run's saved pending channels after a platform restart. Enabled by default.
ConnectionconnectionModeDirect 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"
}
FieldDescription
channelIdStable YouTube channel ID when available.
channelNameChannel name.
channelUrlPublic channel URL.
videoIdStable YouTube video ID.
videoUrlPublic video URL.
titleVideo title.
descriptionPublic video description or snippet text.
publishedAtPublic publish timestamp when available.
thumbnailUrlPublic thumbnail URL.
durationDuration value when available.
isShortWhether the actor identified the item as a YouTube Short.
viewCountPublic view count when available.
sourceUrlOriginal channel input or source URL.
scrapedAtTimestamp when the row was saved.
retryCountNumber of bounded transient retries used while resolving and reading the channel feed.
httpStatusCodesHTTP 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 @GoogleDevelopers are easy to paste into the UI.
  • Set a per-channel cap: Keep maxVideosPerChannel low for tests and monitoring tasks.
  • Decide on Shorts early: Set includeShorts to false if your downstream workflow expects only regular video pages.
  • Chain by video ID: Use videoId or videoUrl for 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_SUMMARY for 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 ApifyClient
client = 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

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.

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. ♥