OpenVan.camp Public API

Открытые данные для путешествий на машине: цены на топливо, платные дороги, визы, автомобильные номера, праздники, опасности, розетки, таможня, курсы валют, события и новости. Без API-ключа и регистрации — в приложениях, ботах и статьях по лицензии CC BY 4.0.

Без API-ключа

Вызывайте любой эндпоинт напрямую — без регистрации и заголовков авторизации

100% бесплатно

Цены на топливо, стран: 175 · лицензия CC BY 4.0

CORS включён

Работает прямо из браузера, серверный прокси не нужен

Уже строят на OpenVan.camp API

Топливные приложения, тревел-планировщики, EV-сервисы и флит-дашборды из десятка стран уже работают на наших открытых данных.

279
приложений и сайтов
14 400+
запросов к API / мес
4
ИИ-движка читают данные
6
открытых датасета

Кто уже использует

Выборка реальных интеграций — топливные приложения, тревел-планировщики, EV- и флит-дашборды.

Данные читают ИИ-поисковики
ChatGPT Perplexity Claude Gemini

В логах видим, как ChatGPT, Perplexity, Claude и Gemini запрашивают данные OpenVan.camp — данные вашей интеграции тоже могут попасть в их ответы.

Используете наш API?

Добавьте ?source=ваш-домен к запросам — и попадёте в эту витрину.

Лицензия CC BY 4.0 — вы можете свободно использовать, распространять и адаптировать эти данные в любом формате при условии указания авторства OpenVan.camp. creativecommons.org →
Для AI-агентов и LLM-инструментов
  • Без API-ключа. Вызывайте любой эндпоинт напрямую — без регистрации и заголовков авторизации.
  • CORS включён. Эндпоинты можно вызывать прямо из браузера.
  • Формат ответа: у большинства эндпоинтов { "success": true, "data": {...} }. Исключения: курсы валют — поле rates; погода — data без success; платные дороги по маршруту, роудбук, праздники, таможня и отдельный сюжет отвечают объектом без обёртки. Ошибки и «нет данных» — в разделе «Лимиты, ошибки и версии».
  • Кеширование: цены на топливо кешируются на 6 ч · курсы валют обновляются раз в 6 ч · HTTP-кеш ответа — 2 минуты (Cache-Control) · опрашивайте не чаще раза в 10 минут
  • Полная спецификация OpenAPI 3.0: /docs.openapi (YAML) · /.well-known/openapi.json (JSON) · примеры на GitHub
  • Файлы для автоматического обнаружения: /llms.txt · /.well-known/openapi.json · /.well-known/api-catalog · /.well-known/agent-card.json · /.well-known/mcp/server-card.json · /.well-known/ai-plugin.json
  • Атрибуция: добавьте ?source=your-app.com чтобы обозначить вашу интеграцию — авторизация не требуется, просто хороший тон.

Рекомендуемый шаблон запроса: "Получи текущие цены на топливо для [страна] в [валюта], используя API OpenVan.camp по адресу https://openvan.camp/api/fuel/prices"

ИИ-ассистенты и MCP-сервер

Те же данные доступны как 32 публичных инструментов MCP (сервер версии 0.12.0; плюс служебный get_roadbook_build_status для карточки поездки) с интерактивными карточками. Подключите их к любому ассистенту с поддержкой MCP или откройте готовое приложение.

Удалённый сервер — Streamable HTTP, ключ не нужен:

https://mcp.openvan.camp/mcp

Локально через npx — для Claude Desktop, Cursor, Windsurf и других клиентов MCP:

{
  "mcpServers": {
    "openvan": {
      "command": "npx",
      "args": ["-y", "@openvancamp/mcp-server"]
    }
  }
}

Плагин для Claude Code и Codex: этот MCP-сервер и два скилла (инструкции для ИИ-агента). Установка:

# Claude Code
/plugin install openvan-camp --marketplace openvancamp/openvan-camp-public-api

# Codex
codex plugin marketplace add openvancamp/openvan-camp-public-api

# Skills only (any agent)
npx skills add openvancamp/openvan-camp-public-api

Скилл openvan-travel подсказывает агенту, какой инструмент сервера выбрать для вопроса о поездке: визы, топливо, маршрут. Скилл openvan-api нужен, когда агент пишет приложение на данных нашего API. С ним агент ставит рядом с данными ссылку на OpenVan.camp (этого требует лицензия), добавляет к запросам параметр source и берёт единицу и валюту цены отдельно для каждого вида топлива. skills/

Готовые приложения

