European toll roads, vignettes, tunnels & bridges — JSON & CSV
All endpoints require a valid API key. Pass it via:
// HTTP Header (recommended) X-API-Key: your_api_key_here // Or query parameter ?api_key=your_api_key_here
Rate limit: 1,000 requests/day. Check remaining quota via the status endpoint.
/api/toll/| Param | Type | Description |
|---|---|---|
format optional |
json | csv |
Response format. Default: json |
country optional |
string | ISO 3166-1 alpha-2 code. Comma-separated for multiple: GR,AT,FR |
type optional |
string | vignette | gate | tunnel | bridge | ticket_barrier |
barrier optional |
string | mainline | ramp |
search optional |
string | Search toll names and info (partial match) |
fields optional |
string | Comma-separated fields to include. Available: id, country_code, type, barrier_type, name, price_eur, price_local, currency, info, lat, lng |
page optional |
int | Page number. Default: 1 |
per_page optional |
int | Results per page (1–500). Default: 100 |
GET https://fuel-prices.eu/api/toll/?api_key=YOUR_KEY
GET https://fuel-prices.eu/api/toll/?api_key=YOUR_KEY&country=GR&format=csv
GET https://fuel-prices.eu/api/toll/?api_key=YOUR_KEY&country=AT,CZ,SK,HU&type=vignette
GET https://fuel-prices.eu/api/toll/?api_key=YOUR_KEY&search=tunnel
GET https://fuel-prices.eu/api/toll/?api_key=YOUR_KEY&fields=name,country_code,price_eur,lat,lng
curl -H "X-API-Key: YOUR_KEY" \ "https://fuel-prices.eu/api/toll/?country=FR&type=gate"
import requests resp = requests.get( "https://fuel-prices.eu/api/toll/", headers={"X-API-Key": "YOUR_KEY"}, params={"country": "FR", "type": "gate"} ) data = resp.json() print(f"Found {data['total']} French toll gates") for toll in data["data"]: print(f" {toll['name']}: €{toll['price_eur']}")
{
"dataset": "toll_infrastructure",
"version": "2026.1",
"updated": "2026-03-09",
"total": 342,
"page": 1,
"per_page": 100,
"pages": 4,
"filters": {},
"data": [
{
"id": 13,
"country_code": "AT",
"type": "tunnel",
"barrier_type": "mainline",
"name": "Brenner Pass (A13)",
"price_eur": 12.50,
"price_local": null,
"currency": "EUR",
"info": "Brenner Pass (2026)",
"lat": 47.0094,
"lng": 11.5065
},
...
]
}
| Field | Type | Description |
|---|---|---|
id | int | Unique toll point ID |
country_code | string | ISO 3166-1 alpha-2 (e.g. FR, AT, GR) |
type | enum | vignette, gate, tunnel, bridge, ticket_barrier |
barrier_type | enum | mainline (primary toll) or ramp (entry/exit) |
name | string | Toll point name |
price_eur | decimal | Price in EUR |
price_local | decimal|null | Price in local currency (if non-EUR) |
currency | string | Local currency code (EUR, CHF, HUF, etc.) |
info | string|null | Additional details (validity, official site, etc.) |
lat | decimal|null | Latitude (WGS84). Null for vignettes. |
lng | decimal|null | Longitude (WGS84). Null for vignettes. |
The dataset covers toll infrastructure across 20+ European countries including Austria, Belgium, Bulgaria, Croatia, Czech Republic, Denmark, France, Germany, Greece, Hungary, Ireland, Italy, Moldova, Netherlands, Poland, Portugal, Romania, Serbia, Slovakia, Slovenia, Spain, Switzerland, and Turkey.
Data is verified and updated regularly. Prices reflect 2026 rates for standard passenger vehicles (Category 1 / Class 2A).
| Code | Meaning |
|---|---|
401 | Invalid or missing API key |
403 | Subscription inactive |
400 | Invalid parameter value |
429 | Daily rate limit exceeded |
Questions about the data, coverage, or your subscription? Email hi@fuel-prices.eu