Skip to content

Coverage and status

This page lists every country Pumperly supports, where its data comes from and whether that source works today. Use it to decide which countries to enable and to tell a broken source from a broken install.

Pumperly has two kinds of data. Fuel prices come from one scraper per country: a scraper is the piece of code that downloads a source and writes its stations and prices to the database. EV charging locations come from Open Charge Map for every country, plus official registries for Spain and Germany.

Status labels

Every source on this page carries one of these labels. The label describes what the scraper does on each run today.

Status What the scraper does
Running Downloads the source and writes fresh prices on every run.
Needs a key Works once you set an API key. Without it, every run fails and writes nothing.
Paused Still scheduled, but the source refuses the request. Each run fails before it writes anything.
Blocked The source actively turns scrapers away. Each run fails and writes nothing.
Down The source no longer answers, or does not answer from where the server runs. Each run fails and writes nothing.

A run that fails never deletes data. The prices from the last good run stay on the map, and each station's popup shows how old its price is. What a failing source looks like explains how to spot one.

Fuel prices

The key column is the name the scheduler and the logs use for the scraper. The every column is the default interval between runs, from DEFAULT_INTERVALS in src/instrumentation-node.ts. The default fuel column is the fuel the map selects when it opens on that country, from src/lib/config.ts.

Europe

Country Key Source Currency Every Default fuel Status
Austria AT E-Control Spritpreisrechner EUR 2 h B7 Running
Belgium BE ANWB EUR 6 h E10 Running
Bosnia and Herzegovina BA Fuelo.net BAM 12 h B7 Paused
Bulgaria BG Fuelo.net EUR 12 h B7 Paused
Croatia HR MZOE EUR 12 h B7 Running
Cyprus CY Consumer Protection Service observatory EUR 6 h E5 Running
Czech Republic CZ Fuelo.net CZK 12 h E5 Paused
Denmark DK FuelPrices.dk DKK 6 h E10 Needs a key
Estonia EE Fuelo.net EUR 12 h E5 Paused
Finland FI polttoaine.net EUR 12 h E10 Running
France FR data.economie.gouv.fr EUR 1 h E10 Running
Germany DE Tankerkoenig EUR 1 h E5 Needs a key
Greece GR FuelGR EUR 12 h B7 Running
Hungary HU Fuelo.net HUF 12 h E5 Paused
Iceland IS Gasvaktin ISK 6 h B7 Running
Ireland IE Pick A Pump EUR 12 h B7 Blocked
Italy IT MIMIT EUR 12 h B7 Running
Latvia LV Fuelo.net EUR 12 h E5 Paused
Lithuania LT Fuelo.net EUR 12 h E5 Paused
Luxembourg LU ANWB EUR 12 h E10 Running
Moldova MD ANRE MDL 12 h B7 Running
Netherlands NL ANWB EUR 6 h E10 Running
North Macedonia MK Fuelo.net MKD 12 h B7 Paused
Norway NO DrivstoffAppen NOK 6 h E5 Down
Poland PL Fuelo.net PLN 12 h E5 Paused
Portugal PT DGEG EUR 12 h B7 Running
Romania RO Peco Online RON 12 h B7 Running
Serbia RS NIS and cenagoriva.rs RSD 12 h E5 Running
Slovakia SK Fuelo.net EUR 12 h E5 Paused
Slovenia SI goriva.si EUR 6 h B7 Running
Spain ES MITECO EUR 12 h B7 Running
Sweden SE bensinpriser.nu SEK 12 h E5 Running
Switzerland CH Fuelo.net CHF 12 h E5 Paused
Turkey TR Fuelo.net TRY 12 h B7 Paused
United Kingdom GB CMA open data GBP 4 h E5 Running

For the Fuelo countries the currency column is the scraper's fallback. The Fuelo scraper reads the currency from each price label and only uses the fallback when the label shows none it recognises.

Outside Europe

Country Key Source Currency Every Default fuel Status
Argentina AR Secretaría de Energía ARS 12 h E5 Down from Europe
Australia, Western Australia AU FuelWatch AUD 12 h E10 Running
Australia, New South Wales AU_NSW FuelCheck AUD 12 h E10 Needs a key
Mexico MX CRE MXN 12 h E5 Running
Taiwan TW CPC Corporation TWD 12 h E5 Running

The United States has no fuel prices. It has EV charging locations only.

Notes on the statuses

Paused: the twelve Fuelo countries. Switzerland, Poland, the Czech Republic, Hungary, Bulgaria, Slovakia, Estonia, Latvia, Lithuania, Bosnia and Herzegovina, North Macedonia and Turkey all come from Fuelo.net. Fuelo answers the scraper's station-list request with HTTP 403, and its robots.txt disallows the endpoint. Pumperly respects that. The scraper stays scheduled, fails on its first request, and the prices it last wrote stay frozen on the map. No replacement source is in place for these countries.

Blocked: Ireland. Pick A Pump rejects scrapers with HTTP 403, and its robots.txt disallows them. No open alternative source exists, so Irish prices stay frozen.

