Заправкин API
Публичный REST API · v1

Данные об АЗС России — в вашем коде

Наличие топлива, цены и очереди на заправках по всей стране. Один запрос — актуальный JSON. Только чтение, версионирование, честные лимиты.

  • Бесплатный тариф
  • Только запросы GET
  • Данные от водителей
stations · GET
$ curl -s https://api.zapravkin24.ru/v1/stations/8f2c9a1e \
     -H "Authorization: Bearer $ZAP_KEY"

{
  "id": "8f2c9a1e-4b17-4c02-9d3a-1f77",
  "name": "Лукойл АЗС №241",
  "brand": "lukoil",
  "city": "moscow",
  "status": "FUEL",       // есть топливо
  "location": { "lat": 55.8471, "lng": 37.4899 },
  "prices": [
    { "fuel": "AI-92", "price": 54.20 },
    { "fuel": "AI-95", "price": 59.10 },
    { "fuel": "DT",    "price": 62.75 }
  ]
}
Что отдаёт API

Весь дорожный слой Заправкина — как ресурсы

Версия 1 открывает станции, цены и агрегаты, которые уже считает приложение. Всё — только чтение, только собственные данные сервиса.

Станции

Активные АЗС: бренд, адрес, координаты, статус наличия и оценка очереди.

GET /stations

Цены и история

Текущие цены по видам топлива и история изменений за период.

GET /stations/{id}/price-history

Города

Города, где работает сервис: слаг, регион, координаты, герб.

GET /cities

Средние цены

Средние по городу, бренду и стране. находите, где топливо дешевле.

GET /cities/{slug}/averages

Бренды и топливо

Справочник брендов АЗС, премиальных линеек и кодов топлива.

GET /brands · /fuel-types

Наличие и очереди

Статус топлива и оценка очереди на каждой станции — в реальном времени.

GET /cities/{slug}/stats
Быстрый старт

От установки до первого JSON — три шага

Ключи выдаёт само приложение Заправкин. Никаких заявок и ожидания одобрения — включили режим разработчика и работаете.

1

Включите «Разработчик»

В приложении: профиль → настройки → тумблер «Разработчик».

2

Создайте ключ

На появившейся вкладке «API» нажмите «Новый ключ». Секрет показывается один раз — сохраните его.

3

Первый запрос

Передайте ключ в заголовке Authorization и получите данные.

curl https://api.zapravkin24.ru/v1/cities/moscow/averages \
  -H "Authorization: Bearer $ZAP_KEY"
const res = await fetch(
  "https://api.zapravkin24.ru/v1/cities/moscow/averages",
  { headers: { Authorization: `Bearer ${process.env.ZAP_KEY}` } }
);
const { averages } = await res.json();
import requests, os

r = requests.get(
    "https://api.zapravkin24.ru/v1/cities/moscow/averages",
    headers={"Authorization": f"Bearer {os.environ['ZAP_KEY']}"},
)
print(r.json()["averages"])
Справочник

Эндпоинты v1

Единый формат: понятные ресурсы, курсорная пагинация, ошибки по RFC 9457. Список ниже построен из спецификации OpenAPI работающего API — он не может разойтись с тем, что сервер отвечает на самом деле.

GET /v1/averages/country требует ключ

Средние цены по России

Параметры запроса

Без параметров.

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
fuel string
avg number (double)
min number (double)
max number (double)
sampleSize integer (int32)
updatedAt string
GET /v1/brands требует ключ

Бренды АЗС — slug — то, что принимает /v1/stations?brand=.

Параметры запроса

Без параметров.

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
id string
name string
slug string
color string
logoUrl string
GET /v1/brands/{slug}/averages требует ключ

Средние цены по бренду в городе — city обязателен: средняя «по России» для одного бренда смешала бы Москву и Владивосток.

Параметры запроса

ПараметрТипОписание
slug* string Слаг бренда, напр. lukoil path
city* string Название города, обязательно query

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
fuel string
avg number (double)
min number (double)
max number (double)
sampleSize integer (int32)
updatedAt string
GET /v1/cities требует ключ

Все города — Города, где работает сервис. Список небольшой и почти статичный — пагинации нет.

Параметры запроса

Без параметров.

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
id string
name string
region string
slug string
latitude number (double)
longitude number (double)
coatOfArmsUrl string
GET /v1/cities/{slug} требует ключ

Один город

Параметры запроса

ПараметрТипОписание
slug* string Слаг города, напр. moscow path

Ответ

200 · application/json
ПолеТипОписание
id string
name string
region string
slug string
latitude number (double)
longitude number (double)
coatOfArmsUrl string
GET /v1/cities/{slug}/averages требует ключ

Средние цены по городу — По ценам, увиденным за последние 14 дней.

Параметры запроса

ПараметрТипОписание
slug* string Слаг города path

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
fuel string
avg number (double)
min number (double)
max number (double)
sampleSize integer (int32)
updatedAt string
GET /v1/cities/{slug}/stats требует ключ

Сводка по городу — Наличие топлива и очереди по активным АЗС города.

Параметры запроса

ПараметрТипОписание
slug* string Слаг города path

