CRM Solid logo
GUIDE16 min read

Telegram group scraping: a practical, compliant guide

What scraping is, what is actually allowed under Telegram ToS and GDPR, how to filter raw lists into active cohorts, and the exact warm-up window before scraped contacts should ever see a DM from you.

14-day free trial · No credit card required · Cancel anytime

Compliance disclaimer

This guide is informational, not legal advice. Scraping member metadata and using it for outbound marketing intersects with GDPR (EU), KVKK (Turkey), CAN-SPAM (US), CASL (Canada), and Telegram's ToS. Always confirm your lawful basis before any outreach, never message minors, honor opt-out requests within 24 hours, and keep an audit log of the source, date, and purpose for every scraped contact.

What you will learn

Four practical skills by the end of this guide

What is actually allowed

Where Telegram ToS, GDPR, and KVKK draw the line, and where your team should never cross it.

Activity-based filtering

Turn a raw 10,000-row list into a 1,500-row active cohort with 8× the reply rate.

Account warm-up

Why a fresh account scraping cold contacts is a one-way ticket to a ban, and what to do instead.

First-outreach playbook

Per-account day-1 caps, group-name personalization, and the report-rate trigger that signals stop.

What you will need

Get these ready before you start; missing prerequisites are the #1 reason scraped lists underperform.

  • A CRM Solid workspace (free trial works) with at least one connected Telegram account that is 30+ days old.
  • A shortlist of 5-10 public Telegram groups where your target audience actually engages.
  • A documented lawful basis under GDPR/KVKK for contacting scraped users (consent, legitimate interest, etc.).
  • A spreadsheet to log source-group, scrape date, filter criteria, and result count for every scrape (required for compliance).
  • 14 days of patience: you will warm up sender accounts before any DM goes to a scraped contact.
  • A no-stress mindset about lower volumes. Quality cohorts beat raw lists every time.

"Telegram scraping" is a category of techniques for extracting publicly available metadata about members of Telegram groups: their username, display name, last-seen bucket, profile photo presence, and sometimes their bio. The data sits behind Telegram's standard MTProto API and is the same data any group member can see by tapping the group header.

What makes scraping interesting (or risky) is what you do with the extracted list. Used as a seed for a high-relevance, opted-in newsletter, it is a legitimate lead-generation tactic. Used for unsolicited bulk DMs, it is the fastest way to burn a sender account and earn a spam complaint that lives in your compliance file forever.

This guide walks through scraping the right way: with documented consent, with quality filters that improve both reply rates and compliance posture, with warm sender accounts that survive the inevitable report or two, and with a per-account daily cap that keeps your trust score positive.

Step 1: Confirm the legal and ToS basis for your outreach

Budget: 5 minutes (one time). Three frameworks simultaneously govern Telegram scraping for outreach: the platform's own Terms of Service, the major data-protection laws (GDPR, KVKK, CCPA, CASL, CAN-SPAM), and any sector-specific rules (HIPAA, GLBA). None of them flatly ban scraping; all of them constrain what you can do with the result.

For a documented lawful basis you have three realistic options:

  • Consent. The cleanest option but rarely available before scraping (the whole point is reaching people who have not yet consented). Useful for warm communities you operate yourself.
  • Legitimate interest. Defensible under GDPR Article 6(1)(f) for B2B outreach to professional contacts who would reasonably expect a relevant message in their area of work. Requires a written legitimate-interest assessment (LIA) on file.
  • Contractual necessity. Almost never applies to cold outreach. If a contact has signed up for your product, you do not need to scrape them.

Whatever basis you pick, log it. CRM Solid has a free-text "lawful basis" field on every imported segment; fill it in. If a regulator or an angry recipient asks, you have evidence within 30 seconds.

Important: consumer-targeted scraping (regular people in their personal capacity, not businesses) is a different beast. GDPR's bar is much higher and many jurisdictions require opt-in consent before any commercial message. If your audience is consumers, talk to a lawyer in your region first.

Step 2: Pick groups where your target audience genuinely engages

Budget: 15 minutes. Group selection is the single biggest lever on your eventual reply rate. A 50,000-member crypto news group looks attractive but is the wrong audience for a B2B SaaS pitch; members are there for market info, not for buying enterprise software.

What good groups look like:

  • Active in the last 7 days. Scroll the message history. If the last message was a week ago, the group is dead.
  • Genuine member engagement. Multiple distinct members posting (not just one admin and bots).
  • Topic match with your offer. A "remote work tools" group is a fit for a productivity SaaS; a "remote work jobs" group is a fit for a recruiting tool. Not interchangeable.
  • Size between 1,000 and 10,000. Smaller groups feel spammed faster. Larger groups beyond Telegram's 10K member-list cap waste your time (you cannot scrape past 10K anyway).
  • English (or your operating language) primary. Mixed-language groups produce mixed-quality cohorts.

Telegram's in-app search now categorizes public groups by topic, but the better search is to ask three customers in your category which Telegram groups they actually read. You will get a higher-signal shortlist in 10 minutes.

Step 3: Join the target groups from a warm account

