← Back to all posts
EV Charging AFIR Live Availability

“In Betrieb” Is Not “Free”. Live Connector Status Across Four European Countries.

September 10, 2026 · 8 min read

Every European country now publishes where its public charge points are. That was the easy half, and the Alternative Fuels Infrastructure Regulation is the reason it happened: since April 2024 operators owe machine-readable data about publicly accessible recharging points, and the national access points duly carry it.

So a planner asks “is there a charger at the depot turn-off?” and gets a confident yes. Then the driver arrives and both connectors are occupied, and the answer was worthless — not wrong, worthless. It answered a question about concrete.

The Field That Looks Like an Answer and Isn’t

Germany is the cleanest illustration, because its registry is genuinely good. We hold 142,280 active German charging stations, and 141,772 of them carry a status field. It reads In Betrieb.

That word means the station is registered and commissioned. It is a fact about paperwork and hardware, and it does not change when a van pulls up. Zero of those 142,280 German stations carry any availability field at all. A fleet system that reads status and colours the pin green has not made a small error — it has answered a different question and presented it as this one.

The distinction matters because the two fields sit side by side in the same object, one letter-perfect and useless, the other absent.

Where Live Status Actually Exists, and How Much of It

Measured in one transaction against production on 10 September 2026, 15:39 UTC: of 403,863 active charging stations we serve across Europe, 115,952 carry a live availability status, and 115,920 of those carry it per connector rather than per site. That is 307,741 individual connectors whose state is published.

It is four countries, and they arrive over four different national channels:

JurisdictionStations with live statusChannel
Netherlands78,817nl_ocpi
France20,242fr_irve_dynamique
Switzerland13,255ch_oicp
Lithuania3,638afir_dynamic

Read that table twice before building on it. Four jurisdictions out of the thirty-eight we carry — 28.7% of our charging rows, not “Europe”. Anyone selling you continental live charging coverage today is rounding up.

At that same moment the network read: 94,083 available, 9,703 full, 9,103 unknown, 3,063 out of service.

Those last two categories are the ones that get flattened by careless code. Unknown is not full, and out of service is neither — a charger that is broken will still be broken in twenty minutes, which is a different routing decision from one that is merely busy now. We keep the four states separate for exactly that reason.

Per Connector, Because a Station Is Not a Unit

A site with two connectors is not half-free or fully-free; it is one cable in use and one cable open, and those two facts have different owners, different power ratings and different timestamps. The array comes back as it is published:

curl -H "X-API-Key: $KEY" \
  "https://api.napspan.com/api/v1/features?type=ev_charging&jurisdiction=NLD"
{
  "id": "NLD-ev-ALL-NLLOC016859",
  "name": "NL, Van der Meerstraat 20, 3863 AG Nijkerk",
  "latitude": 52.21755,
  "longitude": 5.472011,
  "properties": {
    "network": "Allego",
    "ports": 2,
    "connector_type": "IEC_62196_T2",
    "availability_status": "available",
    "available_points": 1,
    "occupied_points": 1,
    "unavailable_points": 0,
    "reported_points": 2,
    "availability_source": "nl_ocpi",
    "availability_updated_at": "2026-09-10T15:28:24Z",
    "refill_points": [
      { "id": "NLALLEGO0134202", "state": "occupied",  "status": "CHARGING",  "updated_at": "2026-09-10T15:28:24Z" },
      { "id": "NLALLEGO0134201", "state": "available", "status": "AVAILABLE", "updated_at": "2026-09-09T14:26:19Z" }
    ]
  }
}

Look at the two updated_at stamps in that array. They are the same station, and they are a day apart. The connector someone is actively using reported twenty seconds ago; its neighbour last said anything the previous afternoon. That is not a defect in the feed and it is not one in our ingestion — a connector reports when its state changes, so a quiet cable is a stale cable. It is, however, exactly the sort of thing a dashboard will average into a single meaningless “last updated” if nobody looks.

Three Things to Know Before You Build on It

Freshness is uneven, and one country cannot be aged at all. Of the 115,952 live rows, 102,697 carry an availability_updated_at. Only 21,828 of those — 19% — are inside the last hour; 87,532 are inside 24 hours; and the oldest stamp in the set is from 14 October 2023, a nearly three-year-old reading that is still, technically, a live status field. Set your own staleness threshold and enforce it. Switzerland's 13,255 stations publish no timestamp whatsoever, so they cannot be aged by us or by you; treat them accordingly.

The per-connector status strings are not normalised, on purpose. Across 307,741 connectors the same state arrives in three casings — AVAILABLE 139,907, available 47,238, Available 14,004 — and the same is true of unknown and occupied. We normalise the station-level availability_status into four values and pass the array through as the operator wrote it, because collapsing a vendor's string is how you silently lose a state nobody anticipated. Case-fold before you compare.

This is a live reading, not a reservation. An available connector is available to whoever reaches it first. Nothing in AFIR, OCPI or any national feed holds a bay for your driver, and a charger that was free when the route was planned is a probability by the time the vehicle arrives, not a promise.

The Same Call as Everything Else on the Corridor

Charging state is not a separate product. It arrives in the same /features schema, under the same jurisdiction filters, as the live truck-parking occupancy that answers the parallel question for diesel fleets, the cross-border truck bans and VMS signs, and the vehicle-class toll costs for the same corridor. One key, one schema, one set of jurisdiction codes — ISO 3166-1 alpha-3, so NLD and FRA, never NL or FR.

The point of normalising four national channels into one field set is not tidiness. It is that nl_ocpi, fr_irve_dynamique, ch_oicp and afir_dynamic are four different documents with four different vocabularies, and a fleet that wants “is the connector free” should not have to learn all four to find out — nor to discover, the hard way, that a fifth country answers a different question in a field with a similar name.

What This Does Not Do

Figures measured against production on 10 September 2026, 15:39 UTC, in a single transaction so they stay mutually consistent. Charging availability moves by the minute — the counts above describe that moment, and the shape of the finding rather than the numbers is what will still be true next week.

Try It

Ask whether the connector is free, not whether it exists

Live per-connector status for 115,952 charge points across four European countries, in the same API call as truck restrictions, tolls and parking — with the coverage limits stated up front. Free 14-day trial. No card.

Get Free API Key Read the Docs