Инструменты MCP (32)
  • plan_road_trip — Plan a road trip by campervan or car between 2-10 places with the OpenVan.camp roadbook: distance, driving time and a day-by-day plan with overnights, budget (fuel, tolls, vignettes, ferries), and for every country on the way the entry rule for the given passports, residence permit and plates, how long you and the vehicle may stay (Schengen 90/180), road rules and city access (low-emission zones and stickers such as Umweltplakette and Crit'Air, Italian ZTL), holidays on the trip dates, safety and power plugs, plus the main warning and a checklist. Returns a link to the full roadbook the user can open, edit and share. Use this first when the user describes a trip from A to B.
  • get_country_travel_brief — Everything to know before driving into one country by campervan or car, in one call: entry rule and how long the person and the vehicle may stay (with passport), travel weather now and this week, fuel prices, tolls and vignettes, public holidays in the next 30 days, safety advice, power plugs, customs limits and food prices. Use it when someone asks what to know about a country, the nuances or a guide for travelling there, or is preparing a trip to it; use the single-topic tools for one narrow question.
  • get_fuel_prices — Current retail fuel prices for all API-supported countries. Covers gasoline, diesel, LPG, CNG, E85, kerosene and grade variants. Pass country_code to get one country in detail; omit it for a summary list. Use it for the price of petrol, diesel, LPG/autogas/propane or CNG in one country; without a country it gives an overview.
  • compare_fuel_prices — Compare current prices for one fuel type across 2-10 countries. Returns sorted table cheapest-first. Use it when someone asks which of two or more named countries has cheaper or more expensive fuel.
  • find_cheapest_fuel — Rank countries by the price of a fuel type in a region (or worldwide): the cheapest first, or with order=most_expensive the most expensive first. Useful for route planning. Use it for «where is fuel cheapest» and, with order=most_expensive, «where is fuel the most expensive», in a region or worldwide.
  • get_country_travel_weather — How suitable the weather in a whole country is for travelling and sleeping in a campervan, as a 0-100 score: overall travel score, sleep score, solar panel yield, driving conditions, awning safety, condensation risk, a 7-day forecast, and the 3 best and 3 toughest cities for the coming week. Country-level: for a named city use get_city_travel_weather. Use it when someone asks what the weather is like in a country, where in a country it is warmer, colder or sunnier, which of its cities are best or worst this week, or whether it is too cold or rainy to sleep in a van there now.
  • get_city_travel_weather — How suitable the weather in one city or town is for travelling and sleeping in a campervan, as a 0-100 score for today and for the coming 7 days, with the city's place among the cities of its country this week, comfortable days, the best stretch and the worst day, a 7-day forecast with day and night temperature and rain, today's score breakdown (thermal, sunshine, precipitation, wind), sleep, driving and solar scores and ready-made advice. Use this, not get_country_travel_weather, when the user names a place (Barcelona, Málaga, Alicante). Use it for the weather in one named city, town or place today, tomorrow or this week.
  • get_city_climate — What the weather is usually like in a city or at any point on a given day of the year, from the ERA5 climate archive 2021–2025 (median of 35 archive days: the date ±3 days over five years): day and night temperature, on how many of the 35 days there was precipitation, the usual sky, sea or large-lake water temperature, solar radiation for panels and the VanSky climate index; plus all 12 months and the best month to travel. Climate, not a forecast. Use it for dates beyond the coming week ("weather in Batumi in mid-September", "is the sea warm in Antalya in May") and for "when is the best time to go"; for today and this week use get_city_travel_weather. Omit date to get the month overview.
  • list_best_weather_countries — List the N countries where the weather is best for travelling by campervan, highest 0-100 travel score first: today's score by default, or with period=week the score of the coming 7 days (the ranking used on OpenVan.camp). Use it when no country is named and someone asks where to go for warm or good weather right now — worldwide or in a region (region=europe…); with sort=warmest only when they literally ask where it is warmest or hottest (it ranks by temperature alone, so deserts come first; «warm and pleasant», «warm and dry» → the default score). These are today's conditions and the coming days, not a forecast for a later month: for «in November» say so.
  • list_events — List vanlife events: expos (Caravan Salon), festivals, meetups, forums, road trips. Filter by status, type, country, or free-text search.
  • get_event — Get full details for a single vanlife event by its slug.
  • search_stories — Search recent news about campervans, motorhomes and road travel collected by OpenVan.camp from public news sources. Returns for each story only a headline, a short summary of up to 300 characters, date, category, countries and a link to the story page on openvan.camp, which credits the original publishers. Never returns full article text. Filter by words in the headline, category, country and language.
  • compare_food_prices — Compare food price index between two countries (world average = 100). Higher number = more expensive food. Use it when someone asks where food is cheaper between two countries.
  • get_country_food_prices — Food price index for one country (world average = 100): how expensive groceries are there, with its yearly history. Use it when someone asks how expensive food, groceries or living is in a country.
  • rank_food_prices — Rank countries by food price index (world average = 100) in a region or worldwide: the cheapest first, or with order=most_expensive the most expensive first. Use it when someone asks where food or groceries are cheapest or most expensive.
  • get_currency_rate — Convert an amount between two currencies using live rates (150+ currencies, daily updates). Use it for exchange rates and converting an amount between currencies.
  • check_visa_rules — Entry rules for one passport and destination: entry mode, allowed length of stay, how the days are counted (per entry or in a rolling window), whether a visa run resets the counter, and temporary vehicle import. Answers carry a confidence level and source — pass those on instead of stating a rule as certain.
  • get_route_visa_rules — Visa rules for every country of a route in one call, for up to 10 passports at once, plus the tightest leg of the route.
  • get_vehicle_import_rules — Temporary admission rules for a foreign-plated vehicle in one country: allowed days, per entry or per window, carnet requirement, green card. A country without a rule we can stand behind returns nothing rather than a guess.
  • get_toll_rates — Toll reference for one country: payment system, per-km rates by vehicle class (car, campervan up to 3.5 t, over 3.5 t), vignette prices for every duration, concession sections and toll bridges/tunnels, each with verification date and source. Use it for toll roads, motorway fees, whether a vignette is needed and what it costs in one country.
  • estimate_route_tolls — Estimate toll cost for a road trip from 2-10 place names: per-km tolls, vignettes, bridges and tunnels, as a EUR range with a per-country breakdown. Flags partial results when a country on the route has no data. Use it only for the toll cost between named places when no other trip details are asked; for a whole trip use plan_road_trip.
  • get_holidays — Public holidays, school holidays (often regional, with ISO 3166-2 region codes) and official peak traffic days (France, Bison Futé) in one country for a period of up to 400 days. A country without data returns an error saying so — never present that as "no holidays". Use it for public holidays, days off, school holidays and peak traffic days.
  • get_travel_hazards — Situation now in one country: UK FCDO travel advice level and current GDACS natural disasters (flood, earthquake, tropical cyclone, wildfire, drought, volcano) with alert level green/orange/red. Not a forecast. Use it when someone asks whether it is safe to go to a country now, about travel warnings or natural disasters.
  • get_active_fires — NASA FIRMS VIIRS satellite fire detections of the last 48 hours in a bounding box up to 10°×10°, strongest first, with fire radiative power in MW. Use it for wildfires right now near a place or in a country: bbox is west,south,east,north in degrees — longitude first (Portugal ≈ -9.6,36.9,-6.1,42.2).
  • get_power_plugs — Plug types (IEC A–N), mains voltage and frequency for one country, with the source of the value, plus the campsite hook-up connector in Europe (CEE17). Use it for socket and plug types, adapters, mains voltage and campsite hook-ups.
  • find_ferries — Ferry and river crossing lines in a bounding box from OpenStreetMap: name, operator, countries, whether cars are carried, crossing time, the operator site checked by hand and a booking link where confirmed, and whether an open timetable exists. bbox is west,south,east,north in degrees — longitude first (Adriatic ≈ 12,39,20,46). Narrow with query (port or operator) or country_code. Use it for which ferries go to an island or across a sea, strait or river, and to get the id for get_ferry_schedule.
  • get_ferry_schedule — One ferry line by id from find_ferries: both ends with country, operator site and booking link, and a timetable digest from open GTFS feeds — next departures today in local time, sailings per day, daytime and night rhythm, weekdays over the next 8 days, crossing time. available: false means no open timetable is matched, not that the ferry does not run. Use it for when the next ferry leaves, how often it runs and how long the crossing takes.
  • get_customs_rules — Customs rules when driving into a country, optionally from a given country: food bans, cash declaration, alcohol and tobacco limits, goods value, fuel in a canister. Each rule carries a verbatim official quote and source link. A country without data returns an error saying so — never present that as "nothing is restricted". Use it for what you may bring in by car: alcohol, tobacco, cash, meat and other food, goods limits.
  • list_license_plate_countries — Countries whose license plates are available: international code, number of regions and an example plate.
  • get_license_plate_country — How a country's license plate looks and reads (standard, size, format), its plate types (standard, diplomatic, police, taxi…) with example numbers, and every region code on its plates, grouped by region — e.g. which region is 77 or 199 on Russian plates. Use it for what a plate region code means (77, 777, AA…) and a country's plate format.
  • check_license_plate — Validate a plate number against the country's format (look-alike letters are normalized) and say which region its code belongs to. Pass type to check against a specific plate type's format. Never identifies the owner or the vehicle's location. Use it to check a specific plate number.
  • get_license_plate_image — Draw an illustrative image of a country's standard civilian license plate (PNG shown inline, plus SVG/PNG links). The number must match the country's standard format. Official, police, military and diplomatic plates are not drawn. Use it to draw or show a picture of a plate.

Карточка сервера: /.well-known/mcp/server-card.json · npm: @openvancamp/mcp-server
Пакет npm может отставать от удалённого сервера на несколько версий; удалённый адрес всегда самый свежий.

Доступные эндпоинты

GET /api/fuel/prices стран: 175

Актуальные цены на топливо для 175 стран. Список ключей цен берётся из текущего API-контракта. Обновляются еженедельно из официальных государственных источников (EU Oil Bulletin, Statistics Norway, EIA, ANP, NRCan и др.). Кеш 6 часов. Данные о топливе обновлены: 31 октября 2026.

Ключи цен: gasoline_regular, gasoline, gasoline_premium, gasoline_super, diesel_regular, diesel, diesel_premium, lpg, cng, e85, kerosene, premium
Единица и валюта цены — по виду топлива: units[вид] и currencies[вид] важнее общих unit и currency. Например, в Колумбии цена за галлон, а бензин в Венесуэле — в боливарах.

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",
            "units": {
                "diesel": "liter",
                "diesel_premium": "liter",
                "gasoline": "liter",
                "gasoline_premium": "liter",
                "lpg": "liter",
                "premium": "liter"
            },
            "currencies": {
                "diesel": "EUR",
                "diesel_premium": "EUR",
                "gasoline": "EUR",
                "gasoline_premium": "EUR",
                "lpg": "EUR",
                "premium": "EUR"
            },
            "prices": {
                "gasoline_regular": null,
                "gasoline": 2.1144,
                "gasoline_premium": 2.21,
                "gasoline_super": null,
                "diesel_regular": null,
                "diesel": 2.2683,
                "diesel_premium": 2.4693,
                "lpg": 1.1586,
                "cng": null,
                "e85": null,
                "kerosene": null,
                "premium": 2.21
            },
            "price_changes": {
                "gasoline_regular": null,
                "gasoline": -0.0281,
                "gasoline_premium": -0.03,
                "gasoline_super": null,
                "diesel_regular": null,
                "diesel": 0.0006,
                "diesel_premium": 0.0003,
                "lpg": 0.0636,
                "cng": null,
                "e85": null,
                "kerosene": null,
                "premium": null
            },
            "fetched_at": "2026-10-31T11:35:40+03:00",
            "sources": [
                "EU Weekly Oil Bulletin",
                "clever-tanken.de (Premium Diesel)",
                "Tankerkoenig (tankerkoenig.de)",
                "Fuelo.net",
                "Cargopedia.net",
                "BenzinpreisAktuell.de"
            ],
            "sources_count": 4,
            "is_excluded": false
        }
    },
    "meta": {
        "total_countries": 175,
        "updated_at": "2026-10-31 11:35:40",
        "cache_ttl_hours": 6
    }
}
GET /api/currency/rates 150+ валют

