Skip to content

Pumperly

Pumperly

Live at pumperly.com Docker Pulls GitHub Stars Release License: AGPL-3.0-or-later


Pumperly is an open-source map of fuel prices and EV chargers with a route planner on top. Pick a destination and it draws the route, lists every station along it with its price and the minutes a stop would add, and plans the cheapest places to fill up. Prices come straight from government and community sources in 22 countries, with no key to set. Use it at pumperly.com or run your own copy with Docker Compose and read Planning a route to see what it does with a trip.

Open pumperly.com Run it yourself

The map and the route

Each dot is a station, coloured by its price for the fuel you picked: green is the cheapest 5% on screen, purple the most expensive. See The map.

The Pumperly map over Lisbon on the diesel layer. Stations are coloured from green to purple by price, with the price legend and the max-price slider in the bottom-left corner.

Plan a route and the side panel lists the stations along it, sorted by price, detour or position. The max-detour slider hides the ones that cost more minutes than you allow. See Planning a route.

A diesel route from Lisbon to Porto. The side panel lists the stations along it with their prices, the extra minutes each one adds and the Cheapest and Balanced badges.

Open Plan fuel stops, give it your tank size, consumption and how full you start, and it picks the cheapest stops that get you there. The stops are numbered on the map. Added in v1.15.0.

The refuel planner open under the same route. It proposes one numbered stop near Lisbon, shows the fuel level before and after it, and the total fuel cost for the trip.

What it shows

  • Fuel stations with their latest prices for the fuel you choose: diesel, petrol, LPG, CNG, LNG, hydrogen, HVO and AdBlue. See Fuel types.
  • Live prices from 22 countries with no key to set, and from two more with a free key. 39 countries are supported in all; Coverage and status lists each one, its source and whether the source works today.
  • EV chargers from the official registries of Spain and Germany and from Open Charge Map elsewhere. See EV charging.
  • A station's popup: brand, address, price, when it was last updated, directions, and a link to share. See Station popup.
  • Routes with up to five stops and up to three alternatives, when Valhalla is configured; address search as you type, when Photon is configured.
  • Prices in any of 37 currencies, converted with the European Central Bank's daily rates; the interface in 17 languages. See Currencies and exchange rates.
  • Share links for a station or a route. See Share links and deep links.
  • A small HTTP API for stations, routes and statistics, used by the related projects.

How it runs

flowchart LR
    subgraph sources [Price and charger sources]
        GOV[Government open data]
        COM[Community and commercial feeds]
        OCM[Open Charge Map and national EV registries]
    end
    subgraph app [Pumperly app container, port 3000]
        SCH[Scheduler<br/>one timer per scraper]
        SCR[Scrapers]
        API[Next.js pages and API]
    end
    DB[(PostGIS<br/>stations and prices)]
    VAL[Valhalla<br/>routing, optional]
    PHO[Photon<br/>address search, optional]
    ECB[ECB daily exchange rates]
    TILES[OpenFreeMap<br/>map tiles]
    BR[Browser map]

    SCH --> SCR
    GOV --> SCR
    COM --> SCR
    OCM --> SCR
    SCR --> DB
    DB --> API
    API -.-> VAL
    API -.-> PHO
    API -.-> ECB
    API <--> BR
    TILES --> BR
  • One Next.js process serves the map, answers the API and runs every scraper on its own timer. See How scrapers work.
  • The image is drumsergio/pumperly on Docker Hub, for linux/amd64 and linux/arm64. It listens on port 3000 and runs as user id 1001.
  • Scrapers write to PostGIS. The map, the route list and the stats read from it.
  • Routes need Valhalla and address search needs Photon. Without them the map and its prices still work. Full stack with routing and geocoding runs all of it.
  • Run one copy of the app per database. Two copies would scrape every source twice.

What it does not do

  • It has EV charging prices for Germany only. Elsewhere the sources publish charger locations, not tariffs.
  • It has no fuel prices for the United States, only chargers. No national price feed exists.
  • It does not route without Valhalla, and its search box finds nothing without Photon. The shipped compose file starts neither.
  • It does not store prices for a paused or blocked source. The last good prices stay on the map, and each popup says how old they are.

Privacy

  • No accounts, no cookies for tracking, no analytics. The only cookie remembers your language. Your currency and theme are saved in the browser, not on the server.
  • Your position is used to centre the map and to fill in "My location" as the start of a route. It is sent to the server only as the start point of a route you ask for.
  • Address searches go to the Photon server the operator configured, and routes to the Valhalla server. On pumperly.com both are self-hosted.
  • The map tiles load from OpenFreeMap, which sees your tile requests like any map site.

Getting help

All pages

License

Pumperly is released under the AGPL-3.0-or-later license. Price and charger data keep the licence of their source; Fuel price sources and EV charging sources list them, and some allow only non-commercial use. If you run a public instance, read Data licences on a public instance first.