logoPandorLabs
social data api

Telegram

Public channels, groups and posts.

Channel or group1 request
Posts in a channel1 request
Single post1 request
GET/v1/telegram/channel

Channel or group

1 request

Returns metadata for a public Telegram channel or group: name, description, avatar, verified flag, subscriber or member count, and the public media counters. Covers public channels and groups by username; private and invite-only ones are not included.

Query parameters

handle
stringrequired
Public channel handle, with or without @, or a t.me link.
cache_max_age
string
Accept a stored response up to this age. Inside that window the answer is free and comes back with cached: true and a cached_at time; past it, the request runs live for 1 request.

1d3d7d14d30d

curl "https://api.pandorlabs.com/v1/telegram/channel?handle=telegram" \  -H "Authorization: Bearer $PANDORLABS_KEY"
Example response

Response

{
  "success": true,
  "credits_charged": 1,
  "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

Posts in a channel

1 request

Returns one page of posts from a public Telegram channel. Each post has text, publish date, views, forwards, reactions (if visible), link previews and media previews. Send the returned cursor to step back to older posts. Pages that are empty or mark the end of the feed are free. Reactions and media URLs are included where the post shows them. Private and invite-only channels or groups are not supported.

Query parameters

handle
stringrequired
Public channel handle, with or without @, or a t.me link.
cursor
string
Numeric cursor from the previous page. Leave it out to start from the newest posts.
cache_max_age
string
Accept a stored response up to this age. Inside that window the answer is free and comes back with cached: true and a cached_at time; past it, the request runs live for 1 request.

1d3d7d14d30d

curl "https://api.pandorlabs.com/v1/telegram/channel/posts?handle=durov" \  -H "Authorization: Bearer $PANDORLABS_KEY"
Example response

Response

{
  "success": true,
  "credits_charged": 1,
  "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
    }
  ],
  "cursor": "523",
  "has_more": true
}
GET/v1/telegram/post

Single post

1 request

Returns a single public Telegram post: text, views, publish date, reactions (if visible), the forward source, media previews and the link preview. Covers posts from public channels and groups.

Query parameters

url
stringrequired
Link to a public Telegram post.
cache_max_age
string
Accept a stored response up to this age. Inside that window the answer is free and comes back with cached: true and a cached_at time; past it, the request runs live for 1 request.

1d3d7d14d30d

curl "https://api.pandorlabs.com/v1/telegram/post?url=https%3A%2F%2Ft.me%2Fdurov%2F543" \  -H "Authorization: Bearer $PANDORLABS_KEY"
Example response

Response

{
  "success": true,
  "credits_charged": 1,
  "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
}