How to use
- Copy the installation command and review the source package before installing it in your own agent environment.
- Check the source document for required tools, credentials and supported hosts.
- Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/apidojo-io/apidojo-skills --skill scraping-youtube-channel-dataBefore you start
- Installation does not include a model subscription, API allowance or permission to access your files.
- Repository stars and installation counts describe activity, not an independent quality or security test.
Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
Scraping YouTube Channel Data
Exports channel-level statistics and optional video catalog for any YouTube channel URL or handle.
Prerequisites
APIFY_TOKENenvironment variable set- Optional: Apify MCP server installed
Inputs
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
startUrls | array | Optional | [] | YouTube URLs — channels, playlists, Shorts, search results |
youtubeHandles | array | Optional | [] | YouTube channel handles (e.g. @kurzgesagt) |
getTrending | boolean | Optional | false | Retrieve trending videos |
keywords | array | Optional | [] | Search keywords |
gl | string | Optional | us | Country code for results (e.g. US, GB) |
hl | string | Optional | en | Language code (e.g. en, de) |
uploadDate | string | Optional | all | Upload date filter: any, hour, today, week, month, year |
duration | string | Optional | all | Duration filter: any, short, long |
features | string | Optional | all | Feature filter: 4k, hd, live, cc, 3d, hdr, etc. |
sort | string | Optional | r | Sort order for search results |
maxItems | number | Optional | Unlimited | Maximum videos to return |
customMapFunction | string | Optional | — | JavaScript function to transform each output object |
Workflow
Progress:
- [ ] Step 1: Normalize channel URLs
- [ ] Step 2: Run youtube-scraper
- [ ] Step 3: Poll for SUCCEEDED
- [ ] Step 4: Deliver channel datasetStep 2: Run the Actor
Recommended — run_actor.js (handles waiting, output, and file saving automatically):
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~youtube-channel-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~youtube-channel-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~youtube-channel-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format jsonAPIFY_TOKENmust be set in environment or.envfile.
If Apify MCP is available:
Tool: apify:run-actor
Actor: "apidojo~youtube-channel-scraper"
Input:
{
"channelUrls": ["https://www.youtube.com/@channelhandle"],
"maxVideos": 30
}REST API fallback:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~youtube-channel-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"channelUrls": ["https://www.youtube.com/@channelhandle"], "maxVideos": 30}'Save id as RUN_ID. Poll until status = SUCCEEDED:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_TOKEN" | grep '"status"'Fetch results:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN&format=json"Step 3: Handle Edge Cases
- Channel URL not found: Handle may have changed — verify on YouTube.
- Hidden subscriber count: Some channels hide subscriber counts; field returns null — flag these.
- Age-restricted channel: May return limited metadata.
Output Format
# YouTube Channel Dataset
Channels requested: N | Returned: N
| Channel | Subscribers | Total Views | Videos | Joined | Country | Recent Avg Views |
|---------|-------------|-------------|--------|--------|---------|-----------------|
| ... | ... | ... | ... | ... | ... | ... |
Available fields: channelName, channelId, subscriberCount, viewCount, videoCount,
country, joinedDate, description, channelUrl, recentVideos[]Troubleshooting
Hidden subscriber count: YouTube allows channels to hide this — return null and note in output. Large video catalogs: Set maxVideos: 100 max per run to avoid timeouts.


