Read any public Telegram channel: posts, views, reactions, search and comments, no account
This API reads public Telegram channels the way Telegram shows them to any visitor who is not logged in, and returns JSON.
5 active endpoints, on 1, 2 and 3 credit tiers.
- POST/telegram/v1/channel
- POST/telegram/v1/posts
- POST/telegram/v1/search
- POST/telegram/v1/post
- POST/telegram/v1/comments
What Telegram endpoints does ReefAPI ship?
5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Telegram API
5 of 5 endpoints, ready to run
Latest posts of a channel
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the Telegram API works
Telegram is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 598 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and nothing is cached: every call reads the source live.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
From a channel name to its full post history, searches and comments
Read the channel card, walk its posts page by page, search it, and open the comments of the posts that matter.
Title, description, photo, verified badge, exact subscriber count and the photo, video, file and link counters.
About 20 newest posts with text, date, views, reactions, media, link preview, poll and forward. next_before points to the older page.
Repeat until has_more is false to walk the whole history.
Telegram's own search inside the channel, #hashtags included.
The newest public comments with author, text, reply and reactions; next_cursor reads older ones.
A dated feed of a channel's posts with views, reactions and media, its subscriber count over time, and the public conversation under each post.
curl -X POST https://api.reefapi.com/telegram/v1/posts \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"channel":"durov"}'{
"ok": true,
"data": { … },
"meta": {
"api": "telegram",
"endpoint": "posts",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}What a Telegram field actually contains
Fields that read differently from how they look. Every row was measured against live Telegram pages on 2026-11-03.
| Field | What it holds |
|---|---|
| subscribers, subscribers_display | subscribers is the exact count Telegram prints on the channel's own page (10,145,770 for @durov). subscribers_display is the rounded figure of the post list ("10.1M"); subscribers_approx is that figure as a number. The exact count matched a separate read of the channel page on 8 of 8 channels (the largest moved by 8 subscribers between the two reads). |
| views, views_display, views_is_exact | Telegram prints views rounded above 999 ("5.87M", "54.7K"). views is that figure as a number, views_display the text as printed, views_is_exact false when the figure is rounded. Views and dates matched each post's own page on 16 of 16 posts; views grow while you read, so two reads minutes apart can differ. |
| reactions | One entry per reaction shown: the emoji, or custom_emoji_id for a custom emoji, paid true for Telegram Stars, count and count_display. reactions_total sums the non-paid counts and says whether that sum is exact. The first reaction's count matched each post's own page on 16 of 16 posts. |
| post_id, url | The number after the channel name in the post link (https://t.me/durov/531). Pass the link or channel + post_id to post; the same id, text and date came back on 16 of 16 posts. An album is one row; each photo or video in it carries its own post_id. |
| forwarded_from | is_forwarded is always set. The source channel's name and link are filled only when Telegram prints them; on 2026-11-03 Telegram left the name blank on most reads of the same forwarded post. |
| media[].url | A direct file link for photos and most videos, valid for a limited time. Telegram gives no file link for very large videos ("Media is too big") and for documents and audio: url is null there and the title, size or performer is returned. |
| hashtags, mentions, links | Only what Telegram itself links in the text: "Update #2" is not a hashtag in Telegram and is not returned as one. |
| region_withheld, viewer_region | Telegram hides some channels from visitors in some countries. region_withheld is true when the channel is one of them, and viewer_region names the country whose view of the channel the answer carries. Channels that are not withheld look the same from every country. |
Telegram withholds some channels per country: on 2026-11-03 rian_ru was hidden from German visitors and shown in the US, Canada, Turkey and Kazakhstan; rt_russian was hidden in the US, Canada and Germany and shown in Turkey and Kazakhstan. The posts of a channel that is not withheld were identical from five countries in the same minute.
Telegram coverage, measured
Every number below was read from live Telegram pages on 2026-11-03, in three runs of the same call plan (76, 77 and 77 calls); 230 of 230 answered as expected, including 21 deliberate error cases.
Any public channel with its web preview on, in any language. Measured on 14 channels (news in English and Russian, crypto, tech, Telegram's own); a group, a user and a free username are recognised and answered as such.
10 to 20 posts per page (an album counts as one); three pages back on @durov and @bbcrussian returned 59 and 57 posts with no post twice.
On 410 posts from 23 pages of 19 channels: date, views and channel id 410/410, text 401/410 (the rest are media-only), media 195, reactions 239, link preview 67, reply 30, forward 14, buttons 20, poll 1.
Exact subscriber count matched a separate read of the channel page on 8 of 8 channels; date, text, views and first reaction matched each post's own page on 16 of 16 posts; post returned the same id, text and date as the list on 16 of 16.
Newest 1 to 100 per call, then 50 per older page; three pages on one post returned 120 different comments.
Views and reactions are rounded above 999 as Telegram prints them; no subscriber or reaction lists; forwarded-from source name only when Telegram prints it; no file link for very large videos, documents and audio; search returns the 22 newest matches and no total.
What people build with Telegram
The jobs this data is most often used for.
endpoints
credits per call
Monitor news, crypto and brand channels: new posts with views and reactions every few minutes.
Track a channel's growth with the exact subscriber count, day by day.
Search a channel for a keyword or #hashtag and collect every matching post with its link.
Collect the public comments under a post for sentiment or moderation work.
What Telegram data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 598 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/telegram/v1/posts \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"channel":"durov"}'import requests
r = requests.post(
"https://api.reefapi.com/telegram/v1/posts",
headers={"x-api-key": REEF_KEY},
json={
"channel": "durov"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Telegram.
Get a free key →Do I need a Telegram account or an API ID?▾
No. Everything is read from Telegram's public channel pages, logged out. You call reefapi.com with your ReefAPI key.
Which channels can I read?▾
Public channels that have an @username and whose web preview is on. Private channels, invite links (t.me/+...) and group chats have no public page; a group returns its card (members, online) from channel, and posts answers NOT_FOUND saying it is a group.
How do I get a channel's full history?▾
Call posts, then call it again with before = next_before until has_more is false. Each page holds about 20 posts (10 to 20 measured, an album counts as one); three pages back on two channels had no post twice.
Are view counts exact?▾
Telegram rounds them above 999 ("5.87M"), and so does every tool that reads the public page. We return the number, the text as printed and a flag saying whether it is exact. Subscriber counts are exact in the channel action.
Can I search a channel?▾
Yes, with Telegram's own search: words or a #hashtag, newest first. Telegram's channel search returns the 22 newest matching posts (20, then 2 on the next page) and no total: measured on four queries in four channels. "#сбои" in @tginfo returned 20 posts on the first page, 19 carrying the tag. For older matches, walk posts page by page.
Do you return comments?▾
Yes, when the channel has public comments: the newest 1 to 100, then older pages of 50 with next_cursor. Each comment has its id, date, author name, @username and photo, text, the comment it replies to and its reactions. Channels without public comments answer comments_available false.
Can I get the list of subscribers or who reacted?▾
No. Telegram does not publish them on any public page.
Do media links last?▾
Photo and video links are Telegram's own CDN links and carry a token; download what you need soon after the call, or call again for a fresh link.
What is the Telegram API?▾
Telegram API is a ReefAPI endpoint group for public telegram channels as json: posts with views, reactions and media, in-channel search, single posts, comments and exact subscriber counts. It returns live JSON through POST requests under /telegram/v1.
Is the Telegram API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Telegram calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Telegram login or account?▾
No login to Telegram is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Telegram data?▾
The page example is captured from a live channel call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Telegram API use?▾
Telegram actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Telegram from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call telegram actions with the same key, credit pool and JSON envelope used by normal REST requests.
14 Social Media APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Telegram, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 597 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-11-03.