YouTube · Guide

How to get YouTube community posts

TL;DR
To get YouTube community posts, sign up for a free Captapi key, then send one GET request to /v1/youtube/community-posts with your input. You get clean JSON back in seconds for 1 credit per call — no OAuth, scraping or platform SDKs. Community posts — channel{}, publishedTimeApprox, likeCountIsApproximate, linkedVideos[], cursor (1 credit).

How to get YouTube community posts (step by step)

  1. 1

    Get a free API key

    Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.

  2. 2

    Call the YouTube Community Posts API

    Send an authenticated GET request to /v1/youtube/community-posts with your input. No OAuth, no scraping setup.

  3. 3

    Read the JSON response

    Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.

Code example

curl "https://api.captapi.com/v1/youtube/community-posts?url=https%3A%2F%2Fwww.youtube.com%2F%40starterstory" \
  -H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."

What the response looks like

{
  "success": true,
  "data": {
    "url": "https://www.youtube.com/@starterstory",
    "totalReturned": 2,
    "hasMore": true,
    "nextCursor": "4qmFsgKTARIYVUNoaHc2RGxLS1RROW1ZU3BUZlhVWXFBGl5FZ1Z3YjNOMGM3Z0JBSklEQUtvREtBb2tVVEpvUTFKR1RYZGxSRXBvVmxSRmVsVnFRbGRVTWtaV1QxaHdWRTF1VWtSU1ZVWkNLR1R5QmdrS0Iwb0FvZ0VDQ0FFJTNEmgIWYmFja3N0YWdlLWl0ZW0tc2VjdGlvbg%3D%3D",
    "communityStatus": "ok",
    "channelExists": true,
    "posts": [
      {
        "id": "UgkxT0w7k1zkNQLiYQALw23IkNHZuKAjl4Xj",
        "url": "https://www.youtube.com/post/UgkxT0w7k1zkNQLiYQALw23IkNHZuKAjl4Xj",
        "channel": {
          "id": "UChhw6DlKKTQ9mYSpTfXUYqA",
          "title": "Starter Story",
          "url": "https://www.youtube.com/@starterstory",
          "handle": "@starterstory"
        },
        "text": "I flew to NYC to spend 24 hours with the four friends behind Cal AI - the app they sold for millions and is now on track for $50M this year.",
        "likeCount": 350,
        "likeCountText": "350",
        "likeCountIsApproximate": false,
        "hashtags": [],
        "linkedVideos": [],
        "publishedTimeApprox": "2026-09-06T16:00:00.000Z",
        "publishedTimeIsApproximate": true,
        "publishedTimeText": "4 hours ago",
        "isEdited": false,
        "postType": "image",
        "images": [
          "https://yt3.ggpht.com/QIYjBZ6NvP95fDGFWdK4232QiiBh_CHlnYKkeNGVBqRmcLG1LyLQoUDghnxoZDOj2Dujm69XpTJG7W4=s1440-c-fcrop64=1,0000199affffe666-rw-nd-v1"
        ]
      },
      {
        "id": "UgkxBUGxNbJO0zDdYGVn7WUnS2WtxCONdhit",
        "url": "https://www.youtube.com/post/UgkxBUGxNbJO0zDdYGVn7WUnS2WtxCONdhit",
        "channel": {
          "id": "UChhw6DlKKTQ9mYSpTfXUYqA",
          "title": "Starter Story",
          "url": "https://www.youtube.com/@starterstory",
          "handle": "@starterstory"
        },
        "text": "Who got their 2 hours of DEEP work in today?",
        "likeCount": 96,
        "likeCountText": "96",
        "likeCountIsApproximate": false,
        "hashtags": [],
        "linkedVideos": [],
        "publishedTimeApprox": "2026-08-07T00:00:00.000Z",
        "publishedTimeIsApproximate": true,
        "publishedTimeText": "1 month ago",
        "isEdited": false,
        "postType": "poll",
        "images": [],
        "pollOptions": [
          {
            "text": "Yes",
            "voteCount": null,
            "percentage": null
          },
          {
            "text": "No",
            "voteCount": null,
            "percentage": null
          }
        ],
        "totalVotes": 1300,
        "totalVotesText": "1.3K votes",
        "totalVotesIsApproximate": true
      }
    ]
  }
}

Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.

Request parameters

NameTypeRequiredDescription
urlstring YesYouTube channel URL, @handle, bare handle, or UC... channel ID, e.g. https://youtube.com/@handle or @mkbhd. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble.
limitintegerNoMax items to return (default 20, max 200). Flat 1 credit per call.
cursorstringNoPagination cursor. Leave empty for the first page; then pass the nextCursor value returned in the previous response.
cachebooleanNoSet true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.

Frequently asked questions

What does the YouTube Community Posts API do?

The YouTube Community Posts API lets you list items in bulk with metadata from a public YouTube post using one GET request to /v1/youtube/community-posts. It returns clean JSON — no OAuth or infrastructure setup required.

How many credits does the YouTube Community Posts API cost?

Each successful call costs 1 credit. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.

Do I need a YouTube API key or OAuth?

No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.

Why did I get 404 "No community posts found" on a real channel?

That 404 is gone. A channel with zero community posts is 200 with posts: [] and communityStatus=no_posts. A channel whose community tab is off (YouTube: "this community is unavailable") is 200 communityStatus=disabled. A handle that does not exist is 404 CHANNEL_NOT_FOUND — it never says "no community posts". A tab we could not read is 503 COMMUNITY_UNAVAILABLE (retryable, Retry-After header). 200 empty answers bill 1 credit native; 404/503 bill 0.

Is the YouTube Community Posts API suitable for production use?

Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.

Ready to get YouTube community posts?

Start free with 100 credits — no credit card required.

Get your free API key