Skip to content

Open data · Park & Keep

Open airport parking index for Europe

October 2026 edition. Every record carries its verification date; every price carries its source, date and collection method.

airports
46
airports
countries
8
countries
car parks listed
521
car parks listed
of records report a shuttle
70%
of records report a shuttle
of records report a valet service
46%
of records report a valet service
dated public prices
212
dated public prices
price collection date
12 October 2026
price collection date

CC BY 4.0 licence: free reuse, including commercial, with attribution.

Aggregates by airport

This table shows only aggregates (minimum, median, maximum) for each length of stay with at least 3 sourced and dated prices in a single currency, as on the airport pages; the detail for each car park is in the JSON and CSV files. 13 airports have collected prices so far.

Prices: median in bold, then minimum – maximum and number of prices, in the currency shown by the operators.

AirportCountryCar parksShuttleValetMedian distance3 days7 days14 days
Vienna-SchwechatVIEAustria1275%17%3.8 km———
Brussels-ZaventemBRUBelgium16100%38%4.2 km€33€22.46 – €43 · 9 prices€46€32.91 – €75 · 9 prices€87€61.71 – €125 · 9 prices
Charleroi Brussels SouthCRLBelgium1486%21%2.9 km€36€26 – €49 · 7 prices€50€30 – €65 · 8 prices€66€64 – €90 · 5 prices
GenevaGVASwitzerland1182%55%2.5 kmCHF 62CHF 30 – CHF 115 · 5 pricesCHF 108.1CHF 70 – CHF 195 · 5 pricesCHF 180CHF 140 – CHF 335 · 5 prices
ZurichZRHSwitzerland1155%36%4.4 kmCHF 100CHF 80 – CHF 109 · 5 pricesCHF 156CHF 120 – CHF 159 · 5 pricesCHF 245CHF 180 – CHF 268 · 4 prices
Berlin-BrandenburgBERGermany1080%10%4.8 km———
DüsseldorfDUSGermany1362%85%3.1 km———
FrankfurtFRAGermany1267%83%9.4 km———
HamburgHAMGermany1191%45%3 km———
HanoverHAJGermany1182%36%3 km———
Karlsruhe/Baden-BadenFKBGermany933%33%0.9 km———
Cologne-BonnCGNGermany1173%45%7.2 km———
Leipzig/HalleLEJGermany1070%20%3 km———
MunichMUCGermany1694%50%4.1 km———
NurembergNUEGermany956%0%3.4 km€49€49 – €64 · 3 prices€49€49 – €79 · 3 prices€78€78 – €149 · 3 prices
StuttgartSTRGermany1573%67%3.8 km€63€38 – €83 · 4 prices€77.5€54 – €90 · 4 prices€117.5€82 – €155 · 4 prices
Alicante-ElcheALCSpain1580%60%1.6 km———
BarcelonaBCNSpain1362%77%4.2 km———
Madrid-BarajasMADSpain1471%71%5.6 km———
MalagaAGPSpain1979%37%2.1 km€36.5€31 – €59 · 6 prices€64.5€40.5 – €89 · 6 prices€72€65 – €132.5 · 5 prices
Palma de MallorcaPMISpain888%50%2 km€25.95€22 – €31 · 5 prices€40.45€34 – €56 · 5 prices€73.56€46 – €93 · 4 prices
SevilleSVQSpain838%38%9.8 km———
ValenciaVLCSpain967%56%1.6 km———
Bordeaux-MérignacBODFrance956%67%2.4 km€28€27 – €62 · 4 prices€45.5€42 – €82 · 6 prices€72.94€69 – €112 · 5 prices
Lyon-Saint-ExupéryLYSFrance978%44%4.3 km———
Marseille-ProvenceMRSFrance1155%55%2.3 km———
Nantes-AtlantiqueNTEFrance1567%33%1.8 km———
Nice-Côte d'AzurNCEFrance813%50%1.1 km———
Paris-BeauvaisBVAFrance863%0%2.4 km———
Paris-Charles-de-GaulleCDGFrance1369%77%5.9 km———
Paris-OrlyORYFrance1040%60%3.1 km€51€34 – €70 · 4 prices€69€51 – €90 · 5 prices€105€82 – €125 · 5 prices
Toulouse-BlagnacTLSFrance863%38%1.2 km———
BariBRIItaly1080%50%4.8 km———
Bergamo-Orio al SerioBGYItaly1369%23%1.7 km———
BolognaBLQItaly1471%43%1.3 km€41€26.9 – €50 · 7 prices€66€46.9 – €79 · 7 prices€117.5€81.9 – €149 · 5 prices
CataniaCTAItaly10100%50%1.9 km———
Milan-LinateLINItaly1070%20%2.5 km———
Milan-MalpensaMXPItaly1587%27%3.7 km———
Naples-CapodichinoNAPItaly1070%80%1.5 km———
PisaPSAItaly944%44%1.7 km———
Rome-FiumicinoFCOItaly1486%71%4.9 km———
Turin-CaselleTRNItaly967%22%2.2 km———
Venice-Marco PoloVCEItaly1182%36%2 km———
Amsterdam-SchipholAMSNetherlands1275%42%4.4 km€54.48€42.95 – €112.49 · 6 prices€87.48€51.99 – €137.49 · 6 prices€150.99€86.99 – €177.49 · 6 prices
EindhovenEINNetherlands825%50%1.8 km€74.75€59.99 – €89.95 · 4 prices€95.75€73 – €109.95 · 4 prices€134.22€104 – €171.5 · 4 prices
Rotterdam-The HagueRTMNetherlands813%63%1 km———

