Developer API · free · no key required

Limzo Data API

Every public Limzo group profile is also available as read-only JSON — the same aggregate stats the human page shows, built for dashboards, bots, and AI agents. No authentication, CORS-enabled, described by an OpenAPI 3.1 spec.

Quick start

Take any public profile URL and append .json — or just open limzo.com/s/hipo.json in your browser right now (hipo is a real group, the site's live example):

curl https://limzo.com/s/hipo.json

A real response from that URL, trimmed:

{
  "ok": true,
  "schema": "limzo.public_stats/v1",
  "generated_at": "2026-07-15T12:55:04.464Z",
  "docs": "https://limzo.com/docs/",
  "openapi": "https://limzo.com/api/public/openapi.json",
  "group": {
    "slug": "hipo",
    "title": "Hipo Chat",
    "username": "hipo_chat",
    "is_private": false,
    "plan": "community",
    "member_count": 3922,
    "url": "https://limzo.com/s/hipo",
    "telegram_url": "https://t.me/hipo_chat"
  },
  "range": { "key": "7d", "label": "7 days", "days": 7 },
  "stats": {
    "messages": 906,
    "replies": 391,
    "active_users": 228,
    "lifetime_messages": 1728,
    "peak_hour_utc": 21,
    "mood": { "label": "Sunny", "emoji": "☀️", "positive_pct": 81 },
    "daily": [ { "day": "2026-07-09", "messages": 142, "replies": 80, "active_users": 31 }, "…" ],
    "top_members": [ { "rank": 1, "name": "Josip", "username": "heretic", "messages": 213, "replies": 116 }, "…" ],
    "top_reactor": { "name": "mili", "username": "milibilij", "count": 120 },
    "reaction_magnet": { "name": "Josip", "username": "heretic", "count": 228 }
  }
}

That's the whole API: public, read-only JSON over plain HTTPS. No key, no signup, no SDK needed.

Use it with an AI assistant

The API is designed to be consumed by AI tools directly — assistants can fetch these URLs in-conversation, and the OpenAPI spec plugs into agent frameworks with zero glue code. Three things to try (the admin-facing story lives at AI visibility for your group). No group connected yet? Every prompt below works as-is with hipo, the live example group, in place of yourgroup:

1. Instant health read. Paste into ChatGPT or Claude:

Open https://limzo.com/s/yourgroup.json and tell me how my community
is doing — the trend, the mood, and what I should fix first.

2. Native tools in ChatGPT and Claude. In ChatGPT, try the official Limzo Community Analyst in the GPT Store — or build your own custom GPT by importing the spec as an Action:

https://limzo.com/api/public/openapi.json

In Claude, add the Limzo MCP connector (Settings → Connectors → Add custom connector) and Claude gets the stats as native tools:

https://limzo.com/api/public/mcp

The OpenAPI URL also works anywhere OpenAPI-described tools are accepted; the MCP URL works with any MCP client.

3. A live dashboard with no backend. The API is CORS-open, so browser fetches work from any origin. One prompt to Claude or ChatGPT:

Build a single-file HTML dashboard that fetches
https://limzo.com/s/yourgroup.json and shows the daily trend
(stats.daily), the leaderboard (stats.top_members), and the
mood (stats.mood). Refresh every 30 minutes. The exact response
schema: https://limzo.com/api/public/openapi.json

Endpoints

GET/s/{slug}.json

Stats for one public group. Mirrors the human page URL — {slug} is the last part of the group's limzo.com/s/<slug> address. Alias: GET /api/public/{slug} returns the identical payload.

Optional query parameter ?range=7d|30d|all — see ranges. Unknown slugs return a JSON 404 ({"ok":false,"error":"Public stats page not found."}); groups whose public page is switched off return 403.

Try it: /s/hipo.json · /api/public/hipo (alias) · a 404

GET/api/public/global-stats

Network-wide totals across all listed public groups (group count, messages, active members, replies, reactions, karma — 7-day and all-time) plus the current top groups by Limzo Score.

Try it: /api/public/global-stats

GET/api/public/openapi.json

This API as a machine-readable OpenAPI 3.1 document — full request/response schemas for code generators, API clients, and AI agents. Open the spec.

POST/api/public/mcp

The same API as an MCP server (Model Context Protocol, streamable HTTP, no auth) for Claude and any MCP client. Exposes two read-only tools: get_group_stats and get_global_stats.

Connect it in Claude: Settings → Connectors → Add custom connector → https://limzo.com/api/public/mcp. In Claude Code: claude mcp add --transport http limzo https://limzo.com/api/public/mcp

The range parameter

Group stats default to the last 7 days. Two wider windows exist:

ValueWindowAvailability
7dLast 7 daysAll groups (default)
30dLast 30 daysGroups on a Pro or Community plan
allAll-timeGroups on a Pro or Community plan

Requesting 30d or all on a free-plan group is not an error — the response silently falls back to 7 days. Always check range.key in the payload to see which window you actually got.

The example group is on a paid plan, so both wider windows serve real data — compare range.key across ?range=30d and ?range=all.

Response reference

The group stats payload (schema: "limzo.public_stats/v1") has three parts: group, range, and stats. The exact machine-readable definition lives in the OpenAPI spec.

group

FieldTypeMeaning
slugstringThe group's public slug.
titlestring?Display title.
usernamestring?Telegram username without @, when the group is public on t.me.
is_privatebooleanTrue when the group has no public t.me address.
planstringfree, pro, or community.
member_countinteger?Total members.
descriptionstring?Group description.
urlstringThe human stats page.
telegram_urlstring?t.me link, when public.

range

FieldTypeMeaning
keystringThe window actually served: 7d, 30d, or all.
labelstringHuman label, e.g. "7 days".
daysintegerWindow length in days.

stats

FieldTypeMeaning
messagesintegerMessages in the selected range.
repliesintegerReplies in the selected range.
stickersintegerStickers in the selected range.
active_usersintegerUnique posting members in the range.
messages_todayintegerMessages so far today (UTC).
active_users_todayintegerUnique posting members so far today (UTC).
lifetime_messagesintegerMessages since tracking started.
tracked_since_daysintegerDays since tracking started.
new_active_membersintegerMembers who posted for the first time in the range.
peak_hour_utcinteger?Busiest hour of day, 0–23 UTC.
moodobject?{ label, emoji, positive_pct } — group mood from reactions.
dailyarrayPer-day series: { day, messages, replies, active_users }.
top_membersarrayLeaderboard: { rank, name, username, messages, replies }.
top_reactorobject?Member who reacted the most: { name, username, count }.
reaction_magnetobject?Member whose messages attracted the most reactions.

Fields marked ? can be null — usually when a group hasn't accrued that data yet.

Caching, CORS & rate limits

Header / limitValueNotes
Cache-Controlpublic, max-age=1800Stats move slowly; respect the 30-minute cache instead of polling.
Access-Control-Allow-Origin*Call the API straight from browser apps.
Rate limit5 req/s, burst 20Per client IP. Excess requests get HTTP 429 — back off and retry.
HEADsupportedAll endpoints answer HEAD probes with headers only.

See for yourself:

$ curl -I https://limzo.com/s/hipo.json
HTTP/2 200
content-type: application/json; charset=utf-8
cache-control: public, max-age=1800
access-control-allow-origin: *

JSON is the cheap way to consume Limzo — a typical payload is ~50× smaller than the equivalent HTML page. If you're building something that needs more than the public feed offers, tell us about it.

Privacy & fair use

The API exposes only what the group's public stats page already shows — it is a different format, never a wider window:

No message content. Payloads never include verbatim member messages, on any plan.

Private groups stay private. Groups without a public t.me address expose aggregate metrics and the member leaderboard only.

Admins stay in control. If a group's admins switch its public page off or restrict visibility, the JSON disappears with it (403).

How the numbers are made: see the methodology page.

Finding groups to query

Slugs are public and discoverable:

• The public group directory lists active public profiles.

• The group sitemap enumerates every public profile URL.

• Every stats page carries a <link rel="alternate" type="application/json"> tag pointing at its JSON twin.

llms.txt summarizes the whole site — including this API — for AI assistants.

Versioning & stability

The payload carries schema: "limzo.public_stats/v1". New fields may be added at any time without notice — write consumers that ignore unknown keys. Breaking changes (renamed or removed fields, changed meanings) will bump the schema version, so pin your integration to the schema value.

Questions or feature requests? Join the Limzo Telegram community or contact us.