curl --request POST \
--url https://api.scrapeunblocker.com/social/telegram-channel \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/social/telegram-channel"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/social/telegram-channel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Scrape a public Telegram channel: info and posts
Reads a public Telegram channel’s web preview. Returns channel (username, title, description, avatar, verified, subscribers and the other counters) and posts, newest first: id, url, date (ISO-8601 UTC), text (plain), textHtml, views, author (signature), edited, forwardedFrom, replyTo, media (photo / video / animation / round_video / voice / audio / document / sticker, with CDN url, thumbnail, duration), poll, linkPreview, reactions (a custom-emoji reaction has its customEmojiId, plus the standard emoji and image Telegram falls back to when the page shows that emoji anywhere), buttons, links, hashtags (the tags Telegram links; a bare ‘#7’ is text) and mentions. One page (about 20 posts) by default; max_posts (up to 500) pages back through history; before, after and since bound the range, q searches inside the channel and post_id returns one post. nextBefore continues a capped answer. Only channels have a public preview: users, bots, groups and private channels answer 404. Billed one request per page fetched (pagesFetched).
curl --request POST \
--url https://api.scrapeunblocker.com/social/telegram-channel \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/social/telegram-channel"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/social/telegram-channel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your ScrapeUnblocker API key. Apply on every request.
Query Parameters
Public channel: username ('durov'), '@durov', or a t.me link ('https://t.me/durov', 'https://t.me/s/durov'). A post link ('https://t.me/durov/400') returns that one post.
Posts to collect, newest first (1-500), paging back through the channel's history; each page fetched is billed as one request. Omit it for one page, billed once: the newest posts (a page has 20 message slots and an album fills one per photo, so it can hold fewer posts).
Only posts with an id below this one. Pass nextBefore of a previous response to continue where it stopped.
Stop at this post id: only posts with a higher id are returned.
Stop at this date: only posts published on or after it (YYYY-MM-DD or an ISO-8601 datetime, UTC when no offset is given).
Search inside the channel: only posts matching this text.
Return only this post (a post id of the channel).
Exit-IP country (ISO-2). Blank lets us pick the exit.
Response
JSON with channel, a posts array, postsReturned, pagesFetched, hasMore and nextBefore.

