steamatlas открытый API

Онлайн игр Steam в JSON. Ключей нет, регистрации нет, CORS открыт — можно дёргать прямо из браузера с любого сайта. Данные берутся из Steam Web API каждые 5 минут для топ-100 и по расписанию для остальных ~180k игр.

Правила

Эндпоинты

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:
[![онлайн в Steam](https://steamatlas.obsinotes.dedyn.io/badge/730.svg)](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.