# Germany EV Charging Stations — Official Charge Point Register (`nexgensignal/germany-ev-charge-point-records`) Actor

Every public EV charging facility in Germany's official Bundesnetzagentur register: operator, location, coordinates, power, charger type, plugs, EVSE IDs, payment and opening hours. Filter by state, city, power or date. Part of NexGen Signal — official-source data products

- **URL**: https://apify.com/nexgensignal/germany-ev-charge-point-records.md
- **Developed by:** [NexGen Signal](https://apify.com/nexgensignal) (community)
- **Categories:** Business, Travel, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $33.50 / 1,000 charge point records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Germany EV Charging Stations — Official Charge Point Register

**Official source. No API key. Pay per record.**

This actor gives you Germany's official register of public electric-vehicle charging stations — the **Ladesäulenregister** kept by the Bundesnetzagentur (the Federal Network Agency). Operators of publicly accessible charging points must report them under the German Charging Station Ordinance, and the agency publishes the register as open data. Each record is one charging facility: operator, address, coordinates, charger type, rated power, number of charging points, commissioning date, payment methods, opening hours, and each charging point's plug types, power, EVSE ID and meter public key.

The register read on 27 September 2026 was dated **1 September 2026** and listed **116,443 charging facilities**. After the privacy rule below, **109,500** are delivered: 30,734 fast chargers and 78,766 normal chargers with 199,498 charging points between them. The largest states are Bayern (21,412), Nordrhein-Westfalen (21,093) and Baden-Württemberg (17,902).

Use it to:

- **Map and count charging infrastructure** by state, district, city or postcode.
- **Track new openings** — sort by commissioning date, or set `commissionedFrom`.
- **Profile operators** — every EnBW, Tesla, Ionity, Aral or municipal-utility site in one filter.
- **Find high-power charging** — `chargerType: "fast"` with `minPowerKw: 150`.

### Who buys this and for what job

- **Charge-point operators, utilities and investors** analysing competitors' networks and white spots for new sites.
- **Fleet managers, logistics and car-rental companies** planning routes and depots around fast charging.
- **Navigation, mobility and EV-app developers** who need an official, clean station list with EVSE IDs.
- **Retailers, hotels and real-estate owners** checking charging coverage near their locations.
- **Consultants, researchers and journalists** measuring the German charging roll-out.

### Sample output

![Sample output — Germany EV Charging Stations](https://api.apify.com/v2/key-value-stores/IXCaMKjxSmUTLHhmq/records/germany-ev-charge-point-records.png)

```json
{
  "record_id": "DE-LSR:1164818",
  "charger_id": "1164818",
  "operator": "EnBW mobility+ AG und Co.KG",
  "display_name": null,
  "status": "In Betrieb",
  "charger_type": "Schnellladeeinrichtung",
  "charging_points": 2,
  "rated_power_kw": 200,
  "commissioned_on": "25.08.2026",
  "street": "Ludwig-Koch-Straße",
  "house_number": "3",
  "address_extra": null,
  "postcode": "81249",
  "city": "München",
  "district": "Kreisfreie Stadt München",
  "state": "Bayern",
  "latitude": 48.135322,
  "longitude": 11.413742,
  "location_description": "Höffner, 81249 München-Freiham, Ludwig-Koch-Straße",
  "parking_information": "Keine Beschränkung",
  "payment_methods": "Onlinezahlungsverfahren;RFID-Karte;Debitkarte (Lesegerät);Debitkarte (NFC);Kreditkarte (Lesegerät);Kreditkarte (NFC);Sonstige",
  "opening_hours": "247",
  "opening_days": "Montag; Dienstag; Mittwoch; Donnerstag; Freitag; Samstag; Sonntag",
  "opening_times": "00:00-23:59; 00:00-23:59; 00:00-23:59; 00:00-23:59; 00:00-23:59; 00:00-23:59; 00:00-23:59",
  "commissioned_on_iso": "2026-08-25",
  "points": [
    {"point": 1, "plug_types": "DC Fahrzeugkupplung Typ Combo 2 (CCS)", "rated_power_kw": 200, "evse_id": "DE*EBW*E910906*1", "public_key": "3056301006072A8648CE3D0201…"},
    {"point": 2, "plug_types": "DC Fahrzeugkupplung Typ Combo 2 (CCS)", "rated_power_kw": 200, "evse_id": "DE*EBW*E910906*2", "public_key": "3056301006072A8648CE3D0201…"}
  ],
  "register_date": "2026-09-01",
  "source": "Bundesnetzagentur (German Federal Network Agency) — Ladesäulenregister, the register of publicly accessible charging points reported under the Ladesäulenverordnung (linked from https://www.bundesnetzagentur.de/DE/Fachthemen/ElektrizitaetundGas/E-Mobilitaet/Ladesaeulenkarte/start.html)",
  "licence": "Creative Commons Attribution 4.0 (CC BY 4.0) — the Bundesnetzagentur states: 'Die Daten sind durch eine Creative Commons Namensnennung 4.0 International Lizenz lizenziert' and asks for the credit 'Bundesnetzagentur.de'.",
  "attribution": "Source: Bundesnetzagentur.de, Ladesäulenregister (CC BY 4.0); reformatted by NexGen Signal.",
  "observed_at": "2026-09-28T03:31:36Z"
}
```

(The two public keys are shortened here; records carry them in full.)

### Pricing

| Apify plan | Price per record |
|---|---|
| Free | $0.05 |
| Bronze | $0.045 |
| Silver | $0.04 |
| Gold and above | $0.0335 |

You pay only for records delivered to your dataset. `maxRecords` caps what a run can cost: 500 records cost $25 on the Free plan. Filtering is free — the whole register is read on every run and you pay only for what matches.

### Input

| Field | What it does | Default |
|---|---|---|
| `states` | Federal states, in German (`Bayern`, `Nordrhein-Westfalen`, `Berlin`…) | all |
| `cities` | Towns, e.g. `München`, `Köln` | all |
| `postcodePrefixes` | Postcodes starting with these digits, e.g. `80` or `10115` | all |
| `operatorContains` | Operator or display name contains this text, e.g. `EnBW`, `Tesla`, `Stadtwerke` | none |
| `chargerType` | `all`, `fast` (Schnellladeeinrichtung) or `normal` | all |
| `minPowerKw` | Only facilities rated at least this many kW | none |
| `commissionedFrom`, `commissionedTo` | Commissioning date range (YYYY-MM-DD) | none |
| `sortBy` | `newest` or `oldest` commissioning date first, or register order | newest |
| `maxRecords` | Maximum records delivered and billed | 500 |

Example — high-power chargers opened in Bavaria this year:

```json
{"states": ["Bayern"], "chargerType": "fast", "minPowerKw": 150, "commissionedFrom": "2026-01-01", "maxRecords": 5000}
```

(On 27 September 2026 that returned 420 facilities; the largest operator was EnBW with 67.)

Example — municipal-utility charging in the Munich postcode area:

```json
{"postcodePrefixes": ["80", "81"], "operatorContains": "stadtwerke", "maxRecords": 5000}
```

(That returned 750 facilities.)

### Output

| Field | Meaning |
|---|---|
| `record_id`, `charger_id` | `DE-LSR:<ID>` and the register's Ladeeinrichtungs-ID |
| `operator`, `display_name` | Operator and the name shown on the agency's map |
| `status`, `charger_type` | e.g. `In Betrieb`; `Normalladeeinrichtung` or `Schnellladeeinrichtung` |
| `charging_points`, `rated_power_kw` | Number of charging points and rated power of the facility |
| `commissioned_on`, `commissioned_on_iso` | Commissioning date as published and as YYYY-MM-DD |
| `street` … `state`, `latitude`, `longitude` | Address, district, state and coordinates |
| `location_description`, `parking_information`, `payment_methods`, `opening_*` | As published |
| `points` | Up to six charging points: plug types, rated power, EVSE ID and public key |
| `register_date` | The register's own update date |
| `source`, `licence`, `attribution`, `observed_at` | Provenance on every record |

Field names are English; values are the register's, in German, trimmed of spaces. Coordinates and power are turned from German decimal commas into numbers.

### Cost guidance

A city is typically hundreds of facilities; a state runs from 719 (Saarland) to 21,412 (Bayern). The whole deliverable register (about 109,500 facilities) is about $3,670 on Gold, so most buyers filter by area, operator or power. New facilities ran at roughly 900–1,500 a month in 2026 (910 commissioned in January, 1,470 in February, 1,387 in April), so a monthly "new since last time" run is about $30–$50 on Gold. Recent months look smaller at first because operators report with a delay (August 2026 showed 657 in the 1 September file).

### Tips

- **New-site feed:** schedule a monthly run with `commissionedFrom` set to a few months back; operators report late, so re-reading recent months picks up late entries, and `record_id` stays the same for each facility.
- **Coverage maps:** use `latitude` and `longitude` with `rated_power_kw` to map fast-charging density by district or motorway corridor.
- **Operator share:** filter by `state` or `postcodePrefixes` and count facilities or charging points per `operator`.
- **Roaming and payments:** `points[].evse_id` gives the EVSE IDs used by roaming platforms, and `payment_methods` shows card and app support.

### How a run works

The actor checks robots.txt on both Bundesnetzagentur hosts (the data host serves none — HTTP 404 — which is recorded as "no policy", not as permission), reads the register page to find the newest CSV, downloads it (about 56 MB) and reads it in full. Records are pushed to your dataset first and charged only after they are delivered; if you set a maximum charge, the run stops cleanly when it is reached. Test runs took about 55 seconds. Every run saves a receipt (`RUN_RECEIPT`) with the robots decisions, register URL and date, rows read and rows withheld. If the site cannot be reached after several retries, the run ends with a clear message and nothing is charged.

### Honest limitations

- **Privacy rule: private operators are withheld.** Some operators are sole traders or private persons (the register even lists "Privatperson"). A facility is delivered only when its operator reads as an organisation — a legal form or an organisation word such as GmbH, AG, Stadtwerke, Gemeinde or Sparkasse. Sole traders (e.K., Einzelunternehmen, "Inh."), GbR partnerships and bare personal names are withheld whole: 6,943 facilities on 27 September 2026, including some real companies whose names carry no such word. Display names that read like a personal name are left blank (2,480 facilities, most of them brand names such as "Aral Pulse" that look like a first and last name).
- **Not every station is in it.** The agency says the ordinance does not capture all charging infrastructure; only operators who completed its reporting procedure are listed, so the real number of public chargers is higher.
- **Dated snapshot.** Each file carries its date (1 September 2026 when this was written), and operators report late, so the newest months fill in over later files. The update schedule is the agency's.
- **No live availability or prices.** The register says what exists, not whether it is free right now or what charging costs.
- **German values.** Status, charger type, plugs and payment methods are in German, as published.

### Licence and attribution

The Bundesnetzagentur states that the register data "sind durch eine Creative Commons Namensnennung 4.0 International Lizenz lizenziert" (CC BY 4.0) and asks users to credit "Bundesnetzagentur.de". Every record carries the credit *Source: Bundesnetzagentur.de, Ladesäulenregister (CC BY 4.0); reformatted by NexGen Signal.* This actor is not affiliated with or endorsed by the Bundesnetzagentur.

### Differentiation

EV-charging actors on the Store — such as parseforge/openchargemap-scraper, crawlerbros/plugshare-scraper and dataquarry/ev-charging-stations — read community or app databases. This actor reads the German government's own register: every reported public charging facility in one file, with the agency's power ratings, commissioning dates, EVSE IDs and meter public keys, under an open licence.

### The NexGen Signal family

Part of NexGen Signal — official-source data products, no API keys, pay per record. Related actors:

- [EU Vehicle CO2 Records — EEA New-Car Monitoring](https://apify.com/nexgensignal/eu-vehicle-co2-records)
- [NL Vehicle Fuel & Emission — by Powertrain](https://apify.com/nexgensignal/nl-vehicle-fuel-emission-records)
- [Spain Fuel Station Prices - MINCOTUR](https://apify.com/nexgensignal/es-fuel-station-price-records)
- [France Fuel Station Prices - roulez-eco](https://apify.com/nexgensignal/fr-fuel-station-price-records)
- [Italy Fuel Station Registry - MIMIT](https://apify.com/nexgensignal/it-fuel-station-registry-records)

# Actor input Schema

## `states` (type: `array`):

Only these states (German names). Leave empty for all of Germany.

## `cities` (type: `array`):

Only these towns (Ort), e.g. München, Köln.

## `postcodePrefixes` (type: `array`):

Only postcodes starting with these digits, e.g. 80 (Munich area) or 10115.

## `operatorContains` (type: `string`):

Only facilities whose operator or display name contains this text, e.g. EnBW, Tesla, Stadtwerke.

## `chargerType` (type: `string`):

The register's own classification.

## `minPowerKw` (type: `integer`):

Only facilities rated at least this many kW, e.g. 150 for high-power charging.

## `commissionedFrom` (type: `string`):

Optional. Only facilities commissioned on or after this day (YYYY-MM-DD).

## `commissionedTo` (type: `string`):

Optional. Only facilities commissioned on or before this day (YYYY-MM-DD).

## `sortBy` (type: `string`):

Which facilities come first when more match than your maximum.

## `maxRecords` (type: `integer`):

Maximum records delivered and billed in this run. The register holds about 110,000 deliverable charging facilities.

## Actor input object example

```json
{
  "states": [],
  "cities": [],
  "postcodePrefixes": [],
  "chargerType": "all",
  "sortBy": "newest",
  "maxRecords": 10
}
```

# Actor output Schema

## `results` (type: `string`):

The delivered records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxRecords": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgensignal/germany-ev-charge-point-records").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxRecords": 10 }

# Run the Actor and wait for it to finish
run = client.actor("nexgensignal/germany-ev-charge-point-records").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxRecords": 10
}' |
apify call nexgensignal/germany-ev-charge-point-records --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nexgensignal/germany-ev-charge-point-records"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/aOrxzM5CFbYy1z3oa/builds/w5RVtyQdnXg0mS8oR/openapi.json
