SocialGrid — YouTube Scraper avatar

SocialGrid — YouTube Scraper

Pricing

from $0.70 / 1,000 results

Go to Apify Store
SocialGrid — YouTube Scraper

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

Giovanni

Maintained by Community

Actor 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

ModeDescriptionKey input
profileChannel profile: display name, bio, avatar, subscriber/video counts, external linkshandle
postsList a channel's videos (latest or most popular), paginatedhandle, sort, cursor, limit
postSingle video detail, optionally with the caption transcriptvideoIdOrUrl, transcript
commentsA video's comments (top-liked or newest), paginatedvideoIdOrUrl, commentSort, cursor
searchSearch videos by keyword, channels, or a hashtag pagequery, searchType, cursor
trendingTrending videos for a regionregion, cursor
fullComposite: profile + recent posts + computed analytics in one callhandle, 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 | full
  • handle: channel handle (@MrBeast) or full channel URL — required for profile/posts/full
  • videoIdOrUrl: required for post/comments
  • query: required for search
  • sort, 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 results
  • posts / 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.