Browse car parks by airport

Each airport has its own page: every listed car park, ranked by distance, with its attributes.

All airports

Licence and attribution

The dataset is published under the Creative Commons Attribution 4.0 International licence (CC BY 4.0). You may copy, redistribute and adapt it, including for commercial purposes, provided you credit the source.

Attribution to copy

Source: Park & Keep — Open airport parking index for Europe (October 2026), CC BY 4.0, https://parkandkeep.com/en/data/airport-parking-index

Suggested citation

Park & Keep (2026). Open airport parking index for Europe, October 2026 edition [dataset]. CC BY 4.0 licence. https://parkandkeep.com/en/data/airport-parking-index

Use this data in Claude or any MCP client

Add this MCP server to your client to query the index (car parks, attributes, price aggregates):

https://parkandkeep-mcp.vercel.app/mcp

Methodology

Scope

The file covers the public, unclaimed records of the Park & Keep directory (status “listed”) attached to the comparator's active airport hubs. Attributes, addresses and distances come from public sources; each record states the date it was last verified.

Price collection

Prices are read on the operator's own website, never on a comparison site or a third-party booking platform: a record whose website is an aggregator, or redirects to one, is left out. The crawler follows robots.txt (RFC 9309), sends at most one request every 2 seconds per host, gives up on a page after 20 seconds and identifies itself with a declared user agent. It reads the home page and then at most three “rates” links on the same domain.

Checking each price

A price read on a rates page is kept only if its amount and the matching length of stay appear word for word in the page excerpt stored with the collection. For a quote, the amount appears word for word in the excerpt and the stay dates and times are checked in the form as redisplayed by the site; without that check, the quote is left out. The total kept is what the customer pays for that stay, mandatory fees included (pick-up, airport access fee, booking fee); a total shown excluding VAT is left out, never converted. Some sites count calendar days (“8 days” for a Monday-to-Monday stay): the stay measured is the same. No price is extrapolated: a daily rate is never multiplied to produce a stay price. “From” prices (dès, ab, from…) are not stay prices: they are left out.

Quotes from the operator's form

When the operator publishes a booking form, the collection requests a quote with a headless Chromium browser that identifies itself with the same declared user agent and blocks advertising and analytics trackers. robots.txt is checked before every page, every form action and every API call; at most one action every 2 seconds across all quote engines. Reference stay: by default, the first Monday at least 30 days after the collection date, at 10:00, for 3, 7 and 14 days (exact date published in price.stay_start, method in price.method). The crawler reads the total shown on the results page, never clicks “book” or “pay” and never enters any identity details. A captcha or a login page ends the quote and stops that engine for the rest of the collection.