Курсы 150+ валют относительно EUR (EUR = 1) из нескольких открытых источников с автоматической заменой при сбое. Обновляются каждые 6 часов: время обновления — в meta.updated_at, курс старше 25 часов считается устаревшим.

curl https://openvan.camp/api/currency/rates

Живой ответ API (показаны несколько валют из 152):

{
    "success": true,
    "rates": {
        "EUR": 1,
        "GBP": 0.83564575,
        "GEL": 2.9116,
        "KZT": 506.58565956,
        "RUB": 89.6603,
        "TRY": 55.8153,
        "USD": 1.11855136,
        "…": "…"
    },
    "meta": {
        "count": 152,
        "base": "EUR",
        "updated_at": "2026-10-31T12:05:23+03:00",
        "refreshed_every_hours": 6,
        "max_age_seconds": 90000
    }
}
GET /api/vanbasket/countries 90+ стран

VanBasket Food Price Index — насколько дорогая еда относительно среднемирового уровня (Мир = 100). На основе World Bank ICP 2021 с корректировкой по IMF CPI.

# 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 history
curl https://openvan.camp/api/vanbasket/countries/DE
GET /api/visa/check 39 601 пара

Визовые и пограничные правила: сколько можно находиться для любой пары «паспорт × страна», как считаются дни (на каждый въезд или в скользящем окне), обнуляет ли счётчик визаран — плюс правила временного ввоза автомобиля. У каждого ответа есть уверенность, источник и слой, из которого он взят.

