Telegram
3 endpoints.
GET /v1/telegram/channel
Channel Details
Retrieves public Telegram channel or group metadata including its name, description, avatar, verification status, subscriber or member count, and public media counters. This endpoint uses Telegram's public web preview and does not use a logged-in Telegram account. Private channels, invite-only groups, numeric IDs, and channels with no public web preview are not supported.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle required | query | string | Public Telegram handle, @handle, or t.me channel URL. |
cache_max_age | query | string | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). See the Caching page for details. one of: 1d, 3d, 7d, 14d, 30d |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/telegram/channel?handle=telegram" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/telegram/channel?handle=telegram", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/telegram/channel?handle=telegram",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"handle": "telegram",
"name": "Telegram News",
"description": "The official Telegram on Telegram. Much recursion. Very Telegram. Wow.",
"url": "https://t.me/telegram",
"avatar_url": "https://cdn1.telesco.pe/file/...",
"is_verified": true,
"subscriber_count": 9780000,
"subscriber_count_text": "9.78M",
"member_count": null,
"member_count_text": null,
"photo_count": 14,
"video_count": 225,
"file_count": null,
"link_count": 372
}GET /v1/telegram/channel_posts
Channel Posts
Retrieves one public web-preview page of Telegram posts with text, publish date, views, reactions when exposed, forwards, media previews, and link previews. Pass the returned cursor to fetch the previous page. Empty and terminal pages are not charged. Telegram does not expose every field on every public post, so reactions and downloadable media URLs can be absent. This endpoint does not support private or invite-only channels and groups.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
handle required | query | string | Public Telegram handle, @handle, or t.me channel URL. |
cache_max_age | query | string | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). See the Caching page for details. one of: 1d, 3d, 7d, 14d, 30d |
next_cursor | query | string | Numeric cursor returned by the previous page. Omit it for the latest posts. |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/telegram/channel_posts?handle=durov" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/telegram/channel_posts?handle=durov", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/telegram/channel_posts?handle=durov",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"channel": {
"handle": "durov",
"name": "Pavel Durov",
"description": "Founder of Telegram.",
"url": "https://t.me/durov",
"avatar_url": "https://cdn1.telesco.pe/file/...",
"is_verified": true,
"subscriber_count": 11100000,
"subscriber_count_text": "11.1M",
"member_count": null,
"member_count_text": null,
"photo_count": 14,
"video_count": 225,
"file_count": null,
"link_count": 372
},
"posts": [
{
"id": "543",
"channel_handle": "durov",
"url": "https://t.me/durov/543",
"author_name": "Pavel Durov",
"author_url": "https://t.me/durov",
"text": "Telegram has applied for the .gram domain zone. If approved, Telegram users could get their own second-level domains.",
"published_at": "2026-08-18T17:37:31+00:00",
"view_count": 1210000,
"view_count_text": "1.21M",
"reactions": [
{
"emoji": "⭐",
"emoji_id": null,
"count": 16300,
"count_text": "16.3K"
}
],
"reaction_count": 89300,
"forwarded_from": null,
"media": [],
"link_preview": null
}
],
"next_cursor": "523",
"has_more": true
}GET /v1/telegram/post
Post Details
Retrieves one public Telegram post with its text, publish date, views, reactions when exposed, forward source, media previews, and link preview. This endpoint uses Telegram's public post widget without a logged-in account. Private and invite-only posts are not supported.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
url required | query | string | Public Telegram post URL. |
cache_max_age | query | string | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). See the Caching page for details. one of: 1d, 3d, 7d, 14d, 30d |
Request
curl "https://api.scrapall.bipsport.com/scapi/v1/telegram/post?url=https://t.me/durov/543" \
-H "X-Scapi-Key: YOUR_API_KEY"const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/telegram/post?url=https://t.me/durov/543", {
headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();import requests
r = requests.get(
"https://api.scrapall.bipsport.com/scapi/v1/telegram/post?url=https://t.me/durov/543",
headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())Response 200 (sample)
{
"id": "543",
"channel_handle": "durov",
"url": "https://t.me/durov/543",
"author_name": "Pavel Durov",
"author_url": "https://t.me/durov",
"text": "Telegram has applied for the .gram domain zone. If approved, Telegram users could get their own second-level domains.",
"published_at": "2026-08-18T17:37:31+00:00",
"view_count": 1210000,
"view_count_text": "1.21M",
"reactions": [
{
"emoji": "⭐",
"emoji_id": null,
"count": 16300,
"count_text": "16.3K"
}
],
"reaction_count": 89300,
"forwarded_from": null,
"media": [],
"link_preview": null
}