Budget: 5 minutes per group, then 24+ hours of wait. Telegram's anti-abuse system watches account behavior tightly. One of the loudest signals is the "join → scrape → leave → repeat" pattern. Avoid it.

The right join flow:

  1. Join from an established sender account that has at least 30 days of normal Telegram usage history (real contacts, real messages, not a freshly-registered shell).
  2. Stay in the group at least 24 hours before scraping. Ideally, read a few messages, react to one or two, even post a benign comment if appropriate. This makes the join look like a member, not a scraper.
  3. Limit total group joins per account to 10 per week for the first month. Joining 100 groups in a day is the fastest-known route to a SPAMMER trust-score downgrade.
  4. Do not leave the group right after scraping. Stay in for at least a week. Leaving immediately is also a flagged pattern.

Step 4: Run a scrape with default filters off

Budget: 2 minutes per group. Open CRM Solid > Scrapers > New > Telegram group. Paste the group username (e.g., @saasfoundersclub) or the invite link.

For your first scrape on each group, leave all filters at default (all members, regardless of activity). The point is to see the distribution of activity levels in the group; that tells you what filter values will yield a useful cohort.

The scraper outputs:

  • Total members visible to your account.
  • Distribution of last-seen buckets (online now, recently, within a week, within a month, long time ago, hidden).
  • Profile-photo presence (yes/no), a proxy for account quality.
  • Username presence (some users have no @username and can only be reached if you have their phone number).
  • Bio presence, a weak signal but useful for personalization.
# Typical raw distribution from a 10K-member SaaS group
last-seen recently      :  1,250  (12.5%)
last-seen within week   :  1,820  (18.2%)
last-seen within month  :  2,400  (24.0%)
last-seen long ago      :  3,180  (31.8%)
hidden                  :  1,350  (13.5%)
total scraped           : 10,000

with profile photo      :  6,400  (64.0%)
with @username          :  7,250  (72.5%)
with bio                :  3,900  (39.0%)

Most of the raw 10K is dead weight. The next step turns the raw number into a usable cohort.

Step 5: Apply activity-based filters

Budget: 1 minute. Re-run the scrape with these filters:

  • Last-seen: within 7 days.
  • Profile photo present: yes.
  • Username present: yes.
  • Has posted in group: at least 1 message (if the group is large enough to make this distinguishable).

On the 10K-member distribution above, this yields roughly 800-1,200 contacts. That is your real reachable cohort. Reply rates from this cohort typically land in the 8-15% band versus 1-3% from the raw list, a 4-8x lift.

The reasoning behind each filter:

  • Last-seen ≤ 7 days filters for users who actually open Telegram. Inactive users never read your DM.
  • Profile photo present correlates with real human accounts; throwaway and bot accounts skip this step.
  • Username present ensures the contact is addressable without needing their phone number (which you do not have for cold contacts).
  • Has posted in group separates genuine community members from passive members who joined and forgot.
Counter-tip: for niche topics with low total audience (e.g., "Russian-speaking F# developers"), relax to last-seen ≤ 30 days. The smaller pool requires more permissive filters or you end up with 40 contacts total.

Step 6: Save as a segment, tag everything

Budget: 1 minute. Click Save as segment. Name it descriptively: saasfoundersclub-active-2026-05-13. Apply tags in bulk:

  • source:telegram-group
  • group:saasfoundersclub
  • scrape-date:2026-05-13
  • cohort:active-7d
  • persona:saas-founder (or whatever applies)

These tags do three things. First, they are your audit trail when someone asks where the contact came from. Second, they let you measure per-group, per-scrape-date reply rates over time and prune sources that stop performing. Third, they let you build smart segments, e.g., "all contacts from any SaaS group scraped in the last 90 days who have not replied yet."

Step 7: Warm up your sender accounts

Budget: 14-30 days of patience (zero hands-on time). This is the step everyone wants to skip and the step that decides whether you have a stable channel in six months.

A scraped-cold-contact DM is the highest-report-risk message Telegram sees. If your sender account is brand new (less than 30 days), with no profile photo, no bio, no contacts, and no message history, the first three reports will trigger a temporary send block. The fifth will get you a 7-day suspension. By the time you are unblocked, your campaign is dead.

The 14-day warm-up curve (in detail in our bulk messaging guide):

  1. Days 1-3: 5 messages per day to warm/known contacts only.
  2. Days 4-7: 10 messages per day, mixed warm + opted-in.
  3. Days 8-14: 20 per day, can start small batches of cold-scraped.
  4. Day 15+: 50 per day full cold-scraped throughput.

Meanwhile, the account should have a real profile photo, a 1-line bio, at least 10 personal contacts in its address book, and a few real conversations in its message history. These are not optional.

Step 8: Send slow, personalized, and with stop-on-reply

Budget: ongoing. Day 1 of outreach to a fresh scraped cohort should be conservative. Settings to use:

  • Daily cap per sender: 5 messages to scraped contacts.
  • Minimum interval: 5 minutes between sends.
  • Multi-account rotation: spread the 5 across 2-3 senders if available.
  • Template variation: at least three spintax variants per opener.
  • Group-name personalization: reference the source group explicitly to anchor relevance.
  • Stop-on-reply: always on. Always.
