YouTube Community Post API
One community post by id or permalink, with its full text, attachments, like count and exact comment count. Poll questions and options are under raw. Calls cost 1 credit each. A cache hit is free, and a failed or empty response is never charged.
Try it
Prefilled with the request that produced the example below. No key yet? Get a free key.
Request
GET
/v1/youtube/community-post| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | yes | Post URL (youtube.com/post/Ugk…) or bare post id |
Also accepts cache_max_age (a hit costs 0 credits) and include_raw (returns the untouched upstream payload under raw).
curl
curl "$API/v1/youtube/community-post?url=https%3A%2F%2Fwww.youtube.com%2Fpost%2FUgkx2lkCYp85jak0n5z7-bq_4ug2Rntk9iWT&cache_max_age=7d" \
-H "x-api-key: $KEY"JavaScript
const query = new URLSearchParams({
url: 'https://www.youtube.com/post/Ugkx2lkCYp85jak0n5z7-bq_4ug2Rntk9iWT',
cache_max_age: '7d',
});
const response = await fetch(`${API}/v1/youtube/community-post?${query}`, {
headers: { 'x-api-key': KEY },
});
const body = await response.json();
if (!body.success) throw new Error(body.error.code);
// 1 credit, 0 on a cache hit
console.log(body.data, body.meta.creditsCharged);Python
import os, httpx
r = httpx.get(
f"{os.environ['API']}/v1/youtube/community-post",
params={
"url": "https://www.youtube.com/post/Ugkx2lkCYp85jak0n5z7-bq_4ug2Rntk9iWT",
"cache_max_age": "7d",
},
headers={"x-api-key": os.environ["KEY"]},
timeout=30,
)
body = r.json()
if not body["success"]:
raise RuntimeError(body["error"]["code"])
print(body["data"], body["meta"]["creditsCharged"])Example response
Captured on , with raw removed and lists cut to two items. A live call returns current data.
response
{
"success": true,
"data": {
"platform": "youtube",
"id": "Ugkx2lkCYp85jak0n5z7-bq_4ug2Rntk9iWT",
"type": "image",
"url": "https://www.youtube.com/post/Ugkx2lkCYp85jak0n5z7-bq_4ug2Rntk9iWT",
"title": null,
"text": "These last two videos are the best content we’ve ever made and somehow our next 3 uploads are even better. (The team is cooking) I’m feeling more excited and energized about our videos than ever before, new era of Beast coming up 🥰",
"authorId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
"authorHandle": "MrBeast",
"authorName": "MrBeast",
"thumbnailUrl": "https://yt3.ggpht.com/9davaq2roo2vRpZ80IIGBiCAy6CmeYfm17AkJbLofKYVreyWRk9Y3SF2tcHwTpdGSzRXym9Y_6096A=s994-rw-nd-v1",
"mediaUrls": [
"https://yt3.ggpht.com/9davaq2roo2vRpZ80IIGBiCAy6CmeYfm17AkJbLofKYVreyWRk9Y3SF2tcHwTpdGSzRXym9Y_6096A=s994-rw-nd-v1"
],
"durationSeconds": null,
"viewCount": null,
"likeCount": 106554,
"commentCount": 2999,
"shareCount": null,
"hashtags": [],
"mentions": [],
"isSponsored": null,
"publishedAt": null,
"fetchedAt": "2026-10-21T02:00:39.337Z"
},
"meta": {
"platform": "youtube",
"endpoint": "youtube.communityPost",
"creditsCharged": 1,
"cached": false,
"cacheAgeSeconds": null,
"durationMs": 330,
"requestId": "req_r5s3sbao2evg2p0gyllo"
}
}Returns
Returns one Post.
Cost and behaviour
| Credits | 1 per live request, 0 on a cache hit |
| Cacheable | yes: cache_max_age accepts a cached copy |
| Batchable | yes: usable as a target in POST /v1/jobs/batch |
| Subscribable | yes: as often as every 3600 seconds, firing a webhook only on a change |
Other YouTube endpoints
- /v1/youtube/channel Channel details
- /v1/youtube/channel-videos Channel videos
- /v1/youtube/channel/community-posts Channel community posts
- /v1/youtube/channel/lives Channel live streams
- /v1/youtube/channel/playlists Channel playlists
- /v1/youtube/channel/shorts Channel shorts
- /v1/youtube/playlist Playlist contents
- /v1/youtube/search Search videos