Онлайн игр Steam в JSON. Ключей нет, регистрации нет, CORS открыт — можно дёргать прямо из браузера с любого сайта. Данные берутся из Steam Web API каждые 5 минут для топ-100 и по расписанию для остальных ~180k игр.
/api/*,
120 в минуту на бейджи и превью. Сверх — 429 и Retry-After.Cache-Control в заголовках) — чаще
дёргать бессмысленно, данные не изменятся.GET /api/app/{appid}/players?range=24hИстория онлайна. range: 24h (сырые замеры),
7d, 30d (часовые агрегаты), 1y, all
(суточные). Колонки, а не строки — так удобнее графикам.
https://steamatlas.obsinotes.dedyn.io/api/app/730/players?range=7d
{"appid": 730, "range": "7d", "resolution": "hourly",
"t": [1788390000, 1788393600, ...], // unix-время, секунды
"avg": [1012345, 998120, ...], // средний онлайн в бакете
"peak": [1043210, 1020000, ...]} // максимум в бакете
GET /api/app/{appid}Карточка: текущий онлайн, пик за 24 часа, рекорд, цена.
https://steamatlas.obsinotes.dedyn.io/api/app/1245620
{"appid": 1245620, "name": "ELDEN RING", "app_type": "game", "is_free": false,
"last_players": 37714, "last_polled_at": "2026-09-03T16:33:31Z",
"peak_24h": 41002, "peak_players": 953426, "peak_at": "...",
"currency": "RUB", "price_initial": 359900, "price_final": 215940, "discount": 40,
"discount_end": "2026-09-21T17:00:00Z", "price_changed_at": "...", "tier": 1,
"no_stats_since": null}
Суммы — в копейках/центах, как отдаёт магазин: 359900 = 3599 ₽.
tier — как часто игру опрашивают (1 — раз в полчаса, 4 — раз в неделю).
GET /api/top?limit=50Топ по текущему онлайну, до 200 строк: appid, name, last_players, peak_24h, peak_players, last_polled_at.
GET /api/trends?limit=10Растут и падают за неделю: среднее за сутки против предыдущих семи дней,
порог 100 онлайна. {"rising": [...], "falling": [...]}, в каждой
строке avg_24h, avg_prev, delta_pct.
GET /api/deals?limit=50&sort=discount&min_discount=1&min_players=0Игры со скидкой, до 200 строк. sort=discount — по проценту, при
равном по абсолютной выгоде; sort=live — по проценту, взвешенному
логарифмом онлайна (score), то есть большие скидки на то, во что
играют. Бесплатные и безымянные приложения не попадают, скидки с истёкшим
сроком — тоже.
В строке appid, name, currency, initial, final, discount, saving,
score, discount_end, last_players, changed_at, updated_at. Суммы в копейках,
saving — сколько денег экономится, discount_end — когда
скидка кончится по данным Steam (null, если срок неизвестен).
GET /api/search?q=counter&limit=20Поиск по названию, от двух символов. appid, name, last_players.
GET /api/app/{appid}/pricesИстория цены: строка на каждое изменение — ts, currency, initial, final, discount.
GET /api/statsСостояние сборщика: сколько приложений в каталоге, сколько отслеживается, замеров, разбивка по тирам.
SVG-бейдж с текущим онлайном — для README, Discord, форумов. Обновляется раз в 5 минут.
Markdown:
[](https://steamatlas.obsinotes.dedyn.io/app/730)
HTML:
<a href="https://steamatlas.obsinotes.dedyn.io/app/730"><img src="https://steamatlas.obsinotes.dedyn.io/badge/730.svg" alt="онлайн в Steam"></a>
Свой текст и цвет:
https://steamatlas.obsinotes.dedyn.io/badge/730.svg?label=playing%20now&color=%233f7f9c
Страница /app/{appid} отдаёт Open Graph с картинкой графика —
ссылка в Telegram, Discord и Twitter разворачивается в карточку с онлайном.
Саму картинку можно брать напрямую: https://steamatlas.obsinotes.dedyn.io/og/730.png (1200×630).
Steam Web API (GetNumberOfCurrentPlayers, ISteamChartsService,
IStoreService) и карточки магазина. История копится с сентября 2026 —
прошлого Valve не отдаёт. Сырые замеры живут 90 дней, часовые и суточные
агрегаты — навсегда. Сервис не связан с Valve.