---
title: "Paginated channel community posts"
method: GET
path: "/api/v2/youtube/channel/posts"
tags: ["YouTube channel"]
---

# Paginated channel community posts

`GET /api/v2/youtube/channel/posts`

## Request

- Base URL: `https://transcriptapi.com`
- URL: `https://transcriptapi.com/api/v2/youtube/channel/posts`
- Auth: HTTP bearer

List a channel's community/Posts feed (text, publish time, like count text, and attachments — image, multi-image, video, playlist, or poll), paginated.

First request: provide `channel` (@handle, URL, or UC... ID). Subsequent requests: provide `continuation` token from the previous response.

Channels with no community tab return an empty `results` list (HTTP 200, not an error). Like counts are display strings (e.g. `1.2K`) and are `null` when hidden — never `0`.

**Freshness:** cached for 5 minutes.

**Credit cost:** 1 credit per page.

## Query parameters

- `channel` string, nullable: Channel identifier: @handle, channel URL, or UC... channel ID
- `continuation` string, nullable: Continuation token from previous page

## Response `200`

Successful Response

- ChannelPostsResponse
  - `results` ChannelPost[]
    - `postId` string, nullable
    - `authorName` string, nullable
    - `authorThumbnails` Thumbnail[]
      - `url` string, required
      - `width` integer, nullable
      - `height` integer, nullable
    - `text` string, nullable
    - `publishedTimeText` string, nullable
    - `voteCountText` string, nullable
    - `attachment` ChannelPostAttachment: Polymorphic post attachment. `type` is one of: image, multi_image, video, playlist, poll (or the raw renderer name for anything not yet modelled). Only the fields relevant to `type` are populated; the rest are omitted.
      - `type` string, required
      - `thumbnails` Thumbnail[], nullable
        - `url` string, required
        - `width` integer, nullable
        - `height` integer, nullable
      - `images` array[], nullable
        - Thumbnail[]
          - `url` string, required
          - `width` integer, nullable
          - `height` integer, nullable
      - `videoId` string, nullable
      - `title` string, nullable
      - `lengthText` string, nullable
      - `playlistId` string, nullable
      - `videoCountText` string, nullable
      - `totalVotesText` string, nullable
      - `choices` string[], nullable
  - `result_count` integer
  - `continuation_token` string, nullable
  - `has_more` boolean

## Other responses

- `400`: **Bad Request** - Provide either `channel` or `continuation`, not both.
- `401`: Unauthorized - invalid Authorization format or API key
- `402`: Payment Required - inactive plan or exhausted credits
- `404`: **Not Found** - Channel does not exist. **Do not retry.**
- `408`: **Request Timeout / Retry** - Temporary failure (bot detection, network issues). **Safe to retry** after a short delay (1-5 seconds).
- `422`: Validation Error
- `429`: **Too Many Requests** - Rate limit exceeded. **Retry after** the delay in `Retry-After` header.
- `500`: **Internal Server Error** - Unexpected error. May retry, but if persistent, contact support.
- `503`: **Service Unavailable** - Service temporarily down or initializing. **Retry** after a short delay.

## Changes

- **2026-10-07** `6380d033643e`: 3 warning
  - the optional response header `X-RateLimit-Limit` removed for the status `429`
  - the optional response header `X-RateLimit-Remaining` removed for the status `429`
  - the optional response header `X-RateLimit-Reset` removed for the status `429`
- **2026-09-18** `fefff856887d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/transcriptapi/apis/youtube-transcript-api-public/changes/api/v2/youtube/channel/posts/get.md)

---

[API](https://skmtc.dev/transcriptapi/apis/youtube-transcript-api-public.md) - [All operations](https://skmtc.dev/transcriptapi/apis/youtube-transcript-api-public/llms.txt) - [OpenAPI document](https://skmtc.dev/transcriptapi/apis/youtube-transcript-api-public/revisions/af12b0db83b8?raw)
