← Back to all posts
Coverage Open Data EV Charging

Beyond DATEX II: Folding Open Data into One European API

June 15, 2026 · 7 min read

DATEX II on the National Access Points is the backbone of NAPSPAN — 25 NAPs live today, every feed parsed into one normalized schema. But the NAP is not the whole map. A lot of operationally useful European mobility data never travels as DATEX II at all: it lives on municipal open-data portals, in community charging datasets, in national feeds that predate the ITS Directive plumbing. If we only ingested DATEX II, we’d miss it.

So we don’t. This past sprint we folded three non-DATEX sources into the same events / features GeoJSON schema the rest of the API speaks — and in doing so crossed the EU border for the first time, into Ukraine and Moldova. Here’s what landed and how it fits.

One Schema, More Channels

The point of NAPSPAN was never “a DATEX II proxy.” It’s a single normalized view of European road data — events for time-bounded incidents, features for points of interest like cameras, parking, and EV charging — regardless of how the source publishes. DATEX II is the most common input, not the only one. Every adapter, whatever it reads, ends at the same place: RFC 7946 GeoJSON, filterable by country, bbox, radius, and type.

That design is what makes adding a non-DATEX source a normal day rather than a fork in the architecture. A municipal JSON parking feed and a Bundesland DATEX II stream become the same kind of feature on the other side.

New sourceChannelWhat it addsLicense
Open Charge MapCommunity open datasetEV-charging registry across PT, RO, BG, SK, MT, MD & UACC BY-SA 4.0 (attributed)
Golemio (CZ)Municipal open dataCzech parking — live occupancy where publishedOpen data (attributed)
Kyiv Open DataMunicipal open dataParking & road closures → construction eventsCC BY 4.0

EV Charging, Past the Edge of the NAP

We’ve written before about AFIR Article 20, which obliges every charge-point operator to publish live per-connector status in DATEX II via the NAP. That’s the gold standard — and where a Member State carries it, NAPSPAN serves it. But AFIR telemetry is only as complete as each country’s NAP rollout, and several countries we wanted to cover don’t yet expose a mature EV feed at all.

Open Charge Map fills that gap. It’s the community-maintained, openly licensed registry of charging locations — coordinates, connector standards, and power ratings — and it reaches places the NAPs don’t yet. We pulled it for six more countries (Portugal, Romania, Bulgaria, Slovakia, Malta, Moldova) and for Ukraine, where it surfaced around 575 charging points on its own.

The honest distinction, surfaced in the data so you can tell them apart: AFIR-via-NAP gives you live status; Open Charge Map gives you the registry — where chargers are, what they are, how fast. Every charger carries a metadata.source_feed so a routing or roaming integration knows exactly which guarantee it’s getting.

GET /api/v1/features?type=ev_charging&country=UA

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": { "type": "Point", "coordinates": [30.5234, 50.4501] },
      "properties": {
        "type": "ev_charging",
        "name": "DTEK YASNO — Kyiv",
        "connectors": [ { "standard": "CCS", "power_kw": 150 } ],
        "metadata": { "source_feed": "openchargemap", "country": "UA" }
      }
    }
  ]
}

Czech Parking, From the City That Publishes It

The Czech Republic was already a live NAP for us on the events side. What it didn’t carry was parking — so we went to the source the cities actually use: Golemio, the open-data platform behind Prague and a growing set of Czech municipalities. It aggregates parking inventory nationally and, for the cities that instrument their lots, live occupancy.

That “for the cities that instrument their lots” matters, and we don’t paper over it. Most of the thousands of Czech parking records are static inventory — location, capacity, type. A subset (Liberec and other korid-managed lots today) reports live free-space counts. Where a live count exists, it’s on the feature; where it doesn’t, the feature says so rather than implying a freshness it doesn’t have. A dispatcher should never have to guess whether “no occupancy field” means full or means unknown.

Crossing the EU Border

Ukraine and Moldova are the first countries NAPSPAN covers that sit outside the EU 27 + UK + EFTA frame the rest of the platform was built around. Neither runs an ITS-Directive National Access Point, so there is no DATEX II to normalize — the data comes from open sources instead.

For Kyiv, that’s the city’s own open-data portal (CC BY 4.0): off-street and on-street parking, plus published road closures, which we map into the same construction event type a DATEX II roadworks record becomes. A closure in Kyiv and a roadworks zone in Bavaria are the same shape of event by the time they reach you — same fields, same filters, same map layer.

None of this changes the contract. ?country=UA or ?country=CZ behaves exactly like ?country=DE. The schema doesn’t know — or need to know — that one feed was DATEX II and another was municipal JSON. That’s the whole point of normalizing at the edge.

Licensing, Up Front

Every source we add goes through the same gate before it ships: classify the license, record the attribution, and respect any redistribution limit. The three sources here are clean open-data channels — Open Charge Map under CC BY-SA 4.0, Kyiv under CC BY 4.0, Golemio under its open-data terms — and each is credited in our data sources. When a source’s terms don’t permit redistribution, it doesn’t get served, full stop. Coverage is worth nothing if it’s not coverage you can legally build on.

What This Adds Up To

The NAP backbone keeps growing toward the full EU 27 + UK + EFTA. Alongside it, the open-data and community channels let us reach the data the NAPs don’t carry yet — municipal parking, EV-charging coverage in the gaps, and now two countries beyond the Union — without bolting on a second API to query them through. One schema, one set of filters, more of the continent in it.

Try It

One schema, the whole continent — DATEX II or not

Query EV charging, parking, and incidents across Europe — now past the EU border — in one normalized GeoJSON API. Free 14-day trial. No card.

Get Free API Key Explore the Map