Down: Norway. The DrivstoffAppen public API is retired. Its old endpoints answer HTTP 404, and its successor requires authorisation Pumperly cannot obtain. Norway has no official station-level price dataset. The scraper keeps sending one request per run, so Norway recovers on its own if the public API returns.

Down from Europe: Argentina. The government server at datos.energia.gob.ar drops connections from European addresses. The scraper works from a server in the Americas.

Needs a key: Germany. The Tankerkoenig API requires a free TANKERKOENIG_API_KEY. Without it, every German fuel run fails. German EV chargers need no key.

Needs a key: Denmark. FuelPrices.dk requires a free FUELPRICES_DK_API_KEY. Without the key, the scraper falls back to the DrivstoffAppen API, which is the same retired API as Norway's, so the fallback fails too.

Needs a key: New South Wales. FuelCheck requires both NSW_FUEL_API_KEY and NSW_FUEL_API_SECRET. Without them only Western Australian prices update. The two Australian states are separate scrapers, so one failing never touches the other's prices.

API keys explains how to get each key and where to set it.

EV charging

EV chargers come from three sources. Every fuel country above also gets EV chargers, and so does the United States.

Region Key Source Every Needs
Every supported country and the United States EV_<code>, for example EV_FR Open Charge Map 24 h PUMPERLY_OCM_API_KEY
Spain EV_ES_REVE Mapa REVE 1 h PUMPERLY_REVE_API_KEY
Germany EV_DE_BNETZA BNetzA Ladesäulenregister 24 h nothing

Spain and Germany each use exactly one EV source at a time, never both:

  • Spain uses Mapa REVE when PUMPERLY_REVE_API_KEY is set, and Open Charge Map otherwise.
  • Germany uses the BNetzA register by default. Set PUMPERLY_DE_EV_SOURCE=ocm to use Open Charge Map instead.

Without PUMPERLY_OCM_API_KEY, the Open Charge Map scrapers still run on schedule but write nothing. German chargers from BNetzA still load, because that source needs no key.

EV chargers have no prices. None of the three sources publishes a per-litre price, and per-kWh tariffs do not fit the price model. EV charging sources covers each source in detail.

Community datasets

Places with no source to scrape can be added as committed data files under src/scrapers/data/. Each dataset registers its own scraper, keyed STATIC_<SOURCE>, and writes only its own rows. The repository ships with no datasets registered yet. src/scrapers/data/README.md explains the format, and Adding a country covers the wider process.

Choosing what runs

By default every fuel scraper runs, including both Australian states. Each country also gets one EV source: Open Charge Map everywhere, including the United States, except that Germany uses the BNetzA register and Spain uses Mapa REVE when its key is set. These settings narrow that down:

Setting Effect
PUMPERLY_ENABLED_COUNTRIES Comma-separated country codes. Each code enables its fuel scraper and its EV scraper. US enables EV chargers for the United States.
PUMPERLY_EV_ENABLED=0 Turns off every EV scraper, including Mapa REVE and BNetzA.
PUMPERLY_SCRAPE_INTERVAL_<KEY> Sets one scraper's interval in hours, using the key from the tables above. 0 stops that scraper.
PUMPERLY_SCRAPE_INTERVAL_HOURS Sets the interval for every scraper that has no per-key override. 0 stops all automatic scraping.

Listing AU does not enable New South Wales

PUMPERLY_ENABLED_COUNTRIES matches scraper keys exactly. AU enables the Western Australia scraper only. To keep New South Wales, list AU_NSW as well, for example PUMPERLY_ENABLED_COUNTRIES=AU,AU_NSW.

Stop requests to sources that refuse them

A Paused, Blocked or Down scraper still sends requests on every run. To stop them, set its interval to 0. For example, PUMPERLY_SCRAPE_INTERVAL_IE=0 stops the Irish scraper, and PUMPERLY_SCRAPE_INTERVAL_AU_NSW=0 stops New South Wales if you have no key. The last prices those scrapers wrote stay in the database.

Countries and scrape schedule covers these settings in full, and Environment variables lists their defaults.

What a failing source looks like

After every run the scheduler logs one summary line per scraper. A healthy run reports OK:

[scraper] FR: OK — 1234 stations, 5678 prices in 12.3s

A failing run reports its error count instead, and the scraper's own lines above it say why:

[scraper] IE: 1 error(s) — 0 stations, 0 prices in 12.3s

The flow below shows what each outcome does to the data.

flowchart TD
    A[Scheduled run starts] --> B{Source answers<br>with usable data?}
    B -- No --> C[Run fails, error logged]
    C --> D[Nothing written.<br>Last prices stay on the map]
    B -- Yes --> E[Prices checked against<br>plausible ranges]
    E --> F[Stations upserted.<br>This source's prices replaced in one transaction]

A source that returns an answer with no stations in it is treated as a failure too, so an empty reply can never wipe a country. How scrapers work explains the full run, and Monitoring and troubleshooting covers reading the logs.