OpenVan.camp Public API
Бесплатный API без авторизации для получения данных о путешествиях на автодоме: ценах на топливо, стоимости топлива для маршрута, платных дорогах, праздниках и днях пиковой загруженности дорог, дорожных опасностях, типах электрических розеток, таможенных правилах, курсах валют, стоимости продуктов, погодных условиях для путешествий, визовых правилах и правилах ввоза транспортных средств, событиях для любителей путешествий на автодоме, новостях и автомобильных номерах разных стран. Всё в одном месте, регистрация не требуется.
Базовый URL: https://openvan.camp
Авторизация: не требуется
CORS: включён
Лицензия: данные распространяются по лицензии CC BY 4.0; код этого репозитория (SDK, MCP-сервер и примеры) — по лицензии MIT
Обязательное указание источника: указывайте Data: OpenVan.camp везде, где отображаете данные. Подробнее — в разделе Attribution.
SDK для JavaScript/TypeScript: @openvancamp/sdk — npm install @openvancamp/sdk. Не требует настройки, поддерживает типизацию и работает в Node.js, браузере и edge-среде. Документация SDK →
SDK для Python: openvan — pip install openvan. Не имеет зависимостей, совместим с Python 3.9+ и работает с pandas. Документация Python →
Ежедневные CSV-снимки: openvancamp/openvan-travel-data — цены на топливо, курсы валют, индекс стоимости продуктов и погодные оценки в формате CSV/JSON. Один коммит в день с сохранением истории.
MCP-сервер для AI-агентов: mcp-server/ — 29 инструментов только для чтения с интерактивными карточками в Claude и ChatGPT (включая plan_road_trip — маршрутный план всей поездки). Сервер доступен по адресу https://mcp.openvan.camp/mcp. Для локального запуска в Claude Desktop / Cursor / Windsurf используйте npx -y @openvancamp/mcp-server. Инструкция по установке → · Руководство для AI-агентов →
Расширение для Gemini CLI: установите этот репозиторий командой gemini extensions install https://github.com/openvancamp/openvan-camp-public-api. Файл gemini-extension.json в корне репозитория подключает Gemini CLI напрямую к размещённому MCP-серверу OpenVan.camp. API key не требуется.
В AI-ассистенте, без кода: коннектор Claude · приложение ChatGPT · Telegram-бот @OpenVanCampBot — те же данные в виде интерактивных карточек в чате. Как подключиться →
Какие источники считать авторитетными
| Ресурс | Назначение |
|---|---|
| Этот README | Краткий обзор и примеры кода |
/docs | Интерактивная документация с возможностью протестировать запросы |
/docs.openapi | Полная спецификация OpenAPI 3.0, всегда актуальная |
/docs.postman | Коллекция Postman |
Спецификация OpenAPI по адресу /docs.openapi формируется на основе актуальной кодовой базы и является авторитетным описанием API. Числа в этом README (количество стран, событий и новостей) приблизительные и периодически обновляются. Актуальные значения можно проверить в метаданных /api/fuel/prices или в пагинации /api/stories.
Эндпоинты
| Эндпоинт | Описание | Охват |
|---|---|---|
GET /api/fuel/prices | Розничные цены на топливо (бензин, дизельное топливо, LPG, E85) | Более 160 стран |
POST /api/route-cost | Стоимость топлива для маршрута с 2–10 точками, с учётом цен в каждой стране | — |
POST /api/roadbook/from-places | Маршрутный план всей поездки по 2–10 названиям мест: план по дням, бюджет, правила въезда и использования транспортного средства для каждой страны; возвращает страницу, которой можно поделиться | — |
GET /api/roadbook/{code}/status | Статус формирования маршрутного плана (проверяйте, пока значение не станет ready) | — |
GET /api/tolls/countries | Платные дороги по странам: система оплаты, тарифы за километр для разных классов транспортных средств, виньетки | 84 страны |
GET /api/tolls/route | Стоимость проезда по платным дорогам на маршруте из 2–10 названий мест (легковой автомобиль, фургон, тяжёлый транспорт), диапазон в EUR | — |
GET /api/holidays/countries/{code}?from=&to= | Государственные праздники, школьные каникулы (региональные) и дни пиковой загруженности дорог | 212 стран |
GET /api/hazards/countries/{code} | Уровень рекомендаций для путешественников от UK FCDO и текущие природные катастрофы по данным GDACS | — |
GET /api/hazards/fires?bbox= | Активные пожары за последние 48 часов по данным NASA FIRMS в заданной ограничивающей рамке (до 10°×10°) | Весь мир |
GET /api/electricity/countries/{code} | Типы электрических вилок, напряжение и частота электросети, подключение в кемпингах (CEE17) | 229 стран |
GET /api/customs/countries/{code}?from= | Таможенные правила въезда на автомобиле: продукты, наличные, алкоголь, табак, топливо в канистре | — |
GET /api/currency/rates | Курсы валют относительно EUR | Более 150 валют |
GET /api/vanbasket/countries | Индекс стоимости продуктов относительно среднемирового уровня (100 = среднее по миру) | Более 90 стран |
GET /api/vanbasket/compare?from=DE&to=TR | Сравнение стоимости продуктов в двух странах | — |
GET /api/vanbasket/countries/{code} | Данные по одной стране и исторические снимки | — |
GET /api/vansky/weather | Оценки погодных условий для путешествий на автодоме (0–100) с прогнозом на 7 дней | Более 160 стран |
GET /api/vansky/weather/{code} | Данные по одной стране, включая морские и солнечные показатели | — |
GET /api/vansky/weather/{code}/{city} | Данные по одному городу: оценка на сегодня и на следующие 7 дней | — |
GET /api/visa/check?passport=RU&destination=TR | Правила въезда: способ въезда, срок пребывания, порядок подсчёта дней и правила ввоза транспортного средства | 199 направлений |
GET /api/visa/route?t=RU,GE,TR&p=RU | Визовые правила для всего маршрута, до 10 паспортов | — |
GET /api/visa/passport/{code} | Все направления для одного паспорта | — |
GET /api/visa/vehicle/{place} | Правила временного ввоза транспортного средства в страну | — |
GET /api/events | События для любителей путешествий на автодоме: выставки, фестивали, встречи, автопробеги | Более 1 100 событий |
GET /api/event/{slug} | Полная информация о событии с географическими координатами | — |
GET /api/event/{slug}/articles | Статьи из источников, связанные с событием | — |
GET /api/stories | Новости, собранные более чем из 200 источников | Более 31 000 новостей |
GET /api/story/{slug} | Полная информация о новости со всеми исходными статьями и прямыми ссылками | — |
GET /api/news/search?q=... | Семантический поиск по новостям | — |
GET /api/plates | Автомобильные номера разных стран: форматы, региональные коды, примеры | 199 стран |
GET /api/plates/{code}/types | Типы номеров в стране (частные, такси, мотоциклетные, дипломатические и другие); если детализации нет, список пуст | — |
GET /api/plates/{code}/plate.svg | Готовое изображение номера (также доступно в формате .png) — вставьте в `` | — |
Быстрый старт
# Fuel prices
curl https://openvan.camp/api/fuel/prices
# Currency rates (EUR-based)
curl https://openvan.camp/api/currency/rates
# Food price index
curl https://openvan.camp/api/vanbasket/countries
# Upcoming vanlife events in Germany
curl "https://openvan.camp/api/events?country=DE&status=upcoming&locale=en"
# Latest vanlife news stories in English
curl "https://openvan.camp/api/stories?locale=en"
Цены на топливо — /api/fuel/prices
Еженедельные розничные цены из более чем 45 официальных государственных источников.
Время жизни кеша: 6 часов. Не отправляйте запросы чаще одного раза в 10 минут.
curl https://openvan.camp/api/fuel/prices
{
"success": true,
"data": {
"DE": {
"country_code": "DE",
"country_name": "Germany",
"region": "europe",
"currency": "EUR",
"local_currency": "EUR",
"unit": "liter",
"prices": {
"gasoline": 1.79,
"diesel": 1.69,
"lpg": 0.89,
"e85": null,
"premium": null
},
"price_changes": { "gasoline": -0.02, "diesel": 0.01, "lpg": 0.0 },
"fetched_at": "2026-04-05T10:00:00+00:00",
"sources": ["EU Weekly Oil Bulletin", "Fuelo.net"],
"sources_count": 2,
"is_excluded": false
}
},
"meta": {
"total_countries": 121,
"updated_at": "2026-04-05 10:00:00",
"cache_ttl_hours": 6
}
}
Примечания:
-
Для большинства стран значение
unit—"liter", для США и Эквадора —"gallon" -
is_excluded: trueозначает, что в стране действуют значительные субсидии на топливо (указанные цены не отражают рыночный уровень) -
price_changes— изменение цены по сравнению с прошлой неделей
Курсы валют — /api/currency/rates
Курсы валют относительно EUR из нескольких поставщиков данных с открытым исходным кодом и автоматическим переключением на резервный источник.
Срок кэширования (TTL): 25 часов. Обновление ежедневно в 07:00 UTC.
curl https://openvan.camp/api/currency/rates
{
"success": true,
"rates": {
"EUR": 1,
"USD": 1.08,
"GBP": 0.85,
"TRY": 38.5,
"GEL": 2.95,
"KZT": 510,
"RUB": 98.5
},
"cached": true,
"updated_at": "2026-04-08T07:00:00+00:00"
}
Пересчёт в любую валюту:
const priceInUSD = (priceEUR / rates.EUR) * rates.USD;
const priceInTRY = (priceEUR / rates.EUR) * rates.TRY;
Индекс цен на продукты VanBasket — /api/vanbasket/*
Относительная стоимость продуктовой корзины по сравнению со среднемировым уровнем (мир = 100).
Расчёт основан на данных World Bank ICP за 2021 год с поправкой на CPI от IMF.
Источник данных: CC BY 4.0
# All countries
curl https://openvan.camp/api/vanbasket/countries
# Compare two countries
curl "https://openvan.camp/api/vanbasket/compare?from=DE&to=TR"
# Single country with historical snapshots
curl https://openvan.camp/api/vanbasket/countries/DE
{
"success": true,
"data": {
"CH": { "country_code": "CH", "country_name": "Switzerland", "vanbasket_index": 162.3, "pct_vs_world": 62.3 },
"DE": { "country_code": "DE", "country_name": "Germany", "vanbasket_index": 118.7, "pct_vs_world": 18.7 },
"TR": { "country_code": "TR", "country_name": "Turkey", "vanbasket_index": 82.4, "pct_vs_world": -17.6 },
"GE": { "country_code": "GE", "country_name": "Georgia", "vanbasket_index": 64.1, "pct_vs_world": -35.9 }
},
"meta": {
"total_countries": 92,
"world_avg": 100,
"base_year": 2021,
"source": "World Bank ICP 2021",
"license": "CC BY 4.0"
}
}
Ответ для сравнения:
{
"success": true,
"data": {
"from": { "country_code": "DE", "country_name": "Germany", "vanbasket_index": 118.7 },
"to": { "country_code": "TR", "country_name": "Turkey", "vanbasket_index": 82.4 },
"diff_percent": -30.6,
"budget_100": 69,
"cheaper": true
}
}
budget_100: если в стране from вы потратите €100 на продукты, то в стране to на ту же корзину уйдёт €69.
События — /api/events
События для любителей жизни в фургонах: выставки, фестивали, встречи и автопутешествия. Данные обновляются в реальном времени.
Параметры запроса:
| Параметр | Значения | По умолчанию |
|---|---|---|
locale | en ru de fr es pt tr | en |
status | upcoming ongoing past all | upcoming |
type | expo festival forum meetup roadtrip | — |
country | ISO 3166-1 alpha-2 | — |
search | текст | — |
page | целое число | 1 |
limit | целое число (максимум 100) | 30 |
# Upcoming events in Germany
curl "https://openvan.camp/api/events?country=DE&status=upcoming&locale=en"
# Event details
curl "https://openvan.camp/api/event/fit-camper-2026?locale=en"
# Source articles linked to an event
curl "https://openvan.camp/api/event/fit-camper-2026/articles?locale=en"
{
"events": [
{
"id": 493,
"slug": "fit-camper-2026",
"event_name": "Fit Your Camper",
"event_type": "expo",
"event_type_label": "Exhibition",
"start_date": "2026-04-09",
"end_date": "2026-04-12",
"city": "Bologna",
"country_code": "IT",
"country": { "code": "it", "name": "Italy", "flag_emoji": "🇮🇹" },
"venue_name": "BolognaFiere",
"status": "upcoming",
"articles_count": 7,
"url": "https://openvan.camp/en/event/fit-camper-2026"
}
],
"pagination": { "total": 48, "page": 1, "limit": 30, "pages": 2 }
}
Примечания:
-
Если
localeне указан или его значение не поддерживается, по умолчанию используетсяen -
/api/event/{slug}/articlesвозвращает исходные статьи с учётом фильтраlocale. Если подходящих статей нет, возвращаются все статьи — возможно, на языке оригинала издателя
Истории и новости — /api/stories
Новости о жизни в фургонах собираются из более чем 200 источников и переводятся на 7 языков. Каждая история объединяет несколько исходных статей на одну тему.
Параметры запроса:
| Параметр | Значения | По умолчанию |
|---|---|---|
locale | en ru de fr es pt tr | en |
category | идентификатор категории (например, camping, travel, gear, incident) | — |
country | ISO 3166-1 alpha-2 | — |
search | текст | — |
page | целое число | 1 |
limit | целое число (максимум 50) | 20 |
# Latest stories in English
curl "https://openvan.camp/api/stories?locale=en"
# German vanlife news in Germany
curl "https://openvan.camp/api/stories?locale=de&country=DE"
# Full story with all source links
curl "https://openvan.camp/api/story/free-overnight-parking-netherlands?locale=en"
{
"slug": "free-overnight-parking-netherlands",
"title": "Free Overnight Parking for Motorhomes in the Netherlands",
"summary": "The Dutch motorhome community is pushing for more designated free overnight spots...",
"image_url": "https://...",
"category": { "slug": "travel", "name": "Travel" },
"countries": [{ "code": "nl", "name": "Netherlands", "flag_emoji": "🇳🇱" }],
"first_published_at": "2026-04-01T10:00:00+00:00",
"last_updated_at": "2026-04-03T08:00:00+00:00",
"articles_count": 5,
"url": "https://openvan.camp/en/news/travel/free-overnight-parking-netherlands",
"sources": [
{
"title": "Gratis overnachten in je camper: de beste plekken",
"original_url": "https://www.campermagazine.nl/overnachten/gratis-plaatsen",
"source_name": "CamperMagazine.nl",
"published_at": "2026-04-01T10:00:00+00:00",
"language": "nl",
"image_url": "https://..."
}
]
}
Примечания:
-
titleиsummaryпереводятся на язык, указанный вlocale -
sources[].languageвсегда указывает язык оригинала издателя, независимо от значенияlocale -
sources[].original_urlсодержит прямую ссылку на статью издателя
Номерные знаки — /api/plates/*
Номерные знаки со всего мира: форматы, коды регионов с группировкой по регионам (включая подразделения ISO 3166-2),
проверка номера и изображение самого знака. Изображения создаются тем же движком, что и на странице
openvan.camp/en/license-plates. Шрифт номерного знака встроен
в виде векторных контуров, поэтому устанавливать шрифты не нужно.
Самый простой способ интеграции — обычное изображение:
-
plate.png?width=800— изображение PNG шириной от 200 до 2000 px с прозрачным фоном -
Похожие по начертанию латинские буквы автоматически заменяются кириллическими (
A123BC→А123ВСна российских номерах) -
Если номер не соответствует формату страны, API возвращает
422. Добавьтеcustom=1, чтобы вывести произвольный текст, например имя -
Для изображений действует заголовок
Cache-Control: public, max-age=31536000, immutable. В URL изображений, возвращаемых API,
указывается параметр v=, поэтому после обновления движка изображения будут доступны по новым URL
curl https://openvan.camp/api/plates # countries
curl "https://openvan.camp/api/plates/ru?locale=en" # format, regions, codes, engine
curl "https://openvan.camp/api/plates/ru/validate?number=A123BC®ion=799" # valid? which region?
curl https://openvan.camp/api/plates/ru/random # random plate + image URLs
Типы номеров — специальные номера имеют собственный цвет и формат. Список доступен по адресу GET /api/plates/{code}/types
(для российских номеров это private, diplomatic — красные, police — синие, military — чёрные, taxi_bus — жёлтые,
motorcycle, trailer, tractor, export_transit). Для каждого типа указан пример номера. Передавайте type при запросе изображения,
/random и /validate; ответ указывает использованный type:
curl "https://openvan.camp/api/plates/ru/random?type=police" # a valid blue police plate + image URLs
curl "https://openvan.camp/api/plates/ru/validate?number=У7962®ion=790&type=police"
Чтобы самостоятельно создавать изображения номеров в браузере, например для интерактивного генератора, загрузите скрипты в порядке,
указанном в data.engine.scripts ответа /api/plates/{code}, и вызовите
Plates.render(code, number, region) → {svg} (элемент SVG) или {error}.
Изображения и движок доступны для стран, номерные шрифты которых разрешено распространять
(glyphs_license: free или sharealike). Для остальных стран по-прежнему доступны конечные точки с данными.
Ограничение частоты запросов: 60 запросов в минуту для изображений и /random, 120 — для остальных конечных точек.
Roadbook — /api/roadbook/from-places
Полный план поездки — такой же roadbook, который можно составить в мастере: маршрут, дни в пути и места ночёвок, бюджет (топливо, платные дороги, виньетки, паромы), а также правила въезда и требования к автомобилю для каждой страны по маршруту с учётом паспортов и номеров, праздники, безопасность и электроснабжение. При одинаковых запросах возвращается один и тот же roadbook.
# 1. Create (all inputs are optional)
curl -X POST "https://openvan.camp/api/roadbook/from-places?source=your-app" \
-H "Content-Type: application/json" \
-d '{"places":["Munich","Venice"],"locale":"en","inputs":{"travelers":["DE"],"cons":10,"fuel":"diesel"}}'
# → {"code":"wqhk8","url":"/en/roadbook/wqhk8-munich-venice","status":"pending","points":[...]}
# 2. Poll until "ready" (long routes take up to a minute), then open https://openvan.camp + url
curl https://openvan.camp/api/roadbook/wqhk8/status
Не более 10 roadbook в минуту с одного IP-адреса. Инструмент MCP plan_road_trip выполняет все эти действия и возвращает сам план.
Праздники, опасности, электровилки и таможня
Данные для планирования поездки по стране, в которую вы собираетесь въехать на автомобиле. Список доступных стран можно получить через эндпоинт
/countries; передайте параметр locale, чтобы получить переведённые названия.
# Public, school (with ISO 3166-2 regions) and peak traffic days; kind=public|school|traffic
curl "https://openvan.camp/api/holidays/countries/FR?from=2026-10-01&to=2026-11-15"
# FCDO travel advice level + current GDACS disasters (flood, earthquake, cyclone, wildfire…)
curl https://openvan.camp/api/hazards/countries/TR
# NASA FIRMS fire detections of the last 48 h; bbox = minLon,minLat,maxLon,maxLat, up to 10°×10°
curl "https://openvan.camp/api/hazards/fires?bbox=-1,38,1,40"
# Plug types, voltage, frequency, campsite hook-up connector
curl https://openvan.camp/api/electricity/countries/GB
# Customs rules on entry by car, optionally from a given country; each rule quotes the official source
curl "https://openvan.camp/api/customs/countries/NO?from=DE"
-
Если данные о праздниках или таможенных правилах для страны отсутствуют, API вернёт соответствующую ошибку. Это не означает, что в стране «нет праздников» или «нет ограничений».
-
Данные об опасностях отражают текущую ситуацию, а не прогноз. При первом запросе данные о пожарах в новом регионе могут ещё загружаться; в этом случае повторите запрос через минуту.
Формат ответа
Все JSON-эндпоинты используют единый формат:
{ "success": true, "data": { ... }, "meta": { ... }, "_attribution": { ... } }
Каждый ответ содержит объект _attribution:
"_attribution": {
"data_source": "openvan.camp",
"license": "CC BY 4.0",
"required": true,
"attribution_url": "https://openvan.camp/",
"attribution_html": "Data: <a href=\"https://openvan.camp/\">OpenVan.camp</a> (CC BY 4.0)",
"instructions": "Attribution is required by the CC BY 4.0 license. ..."
}
Ошибки:
{ "success": false, "error": "Description of the error." }
Если не передать заголовок Accept: application/json, некоторые ответы с ошибками могут быть возвращены в формате HTML. Всегда указывайте заголовок:
Accept: application/json
Ограничение частоты запросов
120 запросов в минуту с одного IP-адреса. Используйте API ответственно:
-
Кэшируйте цены на топливо не менее 6 часов.
-
Кэшируйте курсы валют не менее 1 часа.
-
Кэшируйте истории и события не менее 15 минут.
Атрибуция
Лицензия CC BY 4.0 требует указания источника. Везде, где вы показываете данные — на сайте, в приложении, боте, панели мониторинга или статье — размещайте рядом заметную ссылку:
Data: <a href="https://openvan.camp/">OpenVan.camp</a> (CC BY 4.0)
Эта же строка содержится в каждом ответе в поле _attribution.attribution_html, а также в заголовке ответа X-Attribution-Required.
Разрабатываете с помощью AI coding agent? Попросите его сохранить эту ссылку в созданном интерфейсе или используйте значение _attribution.instructions из любого ответа.
Идентификация интеграции
Добавьте ?source=yoursite.com к любому запросу — регистрация не требуется. Переданное значение возвращается в _attribution.your_source, чтобы вы могли проверить, что всё настроено правильно:
curl "https://openvan.camp/api/fuel/prices?source=myapp.com"
{
"success": true,
"data": { "..." },
"meta": { "..." },
"_attribution": {
"data_source": "openvan.camp",
"license": "CC BY 4.0",
"required": true,
"attribution_url": "https://openvan.camp/",
"attribution_html": "Data: <a href=\"https://openvan.camp/\">OpenVan.camp</a> (CC BY 4.0)",
"instructions": "Attribution is required by the CC BY 4.0 license. ...",
"your_source": "myapp.com"
}
}
Эти сведения помогают нам понять, как используются данные, и отметить активные проекты.
Проекты на базе OpenVan
Публичные проекты, использующие API:
| Проект | Описание | Используемые данные |
|---|---|---|
| cyfuel | Карта цен на топливо, которая находит «выгодную заправку» с учётом стоимости топлива в баке и топлива, потраченного на дорогу до АЗС (cyfuel.cybush.uk) | цены на топливо |
| DriveLog | Веб-приложение для учёта поездок и топлива | цены на топливо |
| E-Logistic | Логистическая платформа с ценами на дизельное топливо в странах ЕС | цены на топливо |
Создали проект с использованием этих данных? Добавьте его в таблицу через pull request или расскажите о нём в разделе Обсуждения.
SDK для JavaScript / TypeScript
npm install @openvancamp/sdk
# or: pnpm add @openvancamp/sdk
import { OpenVan } from "@openvancamp/sdk";
const ov = new OpenVan();
// Cheapest diesel in Europe (top 5, EUR-normalized)
const top5 = await ov.fuel.cheapest("diesel", 5);
top5.forEach(c => console.log(c.country_name, c.prices.diesel, c.currency));
// Is Portugal cheaper than Germany for van living?
const comp = await ov.basket.compare("DE", "PT");
console.log(`Portugal is ${Math.abs(comp.diff_percent)}% cheaper`);
// Vanlife weather suitability — top 10 countries right now
const weather = await ov.weather.top({ limit: 10 });
Нативная поддержка ESM, полная типизация (включая TypeScript), совместимость с Node.js ≥ 18, браузерами, Cloudflare Workers, Deno и Bun. API key не требуется.
npm: @openvancamp/sdk · Полная документация SDK →
Ресурсы
-
Интерактивная документация: openvan.camp/docs
-
Спецификация OpenAPI 3.0: https://openvan.camp/docs.openapi
-
Коллекция Postman: https://openvan.camp/docs.postman
-
SDK для JavaScript: https://www.npmjs.com/package/@openvancamp/sdk
-
SDK для Python: python-sdk/ —
pip install openvan -
Ежедневные CSV-снимки с историческими данными: openvancamp/openvan-travel-data
-
Claude, ChatGPT и Telegram: openvan.camp/en/assistant
-
Страница для разработчиков: openvan.camp/en/developers
-
Для AI-агентов (MCP, llms.txt): openvan.camp/ai
Те же данные на сайте
Проверка паспортных и визовых требований ·