SocialGrid — YouTube Scraper
Pricing
from $0.70 / 1,000 results
SocialGrid — YouTube Scraper
Unified-schema YouTube profile, video, comment, search, and trending data. Thin wrapper around @socialgrid/scraper-youtube — see PLAN.md in the SocialGrid monorepo for the portability rule this actor follows.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Giovanni
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Unofficial community Actor. Not affiliated with, endorsed by, or sponsored by YouTube or Google.
Unified-schema YouTube data: channel profiles, video posts, single-video detail (with transcript), comments, search, and trending — returned as flat, agent-ready JSON, never raw InnerTube blobs.
Why this vs. a raw-blob scraper
Most YouTube scrapers on the Store hand you exactly what YouTube's internal youtubei API returns: deeply nested, engineer-facing JSON full of renderer types, CDN thumbnail forests, and fields that only make sense if you've read Google's internal schema. That's expensive to parse and expensive to feed to an LLM.
This actor normalizes everything into four flat shapes — Author, Post, Comment, Computed — shared across SocialGrid's YouTube, TikTok, and Instagram scrapers, so downstream code (or an LLM agent) can treat every platform the same way. Fields the platform genuinely doesn't expose are null, never 0 or an empty string — so you can tell "no data" apart from "zero engagement."
What it does
| Mode | Description | Key input |
|---|---|---|
profile | Channel profile: display name, bio, avatar, subscriber/video counts, external links | handle |
posts | List a channel's videos (latest or most popular), paginated | handle, sort, cursor, limit |
post | Single video detail, optionally with the caption transcript | videoIdOrUrl, transcript |
comments | A video's comments (top-liked or newest), paginated | videoIdOrUrl, commentSort, cursor |
search | Search videos by keyword, channels, or a hashtag page | query, searchType, cursor |
trending | Trending videos for a region | region, cursor |
full | Composite: profile + recent posts + computed analytics in one call | handle, limit |
This is the full surface of the SocialGrid scraper contract (getProfile/getPosts/getPost/getComments/search/getTrending) — YouTube is the only one of the three SocialGrid platform actors where every mode is implemented and live-verified (TikTok and Instagram currently ship a reduced surface — see their own README for why).
Known limitation: transcript fetch is best-effort — it depends on YouTube publishing timed-text captions for that video, and returns a clean error (never fake data) when a video has none.
Example output (mode: "profile")
{"success": true,"platform": "youtube","mode": "profile","data": {"platform": "youtube","id": "UCX6OQ3DkcsbYNE6H8uQQuVA","handle": "@mrbeast","display_name": "MrBeast","bio": "SUBSCRIBE FOR A COOKIE!\n...","avatar_url": "https://yt3.googleusercontent.com/...","verified": false,"followers": 508000000,"following": null,"post_count": 992,"total_likes": null,"external_links": ["https://www.instagram.com/mrbeast/","https://twitter.com/MrBeast","https://facebook.com/mrbeast/"],"is_private": false}}
following and total_likes are null because YouTube channels don't expose those concepts — that's a real "platform doesn't have this," not a scrape failure.
mode: "full" additionally returns posts[] (unified Post objects) and a computed block:
"computed": {"engagement_rate": 0.041,"posting_cadence_per_week": 1.2,"cadence_window_days": 90,"median_views": 18500000,"top_post_id": "dQw4w9WgXcQ","format_mix": { "video": 0.9, "short": 0.1 }}
Input
See the Input tab for the full JSON schema. Quick reference:
mode(required):profile | posts | post | comments | search | trending | fullhandle: channel handle (@MrBeast) or full channel URL — required forprofile/posts/fullvideoIdOrUrl: required forpost/commentsquery: required forsearchsort,commentSort,searchType,region,cursor,limit,transcript: mode-specific options, all documented per-field in the input schema
Usage
Apify CLI
apify actors call fulinlabs/socialgrid-youtube-scraper \--input '{"mode": "profile", "handle": "@mrbeast"}'
REST API
curl "https://api.apify.com/v2/acts/fulinlabs~socialgrid-youtube-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "full", "handle": "@mrbeast", "limit": 30}'
Pricing
Pay-per-result, benchmarked against comparable Store actors (apidojo's YouTube/YouTube Channel Scraper at $0.50/1,000 videos-or-channels, streamers' YouTube Scraper at $5.00/1,000 videos with event-based pricing, apizy's pay-per-success YouTube Channel Scraper at $0.005/channel). Given this actor's simpler single-profile/single-video results (vs. deep multi-video crawls), proposed pricing:
profile/post/full: $1.00 per 1,000 resultsposts/comments/search/trending(list-shaped, one dataset item per video/comment/result): $0.50 per 1,000 items
Reliability
A 6-hour canary schedule re-runs the live test suite against known fixtures (big/mid/small/private/deleted channels) and alerts on failure — see PLAN.md in the SocialGrid monorepo for the testing policy this actor is held to.