API · LLMS.TXT · STRUCTURED DATA
G.media, machine-readable
One curl, the whole ecosystem. Machine-readable feeds across G.media and tgadsspy. Public, CORS *, 5-min cache.
g.media
Canonical registry of every G.media product: live + soon tiers, products with a passport (audience, facts, companions, build-out, landing page on g.media), bots with live Telegram counters, domains, live-stats overlay.
tgadsspy.com
Source of truth for the ads side: creatives, channels, advertisers, impressions. Ads / stats / metrics domain network (listed in /api/products), RSS, OpenAPI, BigQuery-grade exports.
wall.tg
The social Mini App: users, posts, premium metrics, features, language coverage.
HOW TO USE
One curl, the whole registry
curl https://g.media/api/products
The response is JSON: ecosystem (legal/founder/HQ) + tiers + products (tagline, audience, facts, bundle, progress, landing_url, metrics) + bots (monthly_users — the live counter from the t.me page, 24h cache) + domains + live metrics (Wall, tgadsspy, TG.ME) + data_feeds + meta. CC BY 4.0.
PRODUCT ENTRY SHAPE
{
"slug": "tgadsspy",
"name": "tgadsspy",
"tier": "live",
"status": "live",
"canonical_url": "https://tgadsspy.com",
"landing_url": "https://g.media/en/tgadsspy",
"tagline": { "en": "Archive of every Telegram ad…", "ru": "Архив всей рекламы Telegram…" },
"audience": { "en": "For advertisers, agencies…", "ru": "Для рекламодателей, агентств…" },
"facts": [{ "en": "REST API + OpenAPI", "ru": "REST API и OpenAPI" }, …],
"metrics": [{ "label": { "en": "creatives" }, "value": 464237 }, …],
"bundle": [{ "handle": "tgadsspybot", "kind": { "en": "bot & mini app" }, … }],
"bundle_kind": "companions",
"progress": null
}The same field set on every product: what it is, who it is for, verifiable facts, a metric from a live source, companions (bot, mini app, channel, hub), build-out for products still shipping, and the landing on g.media. Bot metrics come from the t.me page counter, cached for a day; Wall and tgadsspy from their own APIs. Every text field carries ru and en.