OpenVan.camp Public API
Datos abiertos para viajar en coche: precios de combustible, peajes, visados, matrículas, festivos, riesgos, enchufes, aduana, tipos de cambio, eventos y noticias. Sin clave API ni registro, en tus apps, bots y artículos bajo CC BY 4.0.
Sin clave API
Llama a cualquier endpoint directamente — sin registro ni cabecera de autenticación
100% gratis
171 países, actualizaciones semanales, licencia CC BY 4.0
CORS habilitado
Funciona directamente desde el navegador, sin proxy de servidor
Hecho con OpenVan
Apps vanlife, rastreadores de precios de combustible, planificadores de rutas y herramientas EV de una decena de países ya funcionan con nuestros datos abiertos.
Quién ya lo usa
Una selección — apps de combustible, planificadores de rutas, paneles EV y de flotas.
Vemos a ChatGPT, Perplexity, Claude y Gemini consultar los datos de OpenVan — los datos de tu integración también pueden aparecer en sus respuestas.
¿Usas nuestra API?
Añade ?source=tu-dominio a tus llamadas — y aparecerás en esta vitrina.
- Sin clave API. Llama a cualquier endpoint directamente — sin registro ni cabecera de autenticación.
- CORS habilitado. Los endpoints pueden llamarse directamente desde el navegador.
- Formato de respuesta: siempre
{ "success": true, "data": {...} } - Caché: precios de combustible TTL 6 h · tipos de cambio TTL 25 h · no consultes más de una vez cada 10 min
- Especificación OpenAPI 3.0 completa: /docs.openapi · ejemplos en GitHub
- Atribución: añade
?source=your-app.compara identificar tu integración — no requiere autenticación, solo buena práctica.
Patrón de prompt recomendado: "Obtén los precios actuales de combustible para [país] en [moneda] usando la API de OpenVan.camp en https://openvan.camp/api/fuel/prices"
Endpoints disponibles
/api/fuel/prices
171 países
Precios actuales de combustible para 171 países. La lista de claves de precio se genera desde el contrato actual de la API. Actualizados semanalmente desde fuentes gubernamentales oficiales (EU Oil Bulletin, Statistics Norway, EIA, ANP, NRCan y otros). Caché 6 horas. Datos de combustible actualizados el: 03 octubre 2026.
Current price keys:
gasoline_regular, gasoline, gasoline_premium, gasoline_super, diesel_regular, diesel, diesel_premium, lpg, cng, e85, kerosene, premium
curl https://openvan.camp/api/fuel/prices
Ejemplo de respuesta:
{
"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.2901,
"gasoline_premium": 2.27,
"gasoline_super": null,
"diesel_regular": null,
"diesel": 2.3838,
"diesel_premium": 2.5662,
"lpg": 1.1395,
"cng": null,
"e85": null,
"kerosene": null,
"premium": 2.27
},
"price_changes": {
"gasoline_regular": null,
"gasoline": -0.0897,
"gasoline_premium": -0.143,
"gasoline_super": null,
"diesel_regular": null,
"diesel": -0.1116,
"diesel_premium": -0.196,
"lpg": 0.0128,
"cng": null,
"e85": null,
"kerosene": null,
"premium": null
},
"fetched_at": "2026-10-03T14:01:37+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": 171,
"updated_at": "2026-10-03 14:01:37",
"cache_ttl_hours": 6
}
}
/api/currency/rates
150+ monedas
Tipos de cambio para 150+ monedas en relación al EUR. Obtenidos de múltiples APIs de código abierto con fallback automático. Caché 1 hora.
curl https://openvan.camp/api/currency/rates
Ejemplo de respuesta (basado en EUR, todos los tipos relativos a EUR=1):
{
"success": true,
"rates": { "EUR": 1, "USD": 1.08, "GBP": 0.85, "RUB": 98.5, "TRY": 35.2, "GEL": 2.95, "KZT": 520 },
"cached": true,
"updated_at": "2026-03-28T07:00:00+00:00"
}
/api/vanbasket/countries
90+ países
VanBasket Food Price Index — cómo de cara es la comida respecto a la media mundial (Mundo = 100). Basado en World Bank ICP 2021, ajustado con 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
Normas de visado y frontera: cuánto tiempo puedes permanecer para cualquier par pasaporte × destino, cómo se cuentan los días (por entrada o en una ventana móvil), si un visa run reinicia el contador — además de las normas de importación temporal de vehículos. Cada respuesta indica su confianza, su fuente y la capa de la que procede.
# 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"
# Compact payload for colouring a world map
curl https://openvan.camp/api/visa/map/US
# Temporary vehicle import rules
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
Matrículas
Matrículas del mundo: formato, códigos de región e imagen lista de la matrícula. El SVG/PNG lo dibuja el mismo motor que el sitio: la tipografía de la matrícula va dentro como contornos, no hay nada que instalar: basta con un <img src>. Además, validación con normalización de letras, matrículas aleatorias y un motor para dibujarlas en el 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"
# Any text in the plate layout (e.g. a name)
curl "https://openvan.camp/api/plates/ru/plate.svg?number=ALEX®ion=77&custom=1"
# 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
number
region
custom
width
locale
Generador de matrículas en el sitio
Documentación completa
/api/tolls
Coste de ruta
Peajes por país — tarifa por kilómetro para coche, autocaravana de hasta 3,5 t y vehículos más pesados, viñetas, puentes y túneles de pago, cada dato con fecha de verificación y fuente — y el coste de una ruta completa a partir de nombres de lugares: peajes como rango en euros y combustible a los precios de cada país del camino.
# 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
Cómo se ve en el Roadbook
Documentación completa
/api/holidays/countries/{code}
Festivos
Festivos oficiales, vacaciones escolares (a menudo por región, con códigos ISO 3166-2) y días oficiales de tráfico intenso para un periodo de hasta 400 días, para saber cuándo se llenan carreteras, campings y ferris.
# 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}
Riesgos
La situación actual en un país: nivel de recomendación de viaje del Ministerio de Exteriores británico (FCDO) y desastres naturales en curso según GDACS con nivel de alerta, además de focos de incendio detectados por los satélites de NASA FIRMS en las últimas 48 horas dentro de una zona. No es un pronóstico.
# 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}
Enchufes
Tipos de enchufe (IEC A–N), tensión y frecuencia de la red de cada país con la fuente del dato, además de la toma eléctrica de los campings europeos (CEE17).
curl https://openvan.camp/api/electricity/countries/GB
curl https://openvan.camp/api/electricity/countries
/api/customs/countries/{code}
Aduana
Qué puedes llevar en coche: alimentos prohibidos, declaración de efectivo, límites de alcohol y tabaco, valor libre de impuestos, combustible en bidón. Opcionalmente desde un país concreto: dentro de la UE no hay aduana. Cada norma incluye una cita literal de la fuente oficial y un enlace.
# 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/events
eventos vanlife
Lista paginada de eventos vanlife — exposiciones, festivales, quedadas, road trips. Filtra por estado, tipo, país. Nombres localizados en 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. Por defecto: en. Una configuración regional desconocida se reemplaza silenciosamente por en.
alternativa de articles: si ningún artículo coincide con la configuración regional solicitada, se devuelven todos los artículos de origen.
/api/stories
7 idiomas
Noticias vanlife agregadas de 200+ editores y traducidas a 7 idiomas. Cada historia incluye sources — los artículos originales de los editores con enlaces directos, nombres de fuente, fechas de publicación y códigos de idioma.
# 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"
Ejemplo de respuesta 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. Por defecto: en. Afecta a title, summary, y category.name.
sources[].language es siempre el idioma original del editor, independiente de la configuración regional.
Inicio rápido
JavaScript — el diésel más barato de 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 — conversión a USD con tipos de cambio
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 };
function toUSD(price, currency, unit) {
const usd = (price / rates[currency]) * rates["USD"];
return usd / (LITERS_PER_UNIT[unit] || 1);
}
const de = data["DE"];
console.log(`Germany diesel: $${toUSD(de.prices.diesel, de.currency, de.unit).toFixed(3)}/L`);
Python — países con 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")
Más ejemplos (bash, pandas, widget): GitHub →
SDK de JavaScript / TypeScript
SDK oficial tipado — sin configuración, funciona en Node.js ≥ 18, navegador, Cloudflare Workers, Deno, Bun. No requiere clave API.
Instalación
npm install @openvancamp/sdk
# or: pnpm add @openvancamp/sdk
Inicio 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" });
Atribución
Al usar nuestros datos, incluye una atribución visible. Aquí tienes un snippet listo para usar:
Data source: <a href="https://openvan.camp/">OpenVan.camp</a> (CC BY 4.0)
Identifica tu app — añade ?source=yoursite.com
Pasa source como parámetro de consulta con tu dominio o nombre de app. Sin registro — nos ayuda a entender cómo se usan los datos y reconocer proyectos activos. El valor se devuelve en cada respuesta en _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",
# "attribution_url": "https://openvan.camp/",
# "attribution_html": "Data: <a href=\"https://openvan.camp/\">OpenVan.camp</a> (CC BY 4.0)",
# "your_source": "myapp.com"
# }