OpenVan.camp Public API

Offene Daten für Reisen mit dem Auto: Kraftstoffpreise, Maut, Visa, Kennzeichen, Feiertage, Reisegefahren, Steckdosen, Zoll, Wechselkurse, Events und News. Ohne API-Schlüssel und Registrierung — in Apps, Bots und Artikeln unter CC BY 4.0.

Kein API-Schlüssel

Rufe jeden Endpunkt direkt auf — keine Registrierung, kein Auth-Header

100% kostenlos

Spritpreise in 175 Ländern · Lizenz CC BY 4.0

CORS aktiviert

Funktioniert direkt im Browser, kein serverseitiger Proxy nötig

Mit OpenVan.camp gebaut

Vanlife-Apps, Spritpreis-Tracker, Routenplaner und EV-Tools aus einem Dutzend Ländern laufen bereits auf unseren offenen Daten.

277
Apps & Websites
15 900+
API-Anfragen / Monat
4
KI-Engines lesen die Daten
6
offene Datensätze

Wer es bereits nutzt

Eine handverlesene Auswahl — Spritpreis-Apps, Routenplaner, EV- und Flotten-Dashboards.

Von KI-Suchmaschinen gelesen
ChatGPT Perplexity Claude Gemini

Wir sehen ChatGPT, Perplexity, Claude und Gemini OpenVan-Daten abrufen — auch die Daten deiner Integration können in ihren Antworten auftauchen.

Nutzt du unsere API?

Füge ?source=deine-domain zu deinen Aufrufen hinzu — und du erscheinst in dieser Showcase.

CC BY 4.0-Lizenz — Sie können diese Daten in jedem Medium oder Format frei nutzen, weitergeben und anpassen, solange Sie OpenVan.camp als Quelle angeben. creativecommons.org →
Für KI-Agenten & LLM-Tools
  • Kein API-Schlüssel. Rufe jeden Endpunkt direkt auf — keine Registrierung, kein Auth-Header.
  • CORS aktiviert. Endpunkte können direkt im Browser aufgerufen werden.
  • Antwortformat: die meisten Endpunkte liefern { "success": true, "data": {...} }. Ausnahmen: Wechselkurse im Feld rates; Wetter liefert data ohne success; Maut für eine Route, Roadbook, Feiertage, Zoll und ein einzelner Beitrag liefern ein Objekt ohne Hülle. Fehler und „keine Daten“ stehen unter Limits, Fehler und Versionen.
  • Caching: Spritpreise 6 h zwischengespeichert · Wechselkurse alle 6 h aktualisiert · HTTP-Cache der Antwort 2 Minuten (Cache-Control) · bitte höchstens alle 10 Minuten abfragen
  • Vollständige OpenAPI-3.0-Spezifikation: /docs.openapi (YAML) · /.well-known/openapi.json (JSON) · GitHub-Beispiele
  • Dateien zur automatischen Erkennung: /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
  • Attribution: füge ?source=your-app.com hinzu, um deine Integration zu kennzeichnen — keine Authentifizierung nötig, einfach guter Stil.

Empfohlenes Prompt-Muster: "Hol die aktuellen Kraftstoffpreise für [Land] in [Währung] über die OpenVan.camp API unter https://openvan.camp/api/fuel/prices"

KI-Assistenten und MCP-Server

Dieselben Daten gibt es als 32 öffentliche MCP-Werkzeuge (Server-Version 0.12.0, dazu das interne get_roadbook_build_status für die Reisekarte) mit interaktiven Karten. Verbinde sie mit jedem MCP-fähigen Assistenten oder öffne eine fertige App.

Remote-Server — Streamable HTTP, ohne Schlüssel:

https://mcp.openvan.camp/mcp

Lokal per npx — für Claude Desktop, Cursor, Windsurf und andere MCP-Clients:

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

Das Plugin für Claude Code und Codex enthält diesen MCP-Server und zwei Skills, also Anleitungen für den KI-Agenten. So installieren Sie es:

# 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

