openvan — Python client for the OpenVan.camp API
Free vanlife & RV travel data in Python: fuel prices in 160+ countries, toll roads, visa and vehicle-import rules, public and school holidays, travel hazards and wildfires, customs rules, power plugs, weather suitability scores, food cost index, currency rates, events, news and license plates of the world.
No API key, no registration, no dependencies — standard library only, Python 3.9+.
pip install openvan
Quick start
from openvan import OpenVan
ov = OpenVan(source="myapp.com") # source is optional: it lets us see and credit your project
# Cheapest diesel in the world right now, EUR per liter
for c in ov.fuel.cheapest("diesel", 5):
print(c["country_name"], c["prices"]["diesel"], c["currency"])
# Can a Russian passport enter Turkey, and for how long?
print(ov.visa.check("RU", "TR")["data"])
# Toll cost Rome → Paris for a van, as a EUR range
print(ov.tolls.route(["Rome", "Paris"], vehicle_class="van"))
# Best countries for vanlife weather today
for c in ov.weather.top(5):
print(c["code"], c["van_score"], c["score_label"])
# School holidays in Germany this autumn, by federal state
ov.holidays.country("DE", from_="2026-10-01", to="2026-12-31", kind="school")
With pandas
import pandas as pd
from openvan import OpenVan
ov = OpenVan()
fuel = pd.DataFrame.from_dict(ov.fuel.prices(), orient="index")
basket = pd.DataFrame.from_dict(ov.basket.list(), orient="index")
Resources
| Resource | Methods |
|---|---|
ov.fuel |
prices(), country(code), cheapest(fuel_type, limit), route_cost(waypoints, **options) |
ov.currency |
rates(), convert(amount, from_currency, to_currency) |
ov.basket |
list(), country(code), compare(from_country, to_country) — food cost index |
ov.weather |
score(code), all(), top(limit) — VanSky weather suitability |
ov.tolls |
countries(), country(code), route(waypoints, vehicle_class) |
ov.visa |
check(passport, destination), route(countries, passports), passport(code), vehicle(place) |
ov.holidays |
countries(), country(code, from_=, to=, kind=) |
ov.hazards |
country(code), fires((min_lon, min_lat, max_lon, max_lat)) |
ov.electricity |
countries(), country(code) — plug types and voltage |
ov.customs |
countries(), country(code, from_country=) |
ov.plates |
list(), country(code), types(code), validate(code, number), random(code), image_url(code, number) |
ov.events |
list(**filters), get(slug) |
ov.stories |
list(**filters), get(slug), search(query) |
Methods return the API's JSON as plain dict / list. Field reference:
interactive docs ·
OpenAPI spec.
Errors raise OpenVanError with status, url, body and the API's own message:
from openvan import OpenVan, OpenVanError
try:
OpenVan().tolls.route(["Atlantis", "Paris"])
except OpenVanError as e:
print(e.status, e.message) # 422 and the reason, e.g. no road route
License and attribution
Code: MIT. Data: CC BY 4.0 — credit it as
Data: OpenVan.camp with a link to https://openvan.camp/.
Also available: JavaScript SDK · MCP server for AI agents · all API docs.
Metadata
Release files for openvan 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openvan-0.1.0.tar.gz | 10.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openvan-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.7 kB
Release files / openvan-0.1.0.tar.gz
| Download URL | openvan-0.1.0.tar.gz |
|---|---|
| Size | 10.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70689693086707301a33881bceb43e515c7cbcf89697b0754cdc8fa930f3655d
|
|
BLAKE2b-256 checksum How to use checksums |
522c5801750165cb34346045c60be92a230abb8871a80f5a64bfa56cc5f9f25f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.
Transparency logRelease files / openvan-0.1.0-py3-none-any.whl
| Download URL | openvan-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3606df957437268d81b09f6d4e0f885a54da414efb4c2f7caf9cb73040ca163d
|
|
BLAKE2b-256 checksum How to use checksums |
a0ec3e2c9de78cb7f685877350390e3f1bcd5ba94fd7d92817b3feb2e23932ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.
Transparency log