Quote engines covered

HelloApp, ParkingPro (MyParking), Aena (parking.aena.es), eParkingWeb, Car Park Booking System, the EazzyPark and Euro-Parking booking module, Ciao Park, BibiPark, ParkStar, ParkinGO, FastParking, Grupo LowCost Parking, and the own forms of five operators in Geneva and Charleroi.

Export and automatic guard

Never exported: affiliate links and networks, claim data, phone numbers, Google Maps ratings and reviews, raw sources. An automatic check (--check) blocks publication if any of these fields or a Google Maps URL appears, if the header is incomplete or if the record counts of the JSON and CSV differ.

Aggregates

Per airport and per length of stay: minimum, median and maximum, published from 3 sourced and dated prices in a single currency. The comparator's airport pages show only these aggregates.

Corrections and removal

An operator can ask for its data to be corrected or removed by writing to contact@parkandkeep.com.

Reading the data

  • Prices are those publicly displayed on the stated date; the rate you pay depends on your dates and options.
  • The price collection covers the airports shown with values in the table; for the others, the file provides attributes, distances and verification dates.
  • A null field means “not stated in the source”.
  • Currencies are published as displayed (EUR, CHF), without conversion.
  • In the CSV, nested fields are flattened: airport.iata becomes airport_iata, attributes.shuttle becomes shuttle, price.d3 becomes price_d3.

Field dictionary

Record (listings[])

FieldDescription
idStable record identifier.
airport.iataIATA code of the airport.
airport.cityAirport name (city).
airport.countryAirport country (ISO 3166-1 alpha-2 code).
airport.verticalHub category (AIRPORT).
namePublic name of the car park.
cityTown of the car park.
postal_codePostcode of the car park.
latLatitude (WGS 84).
lngLongitude (WGS 84).
distance_kmDistance to the airport, in kilometres.
attributes.shuttleShuttle to the airport (true / false / null = not stated in the source).
attributes.valetValet service.
attributes.coveredCovered spaces.
attributes.open_24h24-hour access.
attributes.keys_keptKeys kept by the operator.
attributes.ev_chargingElectric vehicle charging.
attributes.online_bookingOnline booking.
attributes.online_paymentOnline payment.
websiteOperator's official website.
last_verifiedDate the record was last verified (most recent date among its sources, otherwise date of last update).
price.d3Public price collected for a 3-day stay.
price.d7Public price collected for a 7-day stay.
price.d14Public price collected for a 14-day stay.
price.currencyCurrency of the price, as displayed (no conversion).
price.source_urlURL of the operator's page where the price was read.
price.checked_atDate the price was collected.
price.stay_startStart of the reference stay when the price comes from a quote (local date and time).
price.methodCollection method: html_text:* (rates page), quote:* (quote from the operator's public booking form), “-” when no price.

Airport (airports[])

FieldDescription
iataIATA code of the airport.
cityAirport city.
countryCountry (ISO 3166-1 alpha-2 code).
verticalHub category (AIRPORT).
parkingsNumber of records for the airport.
share_shuttleShare of records with a confirmed shuttle (0 to 1).
share_valetShare of records with a confirmed valet service (0 to 1).
share_coveredShare of records with confirmed covered spaces (0 to 1).
distance_km_medianMedian distance to the airport (km).
distance_km_minShortest distance to the airport (km).
prices_collectedNumber of records with at least one collected price.
pricesAggregates per length of stay (d3, d7, d14): min, median, max, n; null below 3 prices.

File header

FieldDescription
generated_atDate and time the file was generated (UTC, ISO 8601).
licenseLicence of the dataset.
attributionAttribution statement to reuse.
method_urlPage describing how Park & Keep ranks car parks.
countNumber of records in `listings`.