Der Skill openvan-travel hilft dem Agenten, für eine Reisefrage das passende Tool des MCP-Servers zu wählen, etwa zu Visa, Kraftstoff oder Route. Den Skill openvan-api benötigt der Agent, wenn er eine Anwendung mit Daten aus unserer API programmiert. Der Skill sorgt dafür, dass der Agent bei den Daten einen Link auf OpenVan.camp einfügt, wie es die Lizenz verlangt. Außerdem fügt der Agent jeder Anfrage den Parameter source hinzu und liest für jede Kraftstoffart Einheit und Währung des Preises getrennt aus. skills/

Fertige Apps

MCP-Werkzeuge (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.

Server-Karte: /.well-known/mcp/server-card.json · npm: @openvancamp/mcp-server
Das npm-Paket kann dem Remote-Server ein paar Versionen hinterherhinken; die Remote-Adresse ist immer aktuell.

Verfügbare Endpunkte

GET /api/fuel/prices 175 Länder

Aktuelle Kraftstoffpreise für 175 Länder. Die Liste der Preisschlüssel kommt aus dem aktuellen API-Vertrag. Wöchentlich aus offiziellen Behördenquellen aktualisiert (EU Oil Bulletin, Statistics Norway, EIA, ANP, NRCan u. a.). Cache 6 Stunden. Kraftstoffdaten zuletzt aktualisiert: 31 Oktober 2026.

Preisschlüssel: gasoline_regular, gasoline, gasoline_premium, gasoline_super, diesel_regular, diesel, diesel_premium, lpg, cng, e85, kerosene, premium
Einheit und Währung gelten pro Kraftstoffsorte: units[Sorte] und currencies[Sorte] haben Vorrang vor unit und currency des Landes. Kolumbien rechnet zum Beispiel pro Gallone, Benzin in Venezuela kostet Bolívar.

curl https://openvan.camp/api/fuel/prices

Beispielantwort:

{
    "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+ Währungen

Kurse für über 150 Währungen gegenüber EUR (EUR = 1) aus mehreren offenen Quellen mit automatischem Ausweichen. Alle 6 Stunden aktualisiert: Zeitpunkt in meta.updated_at, ein Kurs älter als 25 Stunden gilt als veraltet.

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

Echte API-Antwort (einige von 152 Währungen):

{
    "success": true,
    "rates": {
        "EUR": 1,
        "GBP": 0.83637627,
        "GEL": 2.9116,
        "KZT": 508.29914188,
        "RUB": 89.6603,
        "TRY": 55.8153,
        "USD": 1.12040699,
        "…": "…"
    },
    "meta": {
        "count": 152,
        "base": "EUR",
        "updated_at": "2026-11-02T06:05:26+03:00",
        "refreshed_every_hours": 6,
        "max_age_seconds": 90000
    }
}
GET /api/vanbasket/countries 90+ Länder

VanBasket Food Price Index — wie teuer Lebensmittel im Vergleich zum Weltdurchschnitt sind (Welt = 100). Basierend auf World Bank ICP 2021, angepasst mit 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 Paare

Visa- und Grenzregeln: wie lange man bleiben darf für jedes Paar aus Pass und Zielland, wie die Tage gezählt werden (pro Einreise oder im gleitenden Zeitraum), ob eine Visa-Run den Zähler zurücksetzt — dazu Regeln zur vorübergehenden Fahrzeugeinfuhr. Jede Antwort nennt Verlässlichkeit, Quelle und Datenebene.

# 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 bedeutet: die Anzahl der Tage stimmt, die Zählweise ist eine Annahme — an der Grenze prüfen. Referenzdaten, keine Rechtsberatung.
Parameter: passport destination weight plate mode locale limit Vollständige Dokumentation
GET /api/plates Kennzeichen

Kfz-Kennzeichen der Welt: Format, Regionalcodes und ein fertiges Bild des Kennzeichens. SVG/PNG zeichnet dieselbe Engine wie auf der Website — die Kennzeichenschrift ist als Konturen enthalten, nichts zu installieren: einfach per <img src> einbinden. Dazu Prüfung mit Buchstaben-Normalisierung, Zufallskennzeichen und eine Browser-Engine zum eigenen Zeichnen.

33-LE878 MT — Vereinigte Staaten
Vereinigte Staaten
BW54 TWC — Vereinigtes Königreich
Vereinigtes Königreich
494-LN-3 — Niederlande
Niederlande
SMY FR78 — Polen
Polen
ZF 11276 — Norwegen
Norwegen
# 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 Routenkosten

Mautstraßen nach Ländern — Kilometertarife für Pkw, Wohnmobil bis 3,5 t und schwerere Fahrzeuge, Vignetten, mautpflichtige Brücken und Tunnel, jeweils mit Prüfdatum und Quelle — und die Kosten einer ganzen Route aus Ortsnamen: Maut als Spanne in Euro und Kraftstoff zu den Preisen jedes Landes unterwegs.

# 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 bedeutet, dass nicht alle Gebühren enthalten sind: Für Länder in unknown_countries gibt es keine Daten — kostenlos sind sie deshalb nicht.
Parameter: waypoints vehicle_class cons tank fuel currency locale So sieht es im Roadbook aus Vollständige Dokumentation
POST /api/roadbook/from-places Ganze Reise

Das OpenVan-Roadbook aus 2–10 Ortsnamen — derselbe Plan wie im Roadbook-Assistenten: Fahrtage und Übernachtungen, Budget für Kraftstoff, Maut, Vignetten und Fähren und für jedes Land unterwegs die Einreise- und Fahrzeugregeln für die angegebenen Pässe und Kennzeichen, Feiertage, Sicherheit und Strom. Die Antwort ist eine teilbare Roadbook-Seite; gleiche Anfragen liefern dasselbe Roadbook.

# 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 und locale sind Pflicht, alle anderen Parameter gehören in inputs. Die Antwort auf das Anlegen enthält schon code, status und url (relative Roadbook-Adresse); solange status nicht ready ist, frage /api/roadbook/{code}/status ab — dort kommen nur status und progress. Eine lange Route dauert bis zu einer Minute. Höchstens 10 Roadbooks pro Minute und IP.
Parameter: places locale name travelers plates weight fuel cons date currency So sieht es im Roadbook aus Vollständige Dokumentation
GET /api/holidays/countries/{code} Feiertage

Gesetzliche Feiertage, Schulferien (oft regional, mit ISO-3166-2-Codes) und offizielle Spitzenverkehrstage für einen Zeitraum von bis zu 400 Tagen — damit Sie wissen, wann Straßen, Campingplätze und Fähren voll sind.

# 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
Ohne Daten kommt 404 mit covered: false. Das heißt „wir wissen es nicht“, nicht „keine Feiertage“ oder „nichts verboten“.
GET /api/hazards/countries/{code} Gefahren

Die aktuelle Lage in einem Land: Reisehinweisstufe des britischen Außenministeriums (FCDO) und laufende Naturkatastrophen laut GDACS mit Warnstufe, dazu Satelliten-Brandmeldungen von NASA FIRMS der letzten 48 Stunden in einem Gebiet. Keine Vorhersage.

# 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 Fähren

Fähr- und Flussquerungen mit ihren Anlegern aus OpenStreetMap in einem Kartenausschnitt: von Hand geprüfte Betreiberseiten, Links zur Online-Buchung, wo sie bestätigt ist, und eine Fahrplanübersicht aus offenen GTFS-Feeds: nächste Abfahrten, Tage, Takt und Fahrzeit. Linien- und Anlegerdaten stehen unter 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
Parameter: bbox zoom Vollständige Dokumentation
GET /api/electricity/countries/{code} Steckdosen

Steckertypen (IEC A–N), Netzspannung und Frequenz für jedes Land mit Quelle des Werts, dazu der Stromanschluss auf europäischen Campingplätzen (CEE17).

curl https://openvan.camp/api/electricity/countries/GB
curl https://openvan.camp/api/electricity/countries
GET /api/customs/countries/{code} Zoll

Was Sie mit dem Auto einführen dürfen: Lebensmittelverbote, Bargeldanmeldung, Freimengen für Alkohol und Tabak, zollfreier Warenwert, Kraftstoff im Kanister. Optional mit dem Herkunftsland — innerhalb der EU gibt es keinen Zoll. Jede Regel enthält ein wörtliches Zitat der amtlichen Quelle und einen 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
Ohne Daten kommt 404 mit covered: false. Das heißt „wir wissen es nicht“, nicht „keine Feiertage“ oder „nichts verboten“.
GET /api/vansky/weather/{code}/{city} 0–100

Der VanSky-Index bewertet auf einer Skala von 0–100, wie gut das Wetter für eine Reise mit dem Wohnmobil passt. Dabei steht 100 für ausgezeichnete Bedingungen. VanSky berechnet den Index für ein Land und für eine Stadt, für heute und für die nächsten 7 Tage. Er stimmt mit dem Wert „heute“ auf der Seite openvan.camp überein. Für eine Stadt liefert die API die Position im Städteranking des Landes nach dem Wochenindex (Durchschnitt der nächsten 7 Tage, abgesenkt bei stark schwankenden Tagen). Außerdem liefert sie die Prognose für jeden Tag mit den Bestandteilen des Index, die Teilbewertungen (Übernachten, Fahren, Solarpanels, Meer), die Luftqualität und fertige Empfehlungen in ganzen Sätzen. Das Städteranking eines Landes liefert /api/vansky/weather/{code}/cities. Das Ranking der Länder liefert /api/vansky/ranking. Formel und Gewichte des Index beschreibt /api/vansky/methodology. Für {code} setzen Sie den zweistelligen Ländercode nach ISO 3166-1 alpha-2 ein. Die Stadt geben Sie mit einem lateinischen Bezeichner (slug) an, den Sie am Ende der Seitenadresse finden. In openvan.camp/ru/vansky/georgia/batumi lautet er „batumi“. Alternativ liefert die Anfrage /api/vansky/search?q=Batumi den slug, wobei q den Namen der Stadt enthält.

# 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
Parameter: code city sort by region include locale Wetter auf der Website Vollständige Dokumentation
GET /api/vansky/climate 2021–2025

Dieser Endpunkt liefert das typische Wetter für beliebige Koordinaten oder eine VanSky-Stadt an einem gewählten Tag des Jahres. Grundlage ist der Median aus 35 Archivtagen: dasselbe Datum ±3 Tage in den Jahren 2021–2025, aus dem ERA5-Archiv (aufbereitete Beobachtungsdaten von Copernicus). Für den gewählten Tag enthält die Antwort das Tagesmaximum und das Nachtminimum. Sie nennt außerdem, an wie vielen der 35 Tage Niederschlag fiel (Regen oder Schnee, ≥ 1,5 mm), und den häufigsten Himmelszustand (clear, cloudy, overcast). Dazu gibt sie die Temperatur des Meeres oder eines großen Sees im Umkreis von ~50 km an. Liegt kein Wasser in der Nähe, fehlt der Wert. Hinzu kommen die Sonneneinstrahlung in kWh/m² für die Solarplanung und der VanSky-Index auf einer Skala von 0–100 (je höher, desto komfortabler). Für jeden der 12 Monate nennt die Antwort die mittlere Zahl der trockenen Tage mit klarem, wolkigem und bedecktem Himmel sowie der Tage mit Niederschlag. Außerdem nennt sie den besten Monat nach Index. Die Anfrage erwartet lat und lng (Breiten- und Längengrad) oder den ISO-Ländercode und den slug der Stadt. Der Parameter date im Format MM-DD ist optional. Ohne Datum liefert der Endpunkt alle 366 Tage.

# 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
Parameter: lat lng date code city Wetter auf der Website Vollständige Dokumentation
GET /api/events Vanlife-Events

Seitenweise Vanlife-Events — Ausstellungen, Festivals, Treffen, Roadtrips. Filter nach Status, Typ, Land. Lokalisierte Namen in 7 Sprachen.

# 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 — eine von en ru de fr es pt tr. Standard: en. Unbekannte Locale wird stillschweigend ersetzt durch en. Artikel-Fallback: wenn keine Artikel zur angeforderten Locale passen, werden alle Quellartikel zurückgegeben.
Parameter: locale status type country search page limit Vollständige Docs →
GET /api/stories 7 Sprachen

Vanlife-Nachrichten, aggregiert aus 200+ Publishern und in 7 Sprachen übersetzt. Jede Story enthält sources — Originalartikel der Publisher mit Direktlinks, Quellennamen, Veröffentlichungsdaten und Sprachcodes. Semantische Nachrichtensuche (q, bis zu 15 Treffer) und der fertige Abend-Digest (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"

Beispielantwort für /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 — eine von en ru de fr es pt tr. Standard: en. Betrifft title, summary, und category.name. sources[].language ist immer die Originalsprache des Publishers, unabhängig von der Locale.
Parameter: locale category country search page limit q Vollständige Docs →

Schnellstart

JavaScript — günstigster Diesel in 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 — Umrechnung in USD mit Wechselkursen

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 — Länder mit Autogas (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")

Weitere Beispiele (bash, pandas, Widget): GitHub →

JavaScript / TypeScript SDK

Offizielles typisiertes SDK — ohne Konfiguration, läuft in Node.js ≥ 18, Browser, Cloudflare Workers, Deno, Bun. Kein API-Schlüssel nötig.

Installation

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

Schnellstart (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" });

Python-SDK

Ohne Abhängigkeiten, Python 3.9+, ohne API-Schlüssel.

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"))

Limits, Fehler und Versionen

Anfragelimits

Gezählt pro IP: 120 Anfragen pro Minute für die ganze API, aufwendige Anfragen haben niedrigere Limits — die Tabelle zeigt die tatsächlichen Werte. Der Rest steht in den Headern X-RateLimit-Limit und X-RateLimit-Remaining. Darüber gibt es HTTP 429 und den Header Retry-After: so viele Sekunden warten und erneut senden.

Anfrage Pro Minute
Ganze 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

Fehler

Ein Fehler ist HTTP 4xx/5xx. Der Inhalt hat drei Formen: { "success": false, "error": "…" } oder { "error": "…", "message": "…" }; ein Prüffehler beim Roadbook ist { "error": "validation", "fields": [ … ] }; Limit und unbekannte Adresse liefern { "message": "…" }. Prüfe den HTTP-Status, nicht nur den Inhalt.

# 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." }

Keine Daten heißt nicht „nichts“

Feiertage und Zoll antworten mit 404 und covered: false (die Länderfelder sind trotzdem da), Mautverzeichnis und Wetter mit 404 und einem Feld error. Sag Nutzern nicht „keine Feiertage“, „mautfrei“ oder „nichts verboten“, wenn Daten fehlen.

Versionen

API-Version 1.10.0 (OpenAPI), MCP-Server 0.12.0. Jede Änderung steht im Changelog auf GitHub. Changelog

Support

Fragen und Fehler — GitHub Issues oder hello@openvan.camp. Datennutzung unter CC BY 4.0, Nutzungsbedingungen der Website auf der Seite „Bedingungen“. GitHub Issues · /terms · /privacy

Quellenangabe

Die Quellenangabe ist nach der Lizenz CC BY 4.0 Pflicht: Wo immer Sie unsere Daten zeigen (Website, App, Bot, Artikel), setzen Sie daneben einen sichtbaren Link zu OpenVan.camp. Wenn ein KI-Agent Ihren Code schreibt, bitten Sie ihn, diesen Link beizubehalten. Fertiger Codeausschnitt:

Feiertage stammen aus der OpenHolidays API (ODbL) und Nager.Date (MIT): Wenn du Feiertage zeigst, nenne auch diese Quellen — sie stehen im Feld upstream der Antwort.

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

Kennzeichne deine App mit ?source=yoursite.com

Übergib source als Query-Parameter mit deiner Domain oder App-Namen. Keine Registrierung nötig — es hilft uns zu verstehen, wie die Daten genutzt werden, und aktive Projekte zu würdigen. Der Wert wird in jeder Antwort unter _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"
# }
News oder Event vorschlagen

An Moderation gesendet

Wir veröffentlichen nur Auszüge. Mit dem Senden stimmst Du den AGB zu.

→ Zum Glossar