# One pair: stay rule, entry mode, shared-counter zone, vehicle rule
curl "https://openvan.camp/api/visa/check?passport=RU&destination=TR"

# All 199 destinations for one passport
curl "https://openvan.camp/api/visa/passport/DE?mode=visa_free"

# Several countries and passports at once: the tightest leg of a route
curl "https://openvan.camp/api/visa/route?t=GE,AM,TR&p=RU,DE"

# Compact payload for colouring a world map
curl https://openvan.camp/api/visa/map/US

# Temporary vehicle import rules (country slug, e.g. georgia)
curl https://openvan.camp/api/visa/vehicle/georgia

# Passport ranking and the change log
curl "https://openvan.camp/api/visa/rank?limit=10"
curl "https://openvan.camp/api/visa/history?subject_key=RU%3ETR"
confidence: low — число дней верное, а способ подсчёта предположение; уточняйте на границе. Справочные данные, не юридическая консультация.
Параметры: passport destination weight plate mode locale limit Полная документация
GET /api/plates Номера мира

Автомобильные номера мира: формат, коды регионов и готовая картинка номера. SVG/PNG рисует тот же движок, что на сайте, — шрифт номера уже внутри контурами, ничего устанавливать не нужно: вставьте <img src> с номером. Есть проверка номера с нормализацией букв, случайный номер и движок для отрисовки в браузере.

