
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

Scrape public Telegram channels: the profile, subscriber count, and bio, plus posts with their date, views, text, and links. Keep a set number of recent posts, or only posts since a date.
Collect public Telegram channel profiles and posts from the web preview. No Telegram account, no phone number, no API key. Give it channel names or t.me links and get one row per post, with subscriber count, bio, views, text, media links, and the post URL.
1.28M becomes 1280000, so you can sort and sum the numbers.@name, or a t.me link (up to 50).| Field | Type | What it does |
|---|---|---|
profiles | array | Public channel names or links, such as telegram, @telegram, or https://t.me/telegram. Up to 50. Required. |
maxMessages | integer | Newest posts to save per channel. Default 10, minimum 1. |
collectMessages | boolean | Save posts. Turn off to save only the profile, subscriber count, and bio. |
oldestMessageDate | string | Keep posts from this UTC date on (YYYY-MM-DD). |
scrapeLastNDays | integer | Keep posts from the last N days. 1 is today only. If both date fields are set, the later cutoff wins. |
proxyConfiguration | object | Datacenter proxy by default. |
Recent posts:
{ "profiles": ["telegram"], "maxMessages": 10, "collectMessages": true }
Profile only:
{ "profiles": ["https://t.me/telegram"], "collectMessages": false }
Posts since a date:
{ "profiles": ["telegram"], "maxMessages": 20, "oldestMessageDate": "2026-08-01" }
Post rows repeat the channel profile on every post. Profile-only rows set message to null. A name that is not a public channel (unknown, a user account or a private group) saves no row and is not charged; it is listed in the status message and under failedInputs in the OUTPUT record, and the run does not fail.
| Field | Description |
|---|---|
username, fullName, verified, bio, avatarUrl | Channel profile. |
followers | Subscriber count as a number. |
url | Channel URL. |
message.fulldate, message.date | Post time (ISO, UTC) and the short date shown on the page. |
message.views | View count, with K and M expanded. |
message.description | Post text. |
message.image, message.video | Direct media file URLs (these expire). |
message.preview | Link preview with link and text, when the post has one. |
message.link | Permanent post link. |
message.reply, message.poll | Reply and poll text when present. |
Real item from a test run (trimmed):
{
"username": "@telegram",
"fullName": "Telegram News",
"avatarUrl": "https://cdn1.telesco.pe/file/T4pBs71Q...",
"followers": 9340000,
"verified": true,
"bio": "The official Telegram on Telegram. Much recursion. Very Telegram. Wow.",
"url": "https://telegram.me/s/telegram",
"message": {
"fulldate": "2026-08-26T19:11:05.000Z",
"date": "August 26",
"views": 1020000,
"image": "",
"video": "https://cdn1.telesco.pe/file/566183f75b.mp4?token=...",
"description": "Welcome Messages. Group and channel owners can now add messages that appear when a new member joins...",
"preview": null,
"link": "https://telegram.me/s/telegram/455",
"reply": "",
"poll": ""
}
}
The Posts view in the console is a table of channel, subscribers, date, views, text, and links.
$3 per 1,000 rows, which is $0.003 per row. A post is one row, a profile-only run is one row per channel, and an unknown channel is one row.
Worked example: 11 posts cost $0.033 in result fees. Compute and datacenter proxy traffic are billed separately at standard rates; our measured total for an 11-post run was about $0.035.
Is it legal to scrape Telegram channels? The actor reads only the public web preview of public channels. You are responsible for using the data in line with Telegram's terms and the privacy rules that apply to you.
Do I need to log in to Telegram or use a proxy? No. It does not ask for a phone number, code, or API id. Datacenter proxy is built in.
Can it read private groups or my own chats? No. Those need your Telegram session, which this actor never uses.
Why is a channel empty? The name may be wrong, the channel may hide its history, or your date window may exclude every post. Turn off post collection to save the profile anyway.
Do the media links keep working? Photo and video URLs expire. Copy the files soon after the run if you need them. Post links and channel links stay valid.
Can I schedule it or use the API? Yes. Start runs and read the dataset through the API, or use schedules in the console.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
profilesarrayRequiredChannels
Public channel names or links, such as telegram, @telegram, or https://t.me/telegram.
maxMessagesintegerOptionaldefault 10Maximum posts per channel
Newest posts to save for each channel. Profile-only runs ignore this and save one row per channel.
collectMessagesbooleanOptionaldefault trueCollect posts
Save posts. Turn this off to save only the profile, subscriber count, and bio.
Leave both empty to take the newest posts up to the maximum.
oldestMessageDatestringOptionalPosts on or after
Keep posts from this date onward, UTC. Use YYYY-MM-DD. When the day window is also set, the later cutoff wins.
scrapeLastNDaysintegerOptionalPosts from the last N days
Keep posts from the last N days, counting back from today (UTC). 1 is today only.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are used unless you choose another pool.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| username | string | Channel handle, with the @. |
| fullName | string | |
| avatarUrl | string | |
| followers | integer | Subscriber count shown on the public page. |
| verified | boolean | |
| bio | string | |
| url | string | |
| message | object |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One channel profile or one post saved to the dataset. | $0.003 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/telegram-channel-scraper').call({
"profiles": [
"telegram"
],
"maxMessages": 10,
"collectMessages": true,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/telegram-channel-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/telegram-channel-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Recent public posts from a Telegram channel.
Channel name, description and subscriber count only.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.