# Anchored opener that references the source group
{Hi|Hey} {first_name|there}, {noticed|saw} your {post|comment} in
{group_name} {today|recently} about {topic}. We help {persona} solve
that without {pain_point}. Quick check - are you {currently|actively}
looking for that, or just keeping an eye on the space?

Watch reply rate and report rate hourly for the first 48 hours. Targets:

  • Reply rate ≥ 8%: you have a healthy cohort and a healthy template.
  • Report rate ≤ 1 per 200 sends: you are well below the danger threshold.
  • If reports spike to ≥ 1 per 50, pause immediately and investigate.

After 48 hours of clean signals, ramp daily cap to 10 per sender, then 20, then 40 over the next two weeks. You should reach steady- state throughput by week three.

Common pitfalls

  • Re-using the same opener for 1,000 sends. Telegram fingerprints message content. Spintax is non-optional.
  • Sending all day without breaks. Real humans sleep. CRM Solid's rate limiter respects business hours by default; keep it on.
  • Ignoring opt-out requests. Anyone who replies "STOP" or "unsubscribe" needs to be flagged in the CRM within minutes. This is automatic in CRM Solid via keyword rules; verify the rule is enabled.
  • Re-scraping the same group every week. Telegram tracks this. Once a quarter is plenty.

Raw scraped list vs activity-filtered cohort

Numbers from a typical 10,000-member SaaS group. The lift comes from cutting dead weight, not from finding a magic list.

CapabilityActivity-filtered (CRM Solid default)RecommendedRaw scrape (no filter)Free Telegram bot scraper
Cohort quality
Average size from a 10K group
~1,000~10,000~10,000
Active in last 7 days
100%~12%~12%
Has @username (addressable)
100%~72%~72%
Outreach performance
Typical reply rate
8-15%1-3%1-3%
Report rate (per 100 sends)
< 0.52-53-8
Ban risk for sender
LowHighVery high
Compliance posture
Audit trail (source, date, basis)
Opt-out keyword automation
manual
GDPR right-to-erase workflow

Free Telegram bot scrapers extract the same raw list, but ship none of the filtering, warm-up tooling, audit trails, or rate-limit safety. They are a fast path to a banned account.

“We cut our scraped list from 14,000 names to 1,800 active contacts. Reply rate jumped from 2.1% to 11.6%, demos doubled, and we have not had a single ban in 90 days. The filtering step did the heavy lifting.”
Inês Carvalho
Head of Growth · Outpost Robotics

Scraping FAQ

Eight legal and operational questions that come up every week.

In most jurisdictions, collecting publicly visible group-member metadata (username, display name, last-seen bucket) is not illegal by itself, but contacting those people for outbound marketing without a lawful basis can violate GDPR, KVKK, CAN-SPAM, and similar laws. Always pair scraping with consent capture or a documented legitimate-interest analysis before any DM is sent.
Telegram's Terms forbid spam, abuse, and operating bot/automation behavior that "disrupts the service." Scraping itself is not explicitly named, but the moment your scraped list is used for unsolicited bulk outreach, you are squarely in spam-policy territory and accounts will be flagged. Treat scraping as gated by your downstream use, not by the act itself.
Telegram caps the publicly-visible member list of a public group at 10,000 users. Even if the group has more members, only the first 10,000 are returned via MTProto pagination. CRM Solid paginates the maximum allowed and writes the unique results to your contact base.
Telegram added a privacy setting that lets users hide themselves from member lists in groups they are in. These users are invisible to scraping by design. They still appear in chat messages, but you cannot extract them from the member list. We respect this and do not work around it.
Random scraped lists average 1-3% reply rates because most members are inactive or have left Telegram. Filtering for users with a "last seen recently" status or who posted in the group within the past 14 days typically lifts reply rates to 8-15%. Activity is the single biggest predictor of reachability.
Technically yes, if you have permission to view the member list. Operationally, private groups are usually communities of trust, and scraping them for outbound outreach is the fastest way to lose the relationship and get reported. We strongly recommend against it unless you are scraping your own community.
A fresh account needs 14-30 days of warm-up before it should send to cold scraped contacts. Cold scraped lists are the highest-risk outbound surface on Telegram; they get the most reports. A warm, established account with conversation history weathers reports far better than a brand-new sender.
Telegram's spam scoring is cumulative. One report from a freshly-scraped contact lowers your trust score by a measurable amount; three to five within 24 hours typically trigger a temporary send block (flood wait at the account level). CRM Solid surfaces this in the outreach health dashboard so you can pause and investigate before a full ban.
Ready to ship

Scrape with compliance built in

CRM Solid couples the scraper with filters, warm-up tooling, audit trails, and opt-out automation. Run the guide end-to-end on a 14-day trial.

Trusted by 2,500+ teams · GDPR-ready · 99.95% uptime

We value your privacy

We use cookies to improve our site, analyze traffic, and personalize ads. You can accept all, reject non-essential, or customize your choices. Read our Cookie Policy.