Public channel and group research
Use Telegram endpoints to turn public channel and group research into repeatable API requests with documented inputs and JSON responses.
Collect Telegram's public channel and group surfaces as structured JSON — resolve public profiles, page through channel posts, and retrieve an individual post by its returned ID.
Retrieve public Telegram channel and group profiles, channel posts, and individual public post metadata as structured JSON.
Endpoint families
4
Documented params
11
Examples
4
Live catalog snapshot
Active endpoints
4
Methods
GET
Required params
9
Schema refs
4
{
"platform": "Telegram",
"endpoint": "telegram-channel-posts",
"method": "GET",
"path": "/telegram/channel-posts",
"auth": "apiKey"
}Use cases
Retrieve public Telegram channel and group profiles, channel posts, and individual public post metadata as structured JSON.
Use Telegram endpoints to turn public channel and group research into repeatable API requests with documented inputs and JSON responses.
Use Telegram endpoints to turn channel post monitoring into repeatable API requests with documented inputs and JSON responses.
Use Telegram endpoints to turn public post metadata collection into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Telegram endpoint catalog — 4 endpoints, 11 documented request parameters, and 4 published response schemas — the same catalog Docs and Playground run against.
4 documented Telegram endpoints, grouped into 4 request families — Channel, Channel Posts and Group, plus 1 more.
11 request parameters are documented across those Telegram endpoints, 9 of them required — the full input contract is public before you write any integration code.
4 of the 4 Telegram endpoints ship a recorded example response, and 4 carry a documented response schema — you can code against the real JSON before the first request.
Telegram endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
4 hosted MCP tools back the Telegram endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
/telegram/channel
/telegram/channel-posts
/telegram/group
/telegram/post
Endpoint catalog
/telegram/channelReturns the public profile of a Telegram channel: title, description, verification badge, subscriber count, and the photo, video, file and link counters shown on the channel's public web preview (t.me/s/{username}). username is the channel's public username, with or without a leading @ or a t.me link; private channels, groups, bots, user accounts and invite links are not supported and return an error that says which kind of name was given. subscribers is the exact figure when available; subscribers_approximate is true when only the preview's abbreviated figure (for example 10.3M) could be read. The photo, video, file and link counters are the preview's abbreviated figures and are approximate for large channels. Only public content is read, no media files are returned, and Telegram's terms restrict using platform content to train AI or machine-learning systems, so results must not be used for that purpose.
Response notes
- Only public channels are supported. A private channel, group, bot, user account or invite link returns a `400` that says which kind of name was given. A username nobody owns returns `404`, and so does a channel whose owner turned off the web preview. - `subscribers` is the exact figure when available. `subscribers_approximate` is `true` only when just the preview's abbreviated figure (for example `10.3M`) could be read. - `photos_count`, `videos_count`, `files_count` and `links_count` are the preview's own header counters. Telegram abbreviates large values, so they are approximate for big channels. - `avatar_url` is a link to Telegram's image host; no image data is returned. - Only public content is read and no media files are returned. Telegram's terms restrict using platform content to train AI or machine-learning systems, so results must not be used for that purpose.
MCP tool telegram_channel
/telegram/groupReturns the public profile of a Telegram group from its public t.me page: title, description, member count and, when Telegram shows it, the number of members online. username is the group's public username, with or without a leading @ or a t.me link. Only the profile is available for groups; their messages are not readable here. Channels (use telegram-channel), bots, user accounts and invite links are not supported and return an error that says which kind of name was given; a username nobody owns returns not found. online is 0 when Telegram shows no online figure. avatar_url is omitted for groups without a profile photo. Only public content is read, and Telegram's terms restrict using platform content to train AI or machine-learning systems, so results must not be used for that purpose.
Response notes
- Only the profile is available for groups. Their messages are not readable here. - Channels return a `400` that points to `telegram-channel`. Bots, user accounts and invite links also return a `400` that says which kind of name was given. A username nobody owns returns `404`. - `members` is the exact figure Telegram shows. `online` is `0` when Telegram shows no online figure for the group. - `avatar_url` is omitted for a group without a profile photo, and `description` is omitted when the group has none. - Only public content is read. Telegram's terms restrict using platform content to train AI or machine-learning systems, so results must not be used for that purpose.
MCP tool telegram_group
/telegram/channel-postsReturns one page of up to 20 posts from a public Telegram channel's web preview (t.me/s/{username}), newest first. Each post has its id, link, text, links found in the text, publish time, edited flag, view count, author signature, forwarded-from and reply references, photo and video thumbnails, link-preview card, and reaction tallies. Page backwards by passing the previous response's next_before as before; has_more is false and next_before is omitted on the last page. Pass query to search inside the channel instead of browsing; search pages use the same before cursor. A search with no matches returns an empty posts list. Views are the preview's abbreviated figures (for example 32.4K) and are approximate above 1,000. Media entries carry thumbnail references only, never playable file URLs. Polls, documents, voice notes and stickers appear as an unsupported media entry. Private channels, groups, bots, user accounts and channels that disabled their web preview are not supported. Telegram's terms restrict using platform content to train AI or machine-learning systems, so results must not be used for that purpose.
Response notes
- A page holds at most 20 posts. `has_more` is `false` and `next_before` is omitted on the last page of the channel's history or of the search results. - A search with no matches returns an empty `posts` list, not an error. A channel page that comes back empty without Telegram's own "no posts" notice is reported as an upstream error instead of an empty list. - `views` and reaction counts are expanded from Telegram's abbreviated figures (for example `32.4K`), so they are approximate above 1,000. - A standard reaction has an `emoji`. A custom (Premium) emoji reaction has no glyph in the preview and carries `custom_emoji_id` instead. The Telegram Stars reaction has `paid: true` and neither. - `media[].type` is `photo`, `video` or `unsupported`. Media entries carry thumbnail references only, never playable file URLs. `unsupported` means an attachment the web preview cannot display, such as a poll, document, voice note or sticker. - Private channels, groups, bots, user accounts and channels that turned off their web preview are not supported; the error says which case it was. - Telegram's terms restrict using platform content to train AI or machine-learning systems, so results must not be used for that purpose. Example response (trimmed to one post): ```json { "code": 200, "msg": "OK", "data": { "username": "durov", "title": "Pavel Durov", "posts": [ { "id": 531, "username": "durov", "url": "https://t.me/durov/531", "text": "Telegram now has a Rich Text Editor.\n\nIt supports tables, headings, inline media, lists, AI content, formulas, and more.", "published_at": "2026-07-16T20:45:25+00:00", "edited": false, "views": 5840000, "author": "Pavel Durov", "media": [ { "type": "video", "url": "https://t.me/durov/531", "thumbnail_url": "https://cdn4.telesco.pe/file/THUMB_ID.jpg" } ], "reactions": [ { "count": 6300, "paid": true }, { "custom_emoji_id": "5265077361648368841", "count": 54600, "paid": false } ] } ], "has_more": true, "next_before": 531 } } ```
MCP tool telegram_channel_posts
/telegram/postReturns a single post from a public Telegram channel by username and post id, as Telegram's public embed widget shows it: text, links, publish time, edited flag, views, author signature, forwarded-from and reply references, photo and video thumbnails, link-preview card, and reaction tallies. The post id is the number at the end of a post link (t.me/durov/531 has id 531) or the id field of telegram-channel-posts. A post that does not exist, was deleted, or belongs to a channel that is not public returns not found. Telegram's terms restrict using platform content to train AI or machine-learning systems, so results must not be used for that purpose.
Response notes
- A post that does not exist, was deleted, or belongs to a channel that is not public returns `404`. Telegram gives the same answer for all three, so they cannot be told apart. - The returned post has the same fields as a `telegram-channel-posts` entry, under a `post` key. `views` and reaction counts are expanded from Telegram's abbreviated figures and are approximate above 1,000. - `media[].type` is `photo`, `video` or `unsupported`; entries carry thumbnail references only, never playable file URLs. - Telegram's terms restrict using platform content to train AI or machine-learning systems, so results must not be used for that purpose. Example response (text and reactions trimmed): ```json { "code": 200, "msg": "OK", "data": { "post": { "id": 4423, "username": "tginfo", "url": "https://t.me/tginfo/4423", "text": "Реестр .me заблокировал домен t.me\n\nUPD 14 июля 16:00 МСК: Домен восстановлен.\n\nПользователи Telegram по всему миру стол…", "links": [ "http://t.me/", "https://telegram.me/tginfo/4426", "https://www.whois.com/whois/t.me" ], "published_at": "2026-07-13T20:15:18+00:00", "edited": true, "views": 43300, "author": "Sominemo", "reactions": [ { "emoji": "😱", "count": 356, "paid": false }, { "emoji": "👎", "count": 58, "paid": false } ] } } } ```
MCP tool telegram_post
Related APIs
Social & Creator Platforms
Build creator intelligence, video research, transcript, and audience-comment workflows without maintaining YouTube scrapers.
Social & Creator Platforms
Turn Twitch's public channel, stream, clip, and team data into structured JSON — live status and viewer counts, top games, clips, VODs, and team rosters — as normalized JSON. Credential-free.
Social & Creator Platforms
Track creator and video activity, discover sounds and LIVE streams, and study public ad creatives through documented TikTok API routes.
How to scrape Telegram
Crawlora's 4 Telegram endpoints cover public channel and group profiles and public channel posts. A pull of @telegram on 2026-10-27 shows how the data behaves: 9,239,233 subscribers reported as exact, 16 photos, 228 videos and 378 links in the profile counters, and a first page of 20 posts that spans only four dates because Telegram announces features in bursts. Views arrive rounded and post links include sibling links. Private messages, private groups and account data are outside this API surface, and the endpoint documentation says results must not be used to train AI or machine-learning systems.
/telegram/channel with a public username (with or without @, or a t.me link) returns title, description, verification badge, subscriber count and photo, video, file and link counters. For @telegram on 2026-10-27, subscribers_approximate was false, so 9,239,233 is an exact figure, and files_count was 0 while videos_count was 228. Check that flag before comparing channels.
/telegram/channel-posts returns 20 posts per page, newest first. The first page ran from post 460 down to 441 and returned next_before 441 with has_more true; pass it as before for the next older page. A query term searches inside the channel, and a search with no matches returns an empty list, not an error.
Those 20 posts fall on four days: 6 posts on 2026-08-26 (ids 455 to 460, published within about 90 seconds), 5 on 2026-07-19, 4 on 2026-06-18 and 5 on 2026-05-14. Each is a feature drop, with a summary post linking the blog. Count by publish day, not by post, if you want a cadence, and note that the newest post on 2026-10-27 was still the one from 2026-08-26.
Views came back as round numbers such as 2,120,000 and 1,040,000, so differences below roughly ten thousand are not meaningful. The links array on a post also lists sibling posts in the same burst (t.me/telegram/455 to 460), so drop links that point back to the channel when you want outbound references. A post can be marked edited, as post 455 was.
Pass the username and a post id from the listing to /telegram/post. Keep the returned source identity and retrieval time with the record, because views and reactions keep changing.
/telegram/group resolves public groups. The channel route does not support private channels, groups, bots or user accounts, and returns an error naming which kind of name you passed, which is a cheap way to classify an unknown username.
FAQ
The profile returns a subscriber count with a subscribers_approximate flag. For @telegram it was 9,239,233 and not approximate on 2026-10-27. Read the flag before comparing channels.
Because the channel posts feature announcements as bursts. On 2026-10-27 the first page held 6, 5, 4 and 5 posts from four release days across about three and a half months. Group by publish date to avoid reading a burst as high frequency.
It does not return a profile. The route supports public channels only and returns an error naming which kind of name was given, so check the error before treating the username as missing.
Yes. The endpoint documentation says results must not be used to train AI or machine-learning systems. Keep that restriction in mind for downstream pipelines.
No. It covers public channel and group profiles and public channel posts only; private messages, private groups, and user account data are not included.