# OpenChargeMap EV Station Scraper (`parseforge/openchargemap-scraper`) Actor

Scrapes electric vehicle charging station data from OpenChargeMap by geographic coordinates with a radius, or by country code. Returns each station as a flat row with connector types, network operator, and location details.

- **URL**: https://apify.com/parseforge/openchargemap-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### OpenChargeMap EV Station Scraper

**Scrape EV charging station data from OpenChargeMap by coordinates or country, up to a million stations per run.** Every station comes with its location, connector types, network operator, and charging speed. No login required for basic use.

Finding reliable, up-to-date EV charging station data across multiple networks is a fragmented mess. OpenChargeMap is the world's largest open registry, but querying it programmatically still means handling API keys and pagination. This Actor does that work for you, returning clean, structured data from any location or country you specify.

| Who uses it | What they scrape OpenChargeMap for |
|---|---|
| EV fleet operators | Map available charging stations along delivery routes. |
| Navigation app developers | Populate a POI database with verified charger locations and specs. |
| Market researchers | Analyze charging infrastructure density by region or network operator. |
| Sustainability consultants | Audit public charging availability for corporate electrification reports. |

### What it does

This Actor collects EV charging station data from OpenChargeMap by geographic coordinates with a radius, or by country code, and returns each station as a flat row.

- 📍 **Coordinate-based search:** Provide a latitude,longitude pair and a radius in kilometers to find stations near a point.
- 🌍 **Country-wide scraping:** Use a two-letter ISO country code to pull all stations in a country when coordinates are not needed.
- 🔌 **Full station details:** Each result includes connector types, power levels, network operator, and usage status.
- 🔑 **Bring your own API key:** A shared key is included for testing, but you can use your own free OpenChargeMap key for higher rate limits.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with OpenChargeMap data

**🚚 Plan EV fleet routes.**

A logistics company scrapes stations along a highway corridor to ensure their electric vans have adequate fast-charging stops.

**📱 Build a charger finder app.**

A developer pulls fresh station data for a city to seed a mobile app's map of CCS and CHAdeMO connectors.

**📊 Compare regional infrastructure.**

A policy analyst scrapes all stations in Germany and France to compare charger density and network dominance.

**🔍 Audit network coverage.**

A consultant extracts stations filtered by a specific network operator to verify its claimed coverage in a metro area.

### Why choose this scraper

|  | What you get |
|---|---|
| **No raw API wrangling** | The Actor handles pagination, error retries, and response parsing for you. |
| **Fixed, flat schema** | Every station is returned as a predictable row, ready for CSV, JSON, Excel, or XML export. |
| **Global coverage** | Access OpenChargeMap's registry of over 300,000 stations across 100+ countries. |
| **Free to start** | A shared API key is pre-configured so you can run small jobs immediately. |

### How it compares

This Actor focuses on a straightforward coordinate or country input with a flat output schema, while the alternatives offer different filtering or output approaches.

| Feature | ParseForge | Open Charge Map EV Station Search | Open Charge Map - EV Charging Stations Scraper |
|---|---|---|---|
| Coordinate-based search with radius | Yes | Yes | Yes |
| Country-wide scraping by ISO code | Yes | Not listed | Yes |
| Connector type filtering in input | Not listed | Not listed | Yes |
| Pre-configured shared API key | Yes | Not listed | Not listed |
| Network operator filtering in input | Not listed | Not listed | Yes |

### Configure the run

