OpenVan.camp Public API
Dados abertos para viajar de carro: preços de combustível, pedágios, vistos, placas, feriados, riscos, tomadas, alfândega, câmbio, eventos e notícias. Sem chave de API nem cadastro — em apps, bots e artigos sob CC BY 4.0.
Sem chave de API
Chame qualquer endpoint diretamente — sem registro nem cabeçalho de autenticação
100% grátis
Preços de combustível em 174 países · licença CC BY 4.0
CORS habilitado
Funciona direto do navegador, sem proxy no servidor
Feito com OpenVan.camp
Apps vanlife, rastreadores de preços de combustível, planejadores de rotas e ferramentas EV de uma dezena de países já funcionam com nossos dados abertos.
Quem já usa
Uma seleção — apps de combustível, planejadores de rotas, painéis de EV e de frotas.
Vemos ChatGPT, Perplexity, Claude e Gemini buscando dados do OpenVan.camp — os dados da sua integração também podem aparecer nas respostas deles.
Usa nossa API?
Adicione ?source=seu-domínio às suas chamadas — e você aparecerá nesta vitrine.
- Sem chave de API. Chame qualquer endpoint diretamente — sem registro nem cabeçalho de autenticação.
- CORS habilitado. Os endpoints podem ser chamados direto do navegador.
- Formato da resposta: a maioria dos endpoints retorna
{ "success": true, "data": {...} }. Exceções: as cotações vêm em rates; o clima retorna data sem success; pedágios de uma rota, roadbook, feriados, alfândega e uma notícia isolada retornam um objeto sem envelope. Erros e “sem dados”: veja Limites, erros e versões. - Cache: preços de combustível em cache por 6 h · cotações atualizadas a cada 6 h · cache HTTP da resposta de 2 minutos (Cache-Control) · consulte no máximo uma vez a cada 10 minutos
- Especificação OpenAPI 3.0 completa: /docs.openapi (YAML) · /.well-known/openapi.json (JSON) · exemplos no GitHub
- Arquivos de descoberta automática: /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
- Atribuição: adicione
?source=your-app.compara identificar sua integração — não requer autenticação, apenas boa prática.
Padrão de prompt recomendado: "Obtenha os preços atuais de combustível para [país] em [moeda] usando a API do OpenVan.camp em https://openvan.camp/api/fuel/prices"
Assistentes de IA e servidor MCP
Os mesmos dados estão disponíveis como 30 ferramentas MCP públicas (servidor versão 0.11.0, além da interna get_roadbook_build_status do cartão de viagem) com cartões interativos. Conecte-as a qualquer assistente com MCP ou abra um app pronto.
Servidor remoto — Streamable HTTP, sem chave:
https://mcp.openvan.camp/mcp
Localmente via npx — para Claude Desktop, Cursor, Windsurf e outros clientes MCP:
{
"mcpServers": {
"openvan": {
"command": "npx",
"args": ["-y", "@openvancamp/mcp-server"]
}
}
}
Plugin para Claude Code e Codex, com este servidor MCP e duas skills (instruções para o agente de IA). Instalação:
# 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
A skill openvan-travel indica ao agente qual das ferramentas do servidor deve escolher para responder a uma pergunta sobre viagens, como vistos, combustível ou percurso. A skill openvan-api entra em ação quando o agente desenvolve uma aplicação com os dados da API do OpenVan.camp. Com esta skill, o agente inclui uma ligação ao OpenVan.camp junto dos dados apresentados, como a licença exige. O agente acrescenta ainda o parâmetro source aos pedidos e lê, para cada tipo de combustível, a unidade e a moeda do preço em separado. skills/
Apps prontos
Ferramentas MCP (30)
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.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.
Cartão do servidor: /.well-known/mcp/server-card.json
· npm: @openvancamp/mcp-server
O pacote npm pode ficar algumas versões atrás do servidor remoto; o endereço remoto é sempre o mais recente.
Endpoints disponíveis
/api/fuel/prices
174 países
Preços atuais de combustível para 174 países. A lista de chaves de preço é gerada a partir do contrato atual da API. Atualizados semanalmente a partir de fontes governamentais oficiais (EU Oil Bulletin, Statistics Norway, EIA, ANP, NRCan e outros). Cache 6 horas. Dados de combustível atualizados em: 26 outubro 2026.
Chaves de preço:
gasoline_regular, gasoline, gasoline_premium, gasoline_super, diesel_regular, diesel, diesel_premium, lpg, cng, e85, kerosene, premium
Unidade e moeda valem por tipo de combustível: units[tipo] e currencies[tipo] prevalecem sobre unit e currency do país. Por exemplo, a Colômbia cobra por galão e a gasolina na Venezuela é em bolívares.
curl https://openvan.camp/api/fuel/prices
Exemplo de resposta:
{
"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.1425,
"gasoline_premium": 2.24,
"gasoline_super": null,
"diesel_regular": null,
"diesel": 2.2677,
"diesel_premium": 2.469,
"lpg": 1.095,
"cng": null,
"e85": null,
"kerosene": null,
"premium": 2.24
},
"price_changes": {
"gasoline_regular": null,
"gasoline": -0.0255,
"gasoline_premium": -0.018,
"gasoline_super": null,
"diesel_regular": null,
"diesel": 0.0038,
"diesel_premium": -0.058,
"lpg": -0.0383,
"cng": null,
"e85": null,
"kerosene": null,
"premium": null
},
"fetched_at": "2026-10-26T06:04:22+03:00",
"sources": [
"EU Weekly Oil Bulletin",
"clever-tanken.de (Premium Diesel)",
"Tankerkoenig (tankerkoenig.de)",
"Fuelo.net",
"Cargopedia.net",
"BenzinpreisAktuell.de"
],
"sources_count": 3,
"is_excluded": false
}
},
"meta": {
"total_countries": 174,
"updated_at": "2026-10-26 06:04:23",
"cache_ttl_hours": 6
}
}
/api/currency/rates
150+ moedas
Cotações de mais de 150 moedas em relação ao EUR (EUR = 1), de várias fontes abertas com troca automática em caso de falha. Atualizadas a cada 6 horas: o horário está em meta.updated_at, e uma cotação com mais de 25 horas é considerada desatualizada.
curl https://openvan.camp/api/currency/rates
Resposta real da API (algumas de 152 moedas):
{
"success": true,
"rates": {
"EUR": 1,
"GBP": 0.8373782,
"GEL": 2.8943,
"KZT": 506.4199166,
"RUB": 90.0977,
"TRY": 55.5241,
"USD": 1.11719525,
"…": "…"
},
"meta": {
"count": 152,
"base": "EUR",
"updated_at": "2026-10-28T12:05:25+03:00",
"refreshed_every_hours": 6,
"max_age_seconds": 90000
}
}
/api/vanbasket/countries
90+ países
VanBasket Food Price Index — o quão cara é a comida em relação à média mundial (Mundo = 100). Baseado no World Bank ICP 2021, ajustado com 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
/api/visa/check
39.601 pares
Regras de visto e fronteira: quanto tempo pode permanecer para qualquer par passaporte × destino, como os dias são contados (por entrada ou em janela móvel), se um visa run zera o contador — além das regras de importação temporária de veículo. Cada resposta traz a sua confiança, a fonte e a camada de onde veio.
# 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"
/api/plates
Placas
Placas de carro do mundo: formato, códigos de região e imagem pronta da placa. O SVG/PNG é desenhado pelo mesmo motor do site — a fonte da placa já vem em contornos, nada para instalar: basta um <img src>. E também validação com normalização de letras, placas aleatórias e um motor para desenhá-las no navegador.
# Ready plate image — put it into <img src> (PNG: plate.png?width=800)
curl "https://openvan.camp/api/plates/ru/plate.svg?number=A123BC®ion=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®ion=799"
curl https://openvan.camp/api/plates/ru/random
/api/tolls
Custo da rota
Pedágios por país — tarifa por quilômetro para carro, motorhome de até 3,5 t e veículos mais pesados, vinhetas, pontes e túneis pagos, cada valor com data de verificação e fonte — e o custo de uma rota inteira a partir de nomes de lugares: pedágios como faixa em euros e combustível aos preços de cada país no caminho.
# 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"}'
waypoints
vehicle_class
cons
tank
fuel
currency
locale
Veja no Roadbook
Documentação completa
/api/roadbook/from-places
Viagem completa
O road book da OpenVan.camp a partir de 2–10 nomes de lugares — o mesmo plano do assistente de road book: dias ao volante e noites, orçamento de combustível, portagens, vinhetas e ferries e, para cada país do caminho, as regras de entrada dos viajantes e do veículo para os passaportes e matrículas indicados, feriados, segurança e eletricidade. A resposta é uma página de road book partilhável; o mesmo pedido devolve o mesmo road book.
# 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
name
travelers
plates
weight
fuel
cons
date
currency
Veja no Roadbook
Documentação completa
/api/holidays/countries/{code}
Feriados
Feriados nacionais, férias escolares (muitas vezes por região, com códigos ISO 3166-2) e dias oficiais de trânsito intenso para um período de até 400 dias — para saber quando estradas, campings e balsas lotam.
# 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
/api/hazards/countries/{code}
Riscos
A situação atual em um país: nível de alerta de viagem do Ministério das Relações Exteriores britânico (FCDO) e desastres naturais em andamento segundo o GDACS com nível de alerta, além de focos de incêndio detectados pelos satélites NASA FIRMS nas últimas 48 horas em uma área. Não é uma previsão.
# 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"
/api/electricity/countries/{code}
Tomadas
Tipos de tomada (IEC A–N), tensão e frequência da rede de cada país com a fonte do valor, além do conector elétrico dos campings europeus (CEE17).
curl https://openvan.camp/api/electricity/countries/GB
curl https://openvan.camp/api/electricity/countries
/api/customs/countries/{code}
Alfândega
O que você pode levar de carro: alimentos proibidos, declaração de dinheiro, limites de álcool e tabaco, valor isento, combustível em galão. Opcionalmente a partir de um país de origem — dentro da UE não há alfândega. Cada regra traz uma citação literal da fonte oficial e um link.
# 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
/api/vansky/weather/{code}/{city}
0–100
O índice VanSky classifica a adequação das condições meteorológicas para viajar de autocaravana numa escala de 0–100, em que 100 significa excelente. O cálculo é feito para um país e para uma cidade, para hoje e para os 7 dias seguintes, e o valor coincide com o de «hoje» na página openvan.camp. Para uma cidade, a API devolve a posição no ranking das cidades do país pelo índice da semana (a média dos 7 dias, reduzida quando os dias são irregulares), a previsão diária com as componentes do índice, as avaliações parciais (pernoita, condução, painéis solares, mar), a qualidade do ar e recomendações já redigidas em texto. A lista das cidades do país, ordenada por este ranking, está em /api/vansky/weather/{code}/cities. O ranking dos países está em /api/vansky/ranking. A fórmula e os pesos do índice estão em /api/vansky/methodology. Em {code}, indique o código de país ISO 3166-1 alpha-2, com duas letras. A cidade é identificada pelo slug em carateres latinos, que é a última parte do endereço da página da cidade: em openvan.camp/ru/vansky/georgia/batumi, o slug é batumi. Para obter o slug, use /api/vansky/search?q=Batumi, em que q é o nome da cidade.
# 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
/api/vansky/climate
2021–2025
Devolve o tempo típico para umas coordenadas quaisquer ou para uma cidade VanSky, num dia do ano à escolha. O valor é a mediana de 35 dias de arquivo: a mesma data ±3 dias, no período 2021–2025, segundo o arquivo ERA5 (observações reprocessadas do serviço Copernicus). Para a data, devolve: a temperatura máxima de dia e a mínima de noite; em quantos dos 35 dias houve pelo menos 1,5 mm de precipitação (chuva ou neve); o estado do céu mais frequente (clear, cloudy, overcast); a temperatura do mar ou de um grande lago num raio de ~50 km (longe da água, não é devolvida); a radiação solar em kWh/m², para dimensionar painéis solares; e o índice VanSky de 0–100 (quanto mais alto, mais confortável). Para cada um dos 12 meses, devolve o número médio de dias secos e de céu limpo, nublados, encobertos e com precipitação, e ainda o melhor mês segundo o índice. No pedido, indique lat e lng (latitude e longitude), ou o código ISO do país e o slug da cidade. O parâmetro date, no formato MM-DD, é opcional: sem ele, devolve os 366 dias.
# 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
/api/events
eventos vanlife
Lista paginada de eventos vanlife — exposições, festivais, encontros, road trips. Filtre por status, tipo, país. Nomes localizados em 7 idiomas.
# 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"
en ru de fr es pt tr. Padrão: en. Uma localidade desconhecida é silenciosamente substituída por en.
fallback de articles: se nenhum artigo corresponder à localidade solicitada, todos os artigos de origem são retornados.
/api/stories
7 idiomas
Notícias vanlife agregadas de 200+ publicadores e traduzidas para 7 idiomas. Cada matéria inclui sources — os artigos originais dos publicadores com links diretos, nomes das fontes, datas de publicação e códigos de idioma.
Busca semântica de notícias (q, até 15 resultados) e o resumo da noite pronto (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"
Exemplo de resposta para /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://..."
}
]
}
en ru de fr es pt tr. Padrão: en. Afeta title, summary, e category.name.
sources[].language é sempre o idioma original do publicador, independente da localidade.
Início rápido
JavaScript — o diesel mais barato da Europa
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 — conversão para USD com taxas de câmbio
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 — países com GLP
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")
Mais exemplos (bash, pandas, widget): GitHub →
SDK JavaScript / TypeScript
SDK tipado oficial — sem configuração, funciona em Node.js ≥ 18, navegador, Cloudflare Workers, Deno, Bun. Não requer chave de API.
Instalação
npm install @openvancamp/sdk
# or: pnpm add @openvancamp/sdk
Início rápido (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 para Python
Sem dependências, Python 3.9+, sem chave de 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"))
Limites, erros e versões
Limites de requisições
Contados por IP: 120 requisições por minuto em toda a API; requisições pesadas têm limites menores — a tabela mostra os valores reais. O restante aparece nos cabeçalhos X-RateLimit-Limit e X-RateLimit-Remaining. Acima do limite: HTTP 429 e o cabeçalho Retry-After — espere esses segundos e tente de novo.
| Requisição | Por minuto |
|---|---|
| API inteira | 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 |
Erros
Um erro é HTTP 4xx/5xx. O corpo tem três formatos: { "success": false, "error": "…" } ou { "error": "…", "message": "…" }; um erro de validação do roadbook é { "error": "validation", "fields": [ … ] }; limite excedido e endereço desconhecido retornam { "message": "…" }. Verifique o status HTTP, não só o corpo.
# 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." }
Sem dados não quer dizer “nada”
Feriados e alfândega respondem 404 com covered: false (os campos do país continuam lá); o catálogo de pedágios e o clima respondem 404 com um campo error. Não diga ao usuário “sem feriados”, “estrada gratuita” ou “nada proibido” quando faltam dados.
Versões
API versão 1.9.0 (especificação OpenAPI), servidor MCP 0.11.0. Cada mudança é publicada no changelog do GitHub. Changelog
Suporte
Dúvidas e erros — GitHub Issues ou hello@openvan.camp. Uso dos dados sob CC BY 4.0; termos do site na página Termos. GitHub Issues · /terms · /privacy
Atribuição
A atribuição é obrigatória pela licença CC BY 4.0: onde quer que você mostre nossos dados (site, app, bot, artigo), coloque ao lado um link visível para o OpenVan.camp. Se um agente de IA escreve seu código, peça para ele manter esse link. Snippet pronto para usar:
Os feriados vêm da OpenHolidays API (ODbL) e do Nager.Date (MIT): ao mostrá-los, cite também essas fontes — elas estão no campo upstream da resposta.
Data: <a href="https://openvan.camp/">OpenVan.camp</a> (CC BY 4.0)
Identifique seu app — adicione ?source=yoursite.com
Passe source como parâmetro de consulta com seu domínio ou nome do app. Sem registro — ajuda-nos a entender como os dados são usados e a reconhecer projetos ativos. O valor é retornado em cada resposta em _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"
# }