747 YSX 07 — Казахстан
Казахстан
CKY 96 04 — Турция
Турция
AM 9690 MM — Украина
Украина
ZE 12446 — Норвегия
Норвегия
М030СС 797 — Россия
Россия
# Ready plate image — put it into <img src> (PNG: plate.png?width=800)
curl "https://openvan.camp/api/plates/ru/plate.svg?number=A123BC&region=77"

# Countries, then one country: format, regions, codes, browser engine
curl https://openvan.camp/api/plates
curl "https://openvan.camp/api/plates/ru?locale=en"

# Validate a number and resolve its region; random plate
curl "https://openvan.camp/api/plates/ru/validate?number=A123BC&region=799"
curl https://openvan.camp/api/plates/ru/random
GET /api/tolls Стоимость маршрута

Платные дороги по странам — ставка за километр для легковой машины, кемпера до 3,5 т и тяжёлых машин, виньетки, платные мосты и тоннели, у каждой цифры дата проверки и источник, — и стоимость всего маршрута по названиям точек: платные дороги диапазоном в евро и топливо по ценам каждой страны на пути.

# Tolls for a route of 2–10 place names: car | van (up to 3.5 t, default) | heavy
curl "https://openvan.camp/api/tolls/route?waypoints=Munich|Venice&vehicle_class=van"

# Toll reference: all countries, then one country with vignettes, bridges and tunnels
curl https://openvan.camp/api/tolls/countries
curl https://openvan.camp/api/tolls/countries/FR

# Fuel cost for the same kind of route, at the prices of every country on the way
curl -X POST https://openvan.camp/api/route-cost \
  -H "Content-Type: application/json" \
  -d '{"waypoints":["Berlin","Prague"],"cons":10,"fuel":"diesel"}'
partial: true — в сумму вошла не вся плата: у стран из unknown_countries нет данных, и бесплатными они от этого не становятся.
Параметры: waypoints vehicle_class cons tank fuel currency locale Как это выглядит в Роудбуке Полная документация
POST /api/roadbook/from-places Вся поездка

Роудбук OpenVan.camp по 2–10 названиям мест — тот же план, что человек собирает в мастере роудбука: дни за рулём и ночёвки, бюджет на топливо, платные дороги, виньетки и паромы, а по каждой стране на пути — правила въезда для людей и машины по указанным паспортам и номерам, праздники, безопасность и розетки. Ответ — страница роудбука, которой можно поделиться; одинаковый запрос вернёт тот же роудбук.

# Roadbook for 2–10 place names: places and locale are required, everything else goes into "inputs"
curl -X POST https://openvan.camp/api/roadbook/from-places \
  -H "Content-Type: application/json" \
  -d '{"places":["Munich","Venice"],"locale":"en","inputs":{"travelers":["DE"],"plates":"DE","cons":10,"fuel":"diesel"}}'
# → { "code": "wqhk8", "status": "building", "url": "/en/roadbook/wqhk8-munich-venice", ... }

# While status is not "ready", poll it (returns only status and progress)
curl https://openvan.camp/api/roadbook/wqhk8/status
# → { "status": "ready", "error": null, "progress": ... }  then open https://openvan.camp + url
Обязательны places и locale, остальные параметры передаются внутри inputs. Ответ на создание сразу содержит code, status и url (относительный адрес роудбука); пока status не ready, опрашивайте /api/roadbook/{code}/status — он отдаёт только status и progress. Длинный маршрут строится до минуты. Не больше 10 роудбуков в минуту с одного IP.
Параметры: places locale name travelers plates weight fuel cons date currency Как это выглядит в Роудбуке Полная документация
GET /api/holidays/countries/{code} Праздники

Государственные праздники, школьные каникулы (часто по регионам, с кодами ISO 3166-2) и официальные пиковые дни на дорогах за период до 400 дней — чтобы знать, когда забиты трассы, кемпинги и паромы.

# School holidays in Germany in December (kind = public | school | traffic)
curl "https://openvan.camp/api/holidays/countries/DE?from=2026-12-01&to=2026-12-31&kind=school"

# Countries and the kinds of data each has
curl https://openvan.camp/api/holidays/countries
Если данных нет, ответ — 404 с covered: false. Это «мы не знаем», а не «праздников нет» или «ничего не запрещено».
GET /api/hazards/countries/{code} Опасности

Обстановка в стране сейчас: уровень рекомендаций МИД Великобритании (FCDO) и текущие стихийные бедствия GDACS с уровнем тревоги, плюс очаги пожаров со спутников NASA FIRMS за последние 48 часов в заданном прямоугольнике. Не прогноз.

# FCDO advice level + current GDACS disasters
curl https://openvan.camp/api/hazards/countries/TR

# Active fires of the last 48 h, bbox = west,south,east,north (up to 10°×10°)
curl "https://openvan.camp/api/hazards/fires?bbox=29,36,33,38"
GET /api/ferries Паромы

