Telegram hub

Telegram channel posts API

Page recent messages from a public Telegram channel by @username — text, views, media, and reactions in JSON.

GET /v1/telegram/channels/{handle}/posts

1 credit per successful request.

About this endpoint

`GET /v1/telegram/channels/{handle}/posts` lists recent posts for a public broadcast channel. Pass the username in the path (with or without `@`), send `x-api-key`, and branch on `data.lookupStatus` before you write rows. On `found`, `data.posts` is newest-first. Each item can include `postId`, simplified HTML `text`, ISO `date`, `views`, `forwardedFrom`, `replyTo`, `photoUrls`, `videoUrl`, and `reactions`. Page older messages with the opaque `cursor` query param from `data.page.nextCursor` while `data.page.hasMore` is true. CDN media URLs can expire; download promptly if you need durable copies.

This route is channels only. Public groups are not supported on the posts operations. For the entity card (title, description, subscriber count), use `GET /v1/telegram/channels/{handle}`. For one message by id, use `GET /v1/telegram/channels/{handle}/posts/{postId}`. Pricing for this list operation is shown on this page; bill from `meta.creditsCharged` on the response.

Telegram channel posts API FAQ

How do I list Telegram channel posts by handle?

Call GET /v1/telegram/channels/{handle}/posts with your Social Fetch API key in the x-api-key header. The handle is the public @username. Read data.lookupStatus, then data.posts. See the API docs for parameters and examples.

How many credits does listing Telegram channel posts cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.

How does pagination work on Telegram channel posts?

Each response includes data.page.nextCursor and data.page.hasMore. When hasMore is true, pass nextCursor as the cursor query param on the next request. The cursor is opaque. Omit cursor for the first page.

What fields are in each Telegram channel post?

Items can include postId, text (simplified HTML with line breaks and links), date (ISO 8601), views, forwardedFrom, replyTo (when the message quotes another), photoUrls, videoUrl, and reactions (emoji or custom emoji metadata plus counts). Media URLs come from Telegram CDN and may expire.

Does this work for public Telegram groups?

No. The channel posts list and single-post routes support public broadcast channels only. Groups are not supported on these operations. Use GET /v1/telegram/channels/{handle} when you need group metadata from a public username.

Channel posts list vs single post vs channel metadata?

Use this route to page recent messages for a handle. Use GET /v1/telegram/channels/{handle}/posts/{postId} when you already know the numeric post id. Use GET /v1/telegram/channels/{handle} for the channel or group identity card, not the message stream.

What does lookupStatus mean on channel posts?

found means data.posts may contain messages. not_found means the username did not resolve to a public channel page. restricted covers private or non-scrapable contact pages. HTTP 200 still means the request finished; always branch on lookupStatus before treating posts as a found feed.