The data layer for
Telegram intelligence.

tgdata.ai crawls billions of public Telegram messages, channels, and entities — normalized into clean, training-ready JSONL. Buy the corpus, or pull any public channel in real time with our on-demand crawling API.

Drops straight into your stack
PythonPyTorch HuggingFacePandas ElasticsearchSpark
ingest · live
stream: public_channels/*1,284 msgs/sec
0
Messages indexed
0
Public channels
0
Languages covered
0
Data processed · refreshed daily
What you get

Raw Telegram in — training-ready intelligence out

A purpose-built pipeline turns noisy public channels into a stable, versioned corpus, delivered as bulk JSONL or a live API.

01

Crawl

Distributed collectors sweep public channels 24/7.

02

Normalize

Every message maps to one stable schema.

03

Enrich

Language tags, entities, de-dup, safety filters.

04

Deliver

JSONL / Parquet — snapshot, feed, or API.

LLM fine-tuning

Teach models Telegram-native slang, multi-script chat, and high-entropy finance / geo-political discourse.

  • Domain adapters & chat models
  • Safety & toxicity classifiers
  • RLHF & ranking bootstraps

OSINT & risk

Preserve the temporal and structural graph of Telegram for investigations and threat-intel pipelines.

  • Channel / group graph exploration
  • Entity clustering & tracking
  • Narrative & sentiment monitoring

Search & ranking

Build discovery and relevance systems on a cleaned corpus of public channels and bots.

  • Channel discovery & scoring
  • Trend detection by topic / region
  • Language-aware relevance
Data & API

One schema. Bulk dataset or on-demand crawl.

Newline-delimited JSONL, one line per message. Whatever you pull from the API matches the bulk dataset field-for-field — prototypes graduate to production without a rewrite.

Core message recordv1.0
FieldTypeDescription
message_idint64Message id (per chat)
chat_idint64Channel / group id
channel_usernamestringPublic handle
timestamp_utciso-8601Creation time (UTC)
langstringLanguage tag
textstringMessage body (UTF-8)
entitiesarrayHashtags, mentions, URLs + offsets
viewsint32View counter
forwardsint32Forward count
sourceenumpublic_channel · supergroup · bot
POST /v1/crawl → JSONL stream
curl -X POST https://api.tgdata.ai/v1/crawl \
  -H "Authorization: Bearer $TGDATA_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "channel": "durov", "since": "2026-08-01T00:00:00Z", "limit": 5000, "format": "jsonl" }'
import json, requests

resp = requests.post(
    "https://api.tgdata.ai/v1/crawl",
    headers={"Authorization": f"Bearer {TGDATA_KEY}"},
    json={"channel": "durov", "since": "2026-08-01", "limit": 5000},
    stream=True,
)
for line in resp.iter_lines():
    msg = json.loads(line)
    print(msg["message_id"], msg["lang"], msg["text"][:60])
const res = await fetch("https://api.tgdata.ai/v1/crawl", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TGDATA_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ channel: "durov", since: "2026-08-01", limit: 5000 }),
});
for await (const line of res.body) process.stdout.write(line);
POST/v1/crawl
GET/v1/channel/{user}
GET/v1/search
WS/v1/stream
Pricing

Start with a slice. Scale to the whole corpus.

Transparent tiers for evaluation, bulk licensing, and live crawling. Custom verticals and exclusivity on request.

Pilot

Free / evaluation
Validate fit before you commit.
  • 1 language slice
  • Up to 100K messages
  • Full schema + JSONL sample
Start a pilot
Most popular

Dataset license

Custom / quote
Full corpus, one organization.
  • 100% current snapshot
  • 18+ languages · JSONL + Parquet
  • Quarterly refresh option
  • PII / CSAM filtering + support
Talk to sales

API & Crawling

Usage / based
Pull any channel, in real time.
  • On-demand /v1/crawl
  • Live WebSocket stream
  • Key auth + per-plan rate limits
Get API access

Enterprise — exclusivity, custom filters, on-prem / air-gapped delivery, and per-jurisdiction legal review.

Contact enterprise →
Request access

Ready to see a sample?

Share your work email and use-case — we respond within 1–2 business days with a schema map and a language-specific preview.

Prefer email? [email protected] · Public data only — no private chats, contacts, or non-consensual content.