Паромные и речные переправы и их причалы из OpenStreetMap в заданном прямоугольнике карты: сайты перевозчиков, проверенные вручную, ссылки на онлайн-покупку там, где она подтверждена, и сводка расписания из открытых GTFS: ближайшие рейсы, дни, ритм и время в пути. Данные линий и причалов — ODbL 1.0.

# Lines and ports in a box, bbox = west,south,east,north; zoom sets geometry detail
curl "https://openvan.camp/api/ferries?bbox=4.9,58.8,6.2,59.4&zoom=9"

# One crossing with both ends, then its timetable digest (local operator time)
curl https://openvan.camp/api/ferries/r5958961
curl https://openvan.camp/api/ferries/r5958961/schedule
Параметры: bbox zoom Полная документация
GET /api/electricity/countries/{code} Розетки

Типы розеток (IEC A–N), напряжение и частота сети для каждой страны с источником значения, плюс разъём подключения на кемпингах Европы (CEE17).

curl https://openvan.camp/api/electricity/countries/GB
curl https://openvan.camp/api/electricity/countries
GET /api/customs/countries/{code} Таможня

Что можно ввезти на машине: запреты на продукты, декларация наличных, нормы алкоголя и табака, беспошлинная сумма, топливо в канистре. Можно указать страну, откуда едете, — внутри ЕС таможни нет. У каждого правила дословная цитата официального источника и ссылка.

# Entering Norway from Germany: cash, alcohol, tobacco, food
curl "https://openvan.camp/api/customs/countries/NO?from=DE"

# Jurisdictions and blocs (EU, EAEU)
curl https://openvan.camp/api/customs/countries
Если данных нет, ответ — 404 с covered: false. Это «мы не знаем», а не «праздников нет» или «ничего не запрещено».
GET /api/vansky/weather/{code}/{city} 0–100

Индекс VanSky оценивает, насколько погода подходит для поездки на автодоме: от 0 до 100, где 100 означает отлично. Он считается для страны и для города на сегодня и на 7 дней вперёд и совпадает с цифрой «сегодня» на странице openvan.camp. Для города API отдаёт позицию в рейтинге городов страны по индексу недели (среднее за 7 дней, сниженное, если дни неровные), прогноз по дням с составляющими индекса, частные оценки (ночёвка, вождение, солнечные панели, море), качество воздуха и готовые советы фразами. Города страны по этому рейтингу: /api/vansky/weather/{code}/cities. Рейтинг стран: /api/vansky/ranking. Формула и веса индекса: /api/vansky/methodology. В {code} подставьте двухбуквенный код страны ISO 3166-1 alpha-2. Город задаётся латинским идентификатором из конца адреса его страницы: в openvan.camp/ru/vansky/georgia/batumi это batumi. Найти его можно запросом /api/vansky/search?q=Batumi, где в q стоит название города.

# One country: score, forecast, best and worst cities for the week
curl https://openvan.camp/api/vansky/weather/PT

# Find a city slug: the last part of "url" (…/vansky/portugal/lisbon → lisbon)
curl "https://openvan.camp/api/vansky/search?q=Lisbon"

# One city, as on its page: today, week, place in the country, score breakdown per day
curl "https://openvan.camp/api/vansky/weather/PT/lisbon?include=hourly"

# Rankings: cities of a country for the coming week, countries of a region
curl "https://openvan.camp/api/vansky/weather/PT/cities?limit=10"
curl "https://openvan.camp/api/vansky/ranking?region=europe&limit=10"

# How the score is calculated (curves, weights, adjustments) — recompute it yourself
curl https://openvan.camp/api/vansky/methodology
Параметры: code city sort by region include locale Погода на сайте Полная документация
GET /api/vansky/climate 2021–2025

Типичная погода для любых координат или города VanSky в выбранный день года. Это медиана из 35 архивных дней: та же дата ±3 дня за 2021–2025 годы, по архиву ERA5 (пересчитанные наблюдения службы Copernicus). Для даты: максимум днём и минимум ночью, в скольких из 35 дней выпало от 1,5 мм осадков, самое частое небо (ясно, облачно, пасмурно), температура моря или большого озера в пределах ~50 км (вдали от воды её нет), солнечное излучение в кВт·ч/м² для расчёта панелей и индекс VanSky 0–100 (чем выше, тем комфортнее). Для каждого из 12 месяцев: сколько в среднем сухих ясных, облачных и пасмурных дней и дней с осадками, а также лучший месяц по индексу. В запросе: lat и lng (широта и долгота) или ISO-код страны и slug города; date в формате MM-DD можно не передавать, тогда придут все 366 дней.

# Any point: what the weather is usually like on 18 September
curl "https://openvan.camp/api/vansky/climate?lat=41.64&lng=41.63&date=09-18"

# A VanSky city, all 366 days + 12 months + best month
curl https://openvan.camp/api/vansky/climate/GE/batumi
Параметры: lat lng date code city Погода на сайте Полная документация
GET /api/events ванлайф-события

