catalog is filling up Place Score recalculated nightly methodology is public RU / EN from day one

API for developers

The catalog of channels, bots and mini apps, plus the state of our Telegram availability monitor, as JSON. Reading is free: 1000 requests a day per key.

The key

Created in your dashboard and sent in the x-api-key header. Do not put it in the query string: from there it lands in proxy logs and browser history.

Create a key in the dashboard

The ceiling

1000 requests a day per key. The counter resets at 00:00 UTC. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining; over the ceiling you get 429 and Retry-After with the seconds left until the reset.

Try it

Replace KEY with your own and run this in a terminal.

curl -H "x-api-key: КЛЮЧ" \
  "https://tg.place/api/v1/top?limit=3"

Endpoints

GET /api/v1/search?q=нейросети
Search the catalog.
GET /api/v1/listings/{slug}
One entry: metrics and the score with its breakdown and preliminary flag.
GET /api/v1/categories
Category trees per entry type. Empty ones are left out.
GET /api/v1/top?limit=10
Catalog top by Place Score — the same selection as the showcase.
GET /api/v1/status
State of the Signal monitor. The same data sits at /api/status without a key.

Errors

Every error has the same shape: a code, a line for a human and a link back to this page. Codes: no_key, bad_key, bad_request, not_found, rate_limited, internal.

{
  "error": {
    "code": "rate_limited",
    "message": "…",
    "docs": "https://tg.place/en/developers"
  }
}

Specification

The OpenAPI document is built from the same schemas that validate the requests, so it cannot drift from the behaviour.

openapi.json

Paid tiers

There are none yet. They arrive together with payments; the free tier stays either way.

A key opens read access to the catalog through /api/v1. Free tier: 1000 requests a day per key, up to 5 keys per account.