Telegram Channels Scraper avatar

Telegram Channels Scraper

Pricing

$2.00 / 1,000 results

Go to Apify Store
Telegram Channels Scraper

Telegram Channels Scraper

⚡️ Telegram Channels Scraper: Extract posts from public Telegram channels.

Pricing

$2.00 / 1,000 results

Rating

5.0

(1)

Developer

i-Scraper

i-Scraper

Maintained by Community

Actor stats

4

Bookmarked

350

Total users

14

Monthly active users

a day ago

Last modified

Categories

Security

Limited permissions

Share

📊 Powerful Apify Actor for extracting message history from public Telegram channels.

Telegram Channels Scraper automatically downloads complete or incremental message history from the channels you specify.

Public channel URLs and usernames are supported, along with private channel invitations in t.me/+... or t.me/joinchat/... format. Telegram rate-limit retries resume from the last delivered message and respect your per-channel limit. If the login window closes or a required 2FA password is missing, the run is marked Failed with an ACTION REQUIRED message explaining how to retry.


1. Why you will love it

  • 🏎 Fast — fetches thousands of messages per minute thanks to full async processing.
  • 🛡 Reliable — retries API calls, respects rate limits and survives network hiccups.
  • 🔎 Flexible — scrape any number of channels and use historyFrom to limit the time range.
  • ☁️ Scalable — run dozens of parallel actors on Apify without dealing with servers.

2. Input configuration

{
"channels": [
"@apify",
"https://t.me/durov"
],
"historyFrom": "2025-01-01T00:00:00Z",
"telegramSession": "${{ TELEGRAM_SESSION }}",
"telegram2faPassword": "${{ TELEGRAM_2FA_PASSWORD }}",
"limit": 1000
}

Parameters explained:

  • channels (array, required) — channel identifiers accepted in any of the following forms:
    • @channel
    • https://t.me/channel
    • channel
  • historyFrom (string, optional) — ISO-8601 timestamp. Messages older than this value are skipped.
  • telegramSession (string, optional) — pass a session string directly instead of using the secret.
  • telegram2faPassword (string, optional) — account password if two-factor authentication is enabled.
  • limit (integer, optional) — maximum number of latest messages to fetch per channel. If omitted, the actor retrieves the full history (subject to historyFrom).

3. Running the Actor

  1. Open Telegram Channels Scraper in Apify Console and add at least one channel.
  2. Click Run and open Logs. If Telegram login is needed, open Settings → Devices → Link Desktop Device in Telegram and scan the latest QR code. The Actor refreshes expired codes during the three-minute login window.
  3. If Telegram requests a two-factor password, fill in Telegram 2FA password and start the Actor again.
  4. After a successful login, the Actor saves the session for future runs under the same Apify account. API and scheduled runs require a valid saved session or a valid telegramSession input.

4. Output dataset

Each message is stored in the default dataset. Sample record:

{
"type": "message",
"channel": "apify",
"id": 12345,
"date": "2024-05-21T15:32:10+00:00",
"sender_id": 67890,
"sender_username": "username",
"text": "Hello, Apify!",
"media_type": null
}

Download results in JSON, CSV, Parquet and more via Apify API or UI.


5. FAQ

Q: I see FloodWaitError in logs — did the run fail?
A: No. The actor automatically waits the required time and resumes. You will only see a warning.

Q: Can I scrape a private channel?
A: Yes. Provide an invite link (e.g. https://t.me/+HASH) or its short form (+HASH) in the channels array. Make sure the Telegram account running the actor has access to the channel; the actor will automatically join it if needed.

Q: How do I save only media messages?
A: After the run finishes, filter the dataset by media_type.

Q: Is it safe to provide telegramSession and telegram2faPassword?
A: Both values are stored in Apify Secrets; they never appear in logs and cannot be read by other actors. A session string only grants access to act as your account, and the 2FA password is used once during the sign-in flow. Recommended practices:
• keep both values exclusively in Secrets;
• regenerate / update the session string whenever you change your Telegram password;
• you can revoke access at any moment in Telegram settings by logging out the linked device.

Q: I noticed a new device called “apifytg” logged into my Telegram from an unfamiliar location. What is it?
A: When the actor authenticates, Telethon registers a device for the session (the default device model is “ApifyTG”). The IP you see is the data-centre where the actor is running (Apify Cloud or your local machine). This is expected and safe. If you want to revoke access, simply log this device out in Settings → Devices and remove the saved telegramSession / secret.


Looking for more Telegram data extraction tools? Check out our complete suite:


7. Support & contributions

Found a bug or have a feature request? Feel free to open an issue or submit a pull request. We’re happy to discuss ideas like additional fields, filters or export formats.


⭐️ Launch Telegram Channels Scraper today and turn Telegram content into valuable data for analytics, brand monitoring and research!