OpenVan.camp Public API
Datos abiertos sobre precios de combustible, tipos de cambio y eventos vanlife. Uso gratuito 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
142 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
142 países
Precios actuales de combustible para 142 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: 25 julio 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",
"prices": {
"gasoline_regular": null,
"gasoline": 2.1649,
"gasoline_premium": 2.2106,
"gasoline_super": null,
"diesel_regular": null,
"diesel": 2.1726,
"diesel_premium": 2.4319,
"lpg": 1.1065,
"cng": null,
"e85": null,
"kerosene": null,
"premium": 2.2106
},
"price_changes": {
"gasoline_regular": null,
"gasoline": -0.005,
"gasoline_premium": -0.0824,
"gasoline_super": null,
"diesel_regular": null,
"diesel": 0.0401,
"diesel_premium": -0.0564,
"lpg": -0.0021,
"cng": null,
"e85": null,
"kerosene": null,
"premium": null
},
"fetched_at": "2026-07-25T11:19:58+03:00",
"sources": [
"EU Weekly Oil Bulletin",
"clever-tanken.de (Premium Diesel)",
"Tankerkoenig (tankerkoenig.de)",
"Cargopedia.net",
"Fuelo.net",
"BenzinpreisAktuell.de"
],
"sources_count": 4,
"is_excluded": false
}
},
"meta": {
"total_countries": 142,
"updated_at": "2026-07-25 11:19:58",
"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/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
function toUSD(price, currency, unit) {
let usd = (price / rates[currency]) * rates["USD"];
return unit === "gallon" ? usd / 3.78541 : usd;
}
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 });
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"
# }