Постраничный список ванлайф-событий — выставки, фестивали, встречи, автопробеги. Фильтрация по статусу, типу, стране. Локализованные названия на 7 языках.

# Upcoming events in Germany
curl "https://openvan.camp/api/events?country=DE&status=upcoming"

# Search by name, Russian locale
curl "https://openvan.camp/api/events?search=Adventure+Northside&locale=ru"

# Event details + linked source articles
curl "https://openvan.camp/api/event/adventure-northside-2026?locale=en"
curl "https://openvan.camp/api/event/adventure-northside-2026/articles?locale=en"
locale — одно из en ru de fr es pt tr. По умолчанию: en. Неизвестная локаль молча заменяется на en. запасной вариант для articles: если статьи на запрошенной локали не найдены, возвращаются все исходные статьи.
Параметры: locale status type country search page limit Полная документация →
GET /api/stories 7 языков

Ванлайф-новости, агрегированные из 200+ изданий и переведённые на 7 языков. Каждый сюжет содержит sources — оригинальные статьи изданий с прямыми ссылками, названиями источников, датами публикации и кодами языка. Смысловой поиск по новостям (q, до 15 результатов) и готовый вечерний дайджест (ru, en).

# Latest stories in English
curl "https://openvan.camp/api/stories?locale=en"

# Filter by category and country
curl "https://openvan.camp/api/stories?locale=de&category=festival&country=DE"

# Full story with all source articles
curl "https://openvan.camp/api/story/adac-camper-des-jahres-der-wettbewerb-fuer?locale=en"

# Semantic search over the news (1–15 results)
curl "https://openvan.camp/api/news/search?q=campervan+rules+Europe&locale=en&limit=5"

# Ready evening digest (ru or en)
curl "https://openvan.camp/api/news/digest?locale=en"

Пример ответа для /api/story/{slug}:

{
  "slug": "adac-camper-des-jahres-der-wettbewerb-fuer",
  "title": "ADAC launches 'Camper of the Year' competition for motorhome drivers",
  "summary": "ADAC is holding the national 'Camper des Jahres 2026' competition for motorhome owners...",
  "image_url": "https://...",
  "category": { "slug": "festival", "name": "Festivals" },
  "countries": [{ "code": "de", "name": "Germany", "flag_emoji": "🇩🇪" }],
  "first_published_at": "2026-01-22T11:00:00+03:00",
  "last_updated_at": "2026-07-04T04:16:47+03:00",
  "articles_count": 5,
  "url": "https://openvan.camp/en/news/festival/adac-camper-des-jahres-der-wettbewerb-fuer",
  "sources": [
    {
      "title": "Nürburgring: Bundesweiter Wettbewerb «Camper des Jahres»",
      "original_url": "https://www.blick-aktuell.de/Berichte/...",
      "source_name": "BLICK aktuell",
      "published_at": "2026-04-30T09:24:20+03:00",
      "language": "de",
      "image_url": "https://..."
    }
  ]
}
locale — одно из en ru de fr es pt tr. По умолчанию: en. Влияет на title, summary, и category.name. sources[].language всегда оригинальный язык издания, независимо от локали.
Параметры: locale category country search page limit q Полная документация →

Быстрый старт

JavaScript — самый дешёвый дизель в Европе

const { data } = await fetch("https://openvan.camp/api/fuel/prices").then(r => r.json());

const cheapest = Object.values(data)
  .filter(c => c.region === "europe" && c.prices.diesel !== null)
  .sort((a, b) => a.prices.diesel - b.prices.diesel)
  .slice(0, 5);

cheapest.forEach(c => console.log(`${c.country_name}: ${c.prices.diesel} ${c.currency}/L`));

JavaScript — конвертация в USD по курсам валют

const [{ data }, { rates }] = await Promise.all([
  fetch("https://openvan.camp/api/fuel/prices").then(r => r.json()),
  fetch("https://openvan.camp/api/currency/rates").then(r => r.json()),
]);

// Convert any price to USD/liter
// unit: "liter" | "gallon" (US, 3.78541 L) | "imperial_gallon" (4.54609 L)
const LITERS_PER_UNIT = { liter: 1, gallon: 3.78541, imperial_gallon: 4.54609 };
// Unit and currency are per grade: units[grade] / currencies[grade] win over unit / currency
function toUSD(country, grade) {
  const currency = country.currencies?.[grade] ?? country.currency;
  const unit = country.units?.[grade] ?? country.unit;
  const usd = (country.prices[grade] / rates[currency]) * rates["USD"];
  return usd / (LITERS_PER_UNIT[unit] || 1);
}

console.log(`Germany diesel: $${toUSD(data["DE"], "diesel").toFixed(3)}/L`);

Python — страны с газом (LPG, СУГ)

import requests

data = requests.get("https://openvan.camp/api/fuel/prices").json()["data"]

lpg = [(v["country_name"], v["prices"]["lpg"], v["currency"])
       for v in data.values() if v["prices"]["lpg"] is not None]