Drive the Actor with a center point and radius, or a country code, and set a hard limit on the number of stations returned. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "coordinates": "51.5072,-0.1276",
  "distanceKm": 10,
  "maxItems": 10
}
```

A larger pull:

```json
{
  "coordinates": "51.5072,-0.1276",
  "distanceKm": 10,
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.0008 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.08 |
| 1,000 results | $0.80 |
| 10,000 results | $8.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [OpenChargeMap EV Station Scraper](https://apify.com/parseforge/openchargemap-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to OpenChargeMap through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/openchargemap-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your coordinates are in the correct 'latitude,longitude' format and that the radius is large enough. If using a country code, verify it is a valid ISO two-letter code and that OpenChargeMap has coverage there.

**I get an error about the API key.**

The shared key may be rate-limited if many users are running the Actor simultaneously. Register for a free personal key at openchargemap.org and paste it into the API key field.

**The run stops before reaching my max items limit.**

This happens when there are fewer stations in the search area than your requested maximum. The Actor returns all available stations that match your coordinates or country code.

**Some stations are missing connector details.**

OpenChargeMap relies on community contributions, so data completeness varies. Missing fields will appear as empty in your dataset.

**The country code search returns stations outside the country.**

OpenChargeMap's country boundaries may include stations near borders. Filter your results by the address or coordinates fields in post-processing if needed.

### FAQ

| Question | Answer |
|---|---|
| Do I need my own OpenChargeMap API key? | A shared demo key is included by default, which works for small, occasional runs. For production or high-volume scraping, you should register for a free key at openchargemap.org and enter it in the input. |
| What data fields does each station record contain? | Each row includes the station's address, coordinates, operator name, usage type, connector types, power levels, and status. The exact fields are shown in the sample output on the Actor's page. |
| Can I filter by connector type, like CCS or Tesla? | The Actor returns all stations in the area and includes the connector details in the output. You can filter the resulting dataset in a spreadsheet or downstream code by the connector type field. |
| How do I scrape an entire country? | Leave the coordinates field empty and provide a two-letter ISO country code, such as 'DE' for Germany or 'JP' for Japan. The Actor will retrieve stations across that country up to your max items limit. |
| What is the maximum search radius? | The radius can be set up to 500 kilometers around your chosen coordinates. |
| How many stations can I scrape in one run? | You can set the maximum up to 1,000,000 stations. The actual number returned depends on how many stations exist in your search area. |
| Is the data live or cached? | The Actor queries the OpenChargeMap API directly on each run, so you get the latest station information available in their registry. |
| Can I search by address instead of coordinates? | The input requires latitude and longitude. You can use any free geocoding service to convert an address to coordinates before running the Actor. |
| What export formats are supported? | You can export your dataset in JSON, CSV, Excel, XML, and several other formats directly from the Apify platform. |
| Does this work for Tesla Superchargers? | Yes, if a Tesla Supercharger station is listed in the OpenChargeMap registry, it will be returned with its connector details and network operator field set to Tesla. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by OpenChargeMap. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `coordinates` (type: `string`):

Center point as "latitude,longitude" (e.g. "51.5072,-0.1276"). Returns nearby charging stations. Takes priority over country.

## `distanceKm` (type: `integer`):

Search radius around the coordinates, in kilometers.

## `countryCode` (type: `string`):

Optional. Two-letter ISO country code (e.g. "US", "GB", "DE"). Used only when no coordinates are given.

## `maxItems` (type: `integer`):

Maximum number of charging stations to collect per run.

## `apiKey` (type: `string`):

OpenChargeMap API key. A shared key is provided by default. For heavy use, get your own free key at openchargemap.org.

## Actor input object example

```json
{
  "coordinates": "51.5072,-0.1276",
  "distanceKm": 10,
  "maxItems": 10,
  "apiKey": "ff3a9388-daa1-41ae-9715-c1ac210f9398"
}
```

# Actor output Schema

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

No description

# 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 = {
    "coordinates": "51.5072,-0.1276",
    "distanceKm": 10,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/openchargemap-scraper").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 = {
    "coordinates": "51.5072,-0.1276",
    "distanceKm": 10,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/openchargemap-scraper").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 '{
  "coordinates": "51.5072,-0.1276",
  "distanceKm": 10,
  "maxItems": 10
}' |
apify call parseforge/openchargemap-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/openchargemap-scraper"
        }
    }
}

```

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/6uNWgMmRLcm9zv8Bp/builds/7yca4fty0CDfC7HAU/openapi.json