Ответ

200 · application/json
ПолеТипОписание
city string
totalStations integer (int32)
withFuel integer (int32)
noFuel integer (int32)
noData integer (int32)
queuedStations integer (int32)
avgQueueMinutes integer (int32)
fuelPrices FuelAverageResponse[]
GET /v1/fuel-brands требует ключ

Премиальные линейки топлива — G-Drive, Pulsar и подобные, с привязкой к бренду.

Параметры запроса

Без параметров.

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
id string
brandId string
name string
slug string
color string
logoUrl string
GET /v1/fuel-types требует ключ

Коды топлива — Единственный публичный источник строк, которые принимает ?fuel= и возвращает prices[].fuel.

Параметры запроса

Без параметров.

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
code string
label string
GET /v1/stations требует ключ

Список активных АЗС — Фильтры по городу, бренду, топливу и геозоне. Постраничный обход — курсорный: передайте meta.cursor из предыдущего ответа в параметр cursor. Пустой meta.cursor означает, что страницы кончились.

Параметры запроса

ПараметрТипОписание
city string Слаг города, напр. moscow query
brand string Слаг бренда, напр. lukoil query
fuel string Код топлива: AI-92, AI-95, AI-95+, AI-98, AI-100, DT, GAS query
bbox string Геозона minLng,minLat,maxLng,maxLat query
cursor string Курсор следующей страницы (meta.cursor) query
limit integer (int32) 1–200, по умолчанию 50 query

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
id string
name string
brand string
address string
city string
location Location
status string
statusUpdatedAt string
openingHours string
fuelTypes string[]
distanceMeters number (double)
prices PriceResponse[]
GET /v1/stations/{id} требует ключ

Одна АЗС с текущими ценами — Только опубликованные (активные) станции; закрытая или непромодерированная — 404.

Параметры запроса

ПараметрТипОписание
id* string UUID станции path

Ответ

200 · application/json
ПолеТипОписание
id string
name string
brand string
address string
city string
location Location
status string
statusUpdatedAt string
openingHours string
fuelTypes string[]
distanceMeters number (double)
prices PriceResponse[]
GET /v1/stations/{id}/price-history требует ключ

История цены на АЗС — Изменения цены одного вида топлива, от старых к новым.

Параметры запроса

ПараметрТипОписание
id* string UUID станции path
fuel* string Код топлива, обязателен query
days integer (int32) Глубина в днях: 1–90, по умолчанию 30 query

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
fuel string
price number
reportedAt string
GET /v1/stations/{id}/prices требует ключ

Текущие цены на АЗС — По одной записи на вид топлива.

Параметры запроса

ПараметрТипОписание
id* string UUID станции path

Ответ

200 · application/json

Массив в data[], постраничный курсор в meta

ПолеТипОписание
fuel string
price number
reportedAt string
Полный список эндпоинтов — в спецификации OpenAPI: https://api.zapravkin24.ru/v1/openapi.json. Она генерируется из работающего кода, поэтому всегда совпадает с реальным API.
Правила игры

Аутентификация, версии и лимиты

Предсказуемо и без сюрпризов. Ключ — в заголовке, версия — в пути, остаток лимита — в заголовках ответа.

Аутентификация
Authorization: Bearer zap_live_… Ключ создаётся в приложении. Все эндпоинты требуют ключ.
Базовый адрес
https://api.zapravkin24.ru/v1 Ломающие изменения выходят как новая версия. v1 остаётся стабильной.
Лимиты
10 000 / сутки · 60 / мин Тариф по умолчанию. Порог можно поднять для отдельного ключа.
Метод
только GET API открывает данные на чтение. Запись идёт через приложение.
Ошибки
application/problem+json Единый формат по RFC 9457 со стабильным полем code.
Указание источника
обязательно Ссылка на Заправкин рядом с данными — см. ниже и п. 5 Условий использования.
Заголовки лимита в каждом ответе
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9964
X-RateLimit-Reset: 1768392000
Retry-After: 37
Пример ошибки 429
{
  "type": "…/errors/rate-limited",
  "title": "Превышен лимит запросов",
  "status": 429,
  "code": "RATE_LIMITED",
  "retryAfterSeconds": 37
}
Условие использования

Укажите источник и поставьте ссылку

Данные собраны водителями — тысячами людей, которые отмечали наличие топлива и цены на заправках. Единственное, что мы просим взамен: не выдавайте эти данные за свои.

При любом использовании данных API вы обязаны указать Заправкин как источник и разместить активную ссылку на https://zapravkin24.ru.

Ссылка должна быть видна конечному пользователю и находиться рядом с самими данными — на той же странице или экране. Для ботов и интерфейсов без визуального представления достаточно указания в документации или в ответе. Полностью — в п. 5 Условий использования.

Скопируйте и вставьте
<a href="https://zapravkin24.ru">Данные об АЗС: Заправкин</a>

Выглядит так: Данные об АЗС: Заправкин

Постройте что-то на данных Заправкина

Боты, дашборды, исследования цен на топливо. Начните с бесплатного ключа за пару минут.

Получить API-ключ