Начало работы

Пагинация

Три вида списков используют три стиля пагинации. Выбирайте эндпоинт по задаче, а не только по набору фильтров.

Номера страницScroll-курсорКурсор по ID
Эндпоинты/search, /car-options/cars/countries, /locations
Запросpage, perPageПереход по next_urlafter_id, per_page
Размер страницы2–50, по умолчанию 501–500, по умолчанию 5001–1,000, по умолчанию 100
Лимит глубиныpage × perPage ≤ 10,000Нет, курсор живёт 1–15 минНет
Когда остановитьсяlinks.next равен nullscroll_id равен nullmeta.has_more равен false
Для чегоПользовательский поискСинхронизация всего каталогаСинхронизация справочников

Две особенности /search, которые нужно учесть в коде. data может содержать на один автомобиль больше, чем perPage (мы видели 3 автомобиля при perPage=2), поэтому обрезайте список на клиенте, если нужен точный размер. А meta.total ограничен 10,000: считайте это значение как «10,000 или больше» и вызывайте /search/count с теми же фильтрами, чтобы получить точное число.

Справочники автомобилей и мотоциклов

Без vehicle_type возвращаются автомобили; motorcycle / 2 выбирает мотоциклы. Сохраняйте тип на каждом шаге.

per_page — 1–100, по умолчанию 100. Используйте page или after_id, но не оба. Для страниц: page × per_page ≤ 10000. Для полной выгрузки передавайте next_after_id как after_id без page до has_more=false. Тогда total считает оставшиеся совпадения.

Без пагинации /brands и /models сохраняют прежние массивы и лимиты. Передайте per_page=100 для {data,meta}. Вложенные generations сохраняют {name,from,to}; ID поколений берите из /generations/{model_id}.

/search · links и metaLive
{
  "links": {
    "first": "https://api.carstat.dev/search?perPage=2&page=1",
    "last": "https://api.carstat.dev/search?perPage=2&page=5000",
    "prev": null,
    "next": "https://api.carstat.dev/search?perPage=2&page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 5000,
    "path": "https://api.carstat.dev/search",
    "per_page": 2,
    "to": 3,
    "total": 10000
  }
}
/countries · metaLive
{
  "data": [
    "…3 countries…"
  ],
  "meta": {
    "per_page": 3,
    "has_more": true,
    "next_after_id": 3
  }
}

Получите доступ к API

Подключите ключ, чтобы выполнять любой запрос с этих страниц на своих данных. Ключа ещё нет? Попросите у нас демо-ключ: тот же JSON, что и в платных тарифах.

У меня есть ключ