for name, price, currency in sorted(lpg, key=lambda x: x[1])[:10]:
    print(f"{name}: {price} {currency}/L")

Больше примеров (bash, pandas, виджет): GitHub →

SDK для JavaScript / TypeScript

Официальный типизированный SDK — без настройки, работает в Node.js ≥ 18, браузере, Cloudflare Workers, Deno, Bun. API-ключ не нужен.

Установка

npm install @openvancamp/sdk
# or: pnpm add @openvancamp/sdk

Быстрый старт (TypeScript / ESM)

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 });

// Tolls and visa rules for a road trip
const tolls = await ov.tolls.route(["Munich", "Venice"], "van");
const visa = await ov.visa.check("RU", "TR");

// Holidays, hazards, plugs and customs for the next country
const traffic = await ov.holidays.country("FR", { kind: "traffic" });
const hazards = await ov.hazards.country("TR");
const plugs = await ov.electricity.country("GB");
const customs = await ov.customs.country("NO", { from: "DE" });

SDK для Python

Без зависимостей, Python 3.9+, API-ключ не нужен.

pip install openvan

from openvan import OpenVan

ov = OpenVan(source="myapp.com")  # source is optional: it lets us see and credit your project

for c in ov.fuel.cheapest("diesel", 5):
    print(c["country_name"], c["prices"]["diesel"], c["currency"])

print(ov.visa.check("RU", "TR")["data"])
print(ov.tolls.route(["Rome", "Paris"], vehicle_class="van"))

Лимиты, ошибки и версии

Лимиты частоты

Считаются по IP: 120 запросов в минуту на весь API, у тяжёлых запросов лимит ниже — в таблице фактические значения. Остаток — в заголовках X-RateLimit-Limit и X-RateLimit-Remaining. При превышении — HTTP 429 и заголовок Retry-After: подождите столько секунд и повторите.

Запрос В минуту
Весь API 120
POST /api/route-cost 30
GET /api/tolls/route 10
GET /api/hazards/fires 15
GET /api/plates/{code}/plate.svg · plate.png · random 30
POST /api/roadbook/from-places 10
GET /api/roadbook/{code}/status 240

Ошибки

Ошибка — HTTP 4xx/5xx. Тело бывает трёх видов: { "success": false, "error": "…" } или { "error": "…", "message": "…" }; ошибка проверки роудбука — { "error": "validation", "fields": [ … ] }; превышение лимита и неизвестный адрес — { "message": "…" }. Проверяйте HTTP-статус, а не только тело.

# 422 — invalid parameters
{ "success": false, "error": "Parameters \"passport\" and \"destination\" are required." }

# 404 — no data for this object
{ "error": "not_found", "message": "No toll data for this country" }

# 422 — roadbook validation
{ "error": "validation", "fields": ["locale"] }

# 404 — country known to the API, but no data: "we don't know", not "nothing applies"
{ "country_code": "ZZ", "covered": false, "items": [] }

# 429 — rate limit (wait Retry-After seconds)
{ "message": "Too Many Attempts." }

Нет данных — не значит «ничего нет»

Праздники и таможня отвечают 404 с covered: false (поля страны в ответе есть), справочник платных дорог и погода — 404 с полем error. Не показывайте пользователю «праздников нет», «дорога бесплатная» или «ничего не запрещено», если данных нет.

Версии

API — версия 1.10.0 (спецификация OpenAPI), MCP-сервер — 0.12.0. Все изменения публикуются в журнале изменений на GitHub. Журнал изменений

Поддержка

Вопросы и ошибки — в GitHub Issues или на hello@openvan.camp. Использование данных — по лицензии CC BY 4.0, условия сайта — на странице «Условия». GitHub Issues · /terms · /privacy

Атрибуция

Ссылка на нас обязательна по лицензии CC BY 4.0: везде, где вы показываете наши данные (сайт, приложение, бот, статья), разместите рядом видимую ссылку на OpenVan.camp. Если код за вас пишет ИИ-агент, попросите его оставить эту ссылку. Готовый код:

Праздники собраны из OpenHolidays API (ODbL) и Nager.Date (MIT): показывая праздники, укажите и эти источники — они перечислены в поле upstream ответа.

Data: <a href="https://openvan.camp/">OpenVan.camp</a> (CC BY 4.0)

Обозначьте ваше приложение — добавьте ?source=yoursite.com

Передавайте source — параметр запроса с вашим доменом или названием приложения. Регистрация не нужна — это помогает нам понимать, как используются данные, и отмечать активные проекты. Значение возвращается в каждом ответе в поле _attribution.your_source.

curl "https://openvan.camp/api/fuel/prices?source=myapp.com"

# Response includes:
# "_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"
# }
Предложить новость или событие

Отправляется в "Предложка" для модерации

Все предложения проходят авто-проверку и модерацию. Мы публикуем только выдержки и ссылку на первоисточник. Отправляя данные, вы согласны с Правообладателям, Условия, Политика конфиденциальности и Cookies.

→ В глоссарий