# Open Charge Map - EV Charging Stations Scraper (`crawlerbros/open-charge-map-scraper`) Actor

Scrape Open Charge Map's global database of 300k+ EV charging station locations. Search by location/radius or country, filter by connector type (CCS, CHAdeMO, Type 2, Tesla, etc.), network operator, or charging speed/level. No login, no API key required.

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

## Pricing

from $3.00 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Open Charge Map - EV Charging Stations Scraper

Scrape Open Charge Map's global database of 300,000+ electric vehicle
charging station locations. Search near any location or place name, browse
by country, or look up specific stations by ID. Filter by connector type
(CCS, CHAdeMO, Type 2, Tesla, and more), network operator, or charging
speed/power. No login, no API key, no paid proxy required.

### What this actor does

- **Three modes:** `search` (location + radius), `byCountry` (country-wide
  browse), `byId` (direct station lookup)
- **Location input:** exact latitude/longitude, or a free-text place name
  (automatically geocoded)
- **Filters:** connector type, network operator, charging speed/level,
  min/max power (kW), operational-status-only
- **Full station detail:** address, operator, every connector on-site with
  its power/voltage/current type, operational status, last-verified date
- **Empty fields are omitted** — every record contains only the data Open
  Charge Map actually published for that station

### Output per charging station

- `stationId`, `uuid` — Open Charge Map's station identifier
- `title`, `addressLine1`, `addressLine2`, `town`, `stateOrProvince`, `postcode`
- `country`, `countryCode`
- `latitude`, `longitude`
- `operator` — network operator name (omitted when not on record)
- `usageType` — e.g. "Public", "Private - Membership Required"
- `usageCost` — free-text cost description, as published by the site owner
- `statusType`, `isOperational` — current operational status
- `isRecentlyVerified`, `dateLastVerified`, `dateLastStatusUpdate`
- `numberOfPoints` — number of physical charging points at this location
- `connections[]` — one entry per connector: `connectorType`, `level`,
  `currentType`, `statusType`, `powerKW`, `voltage`, `amps`, `quantity`
- `connectorTypes[]` — distinct connector types available at this station
- `maxPowerKW` — fastest connector's rated power
- `contactPhone`, `relatedUrl`, `accessComments`, `generalComments`
- `dataProvider`, `dataProviderLicense` — the contributing data source and its license terms
- `sourceUrl` — the station's page on the public Open Charge Map
- `recordType: "chargingStation"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `byCountry` / `byId` |
| `locationQuery` | string | `Amsterdam` | Place name to geocode (mode=search) |
| `latitude` / `longitude` | number | – | Exact search center; overrides `locationQuery` |
| `radiusKm` | integer | `25` | Search radius in km (mode=search) |
| `countryCode` | string (enum) | – | Country to browse (mode=byCountry) |
| `stationIds` | array | – | Numeric station IDs (mode=byId) |
| `connectorType` | string (enum) | – | Filter by connector type |
| `operator` | string (enum) | – | Filter by network operator (curated list of common networks) |
| `chargingLevel` | string (enum) | – | Filter by charging speed/level |
| `minPowerKW` / `maxPowerKW` | integer | – | Filter by fastest connector's power |
| `operationalOnly` | boolean | `false` | Only emit currently-operational stations |
| `maxItems` | integer | `20` | Hard cap on emitted records (1–500) |

#### Example: fast chargers near a city

```json
{
  "mode": "search",
  "locationQuery": "Berlin",
  "radiusKm": 30,
  "chargingLevel": "rapid",
  "connectorType": "cCSType2",
  "maxItems": 50
}
````

#### Example: browse a country's Tesla Superchargers

```json
{
  "mode": "byCountry",
  "countryCode": "us",
  "operator": "tesla",
  "maxItems": 100
}
```

#### Example: look up specific stations

```json
{
  "mode": "byId",
  "stationIds": ["274201", "37780"]
}
```

### Use cases

- **EV route planning tools** — build charger-availability layers for a trip planner
- **Real estate / site selection** — assess EV charging density around a property or development
- **Market research** — compare charging network coverage and connector-type mix by region
- **Fleet management** — locate compatible chargers for a specific vehicle's connector type
- **Sustainability reporting** — quantify public charging infrastructure in a market

### Data source / limitations

This actor uses Open Charge Map's public v3 REST API
(`api.openchargemap.io/v3/poi`) — the same backing API used by Open Charge
Map's own official map application at `map.openchargemap.io`. It does not
scrape rendered web pages. No user-supplied API key or login is required:
the actor uses the same public client identity that Open Charge Map's own
free map app ships to every visitor's browser, so every user of this actor
gets full data access with zero configuration.

Note: `openchargemap.org/site/poi/list` (a different, older page on Open
Charge Map's main site) requires a login and is not used by this actor.

- **Per-query cap:** Open Charge Map returns at most 500 stations per API
  call, which is why `maxItems` is capped at 500.
- **Operator filter is curated, not exhaustive.** Open Charge Map tracks
  976+ distinct operator records; the `operator` filter covers the most
  commonly searched global and regional networks. Every station's actual
  `operator` field (when published) is still returned regardless of whether
  it matches the filter list — leave the filter blank to see all networks.
- **Geocoding:** free-text `locationQuery` values are resolved to
  coordinates via the public OpenStreetMap Nominatim API (also keyless).
- **Licensing:** each record's `dataProviderLicense` field states the exact
  terms for that specific station as published by Open Charge Map (most
  community-contributed stations are under Creative Commons Attribution
  4.0). Attribution to Open Charge Map is required for any reuse — see
  [openchargemap.org](https://openchargemap.org) for full usage terms.
- Some fields (`operator`, `usageType`, connector-level detail) are omitted
  per record when the underlying contributor never populated them — this is
  normal for a crowdsourced dataset and is not a scraping error.

### FAQ

**Do I need an Open Charge Map account or API key?** No. This actor works
out of the box with no registration.

**Can I search by coordinates instead of a city name?** Yes — set
`latitude`/`longitude` directly; they take priority over `locationQuery`.

**What connector types are supported?** All of Open Charge Map's documented
connector types, including CCS (Type 1 & 2), CHAdeMO, Type 1 (J1772), Type 2,
Tesla (Supercharger/NACS, Roadster, Model S/X, Battery Swap), and various
regional plug standards.

**Why do some stations have no `operator` field?** Open Charge Map is a
crowdsourced database; many stations are submitted without operator
information. The field is only included when it's actually on record.

**What does `chargingLevel` mean?** Open Charge Map's own three-tier system:
Level 1 (slow, under 2kW), Level 2 (fast, 2-40kW AC), Level 3 (rapid/DC fast,
over 40kW). For finer control, use `minPowerKW`/`maxPowerKW` instead.

**How fresh is the data?** Open Charge Map is continuously updated by its
contributor community; each station's `dateLastVerified` and
`dateLastStatusUpdate` show when it was last checked.

**Can I use this data commercially?** Yes, per each station's
`dataProviderLicense` (predominantly CC BY 4.0) — attribution to Open
Charge Map is required.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `locationQuery` (type: `string`):

Free-text place name to search near (mode=search). Geocoded automatically. Ignored if latitude/longitude are set.

## `latitude` (type: `number`):

Search center latitude (mode=search). Takes priority over `locationQuery` if both are set.

## `longitude` (type: `number`):

Search center longitude (mode=search). Takes priority over `locationQuery` if both are set.

## `radiusKm` (type: `integer`):

Radius around the search location (mode=search).

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

Country to browse (mode=byCountry).

## `stationIds` (type: `array`):

Open Charge Map numeric station IDs (the number in a map.openchargemap.io/#/poi/<ID> link).

## `connectorType` (type: `string`):

Filter to stations offering this connector type.

## `operator` (type: `string`):

Filter to a specific charging network. Covers the most common global/regional networks; not exhaustive (976+ operators exist upstream) — leave blank to include all networks.

## `chargingLevel` (type: `string`):

Filter by charging power level.

## `usageType` (type: `string`):

Filter by public/private access type.

## `minPowerKW` (type: `integer`):

Drop stations whose fastest connector is below this power.

## `maxPowerKW` (type: `integer`):

Drop stations whose fastest connector is above this power.

## `operationalOnly` (type: `boolean`):

Only emit stations currently marked operational.

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

Hard cap on emitted records (Open Charge Map returns at most 500 per query).

## Actor input object example

```json
{
  "mode": "search",
  "locationQuery": "Amsterdam",
  "radiusKm": 25,
  "stationIds": [],
  "operationalOnly": false,
  "maxItems": 20
}
```

# Actor output Schema

## `chargingStations` (type: `string`):

Dataset containing all scraped EV charging station 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 = {
    "mode": "search",
    "locationQuery": "Amsterdam",
    "radiusKm": 25,
    "stationIds": [],
    "operationalOnly": false,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/open-charge-map-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 = {
    "mode": "search",
    "locationQuery": "Amsterdam",
    "radiusKm": 25,
    "stationIds": [],
    "operationalOnly": False,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/open-charge-map-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "mode": "search",
  "locationQuery": "Amsterdam",
  "radiusKm": 25,
  "stationIds": [],
  "operationalOnly": false,
  "maxItems": 20
}' |
apify call crawlerbros/open-charge-map-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/open-charge-map-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Open Charge Map - EV Charging Stations Scraper",
        "description": "Scrape Open Charge Map's global database of 300k+ EV charging station locations. Search by location/radius or country, filter by connector type (CCS, CHAdeMO, Type 2, Tesla, etc.), network operator, or charging speed/level. No login, no API key required.",
        "version": "1.0",
        "x-build-id": "Wm3e5u6HFxOJRtoq3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~open-charge-map-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-open-charge-map-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~open-charge-map-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-open-charge-map-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~open-charge-map-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-open-charge-map-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byCountry",
                            "byId"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "search"
                    },
                    "locationQuery": {
                        "title": "Location (city / place name)",
                        "type": "string",
                        "description": "Free-text place name to search near (mode=search). Geocoded automatically. Ignored if latitude/longitude are set.",
                        "default": "Amsterdam"
                    },
                    "latitude": {
                        "title": "Latitude",
                        "minimum": -90,
                        "maximum": 90,
                        "type": "number",
                        "description": "Search center latitude (mode=search). Takes priority over `locationQuery` if both are set."
                    },
                    "longitude": {
                        "title": "Longitude",
                        "minimum": -180,
                        "maximum": 180,
                        "type": "number",
                        "description": "Search center longitude (mode=search). Takes priority over `locationQuery` if both are set."
                    },
                    "radiusKm": {
                        "title": "Search radius (km)",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Radius around the search location (mode=search).",
                        "default": 25
                    },
                    "countryCode": {
                        "title": "Country",
                        "enum": [
                            "af",
                            "ax",
                            "al",
                            "dz",
                            "as",
                            "ad",
                            "ao",
                            "ai",
                            "aq",
                            "ag",
                            "ar",
                            "am",
                            "aw",
                            "au",
                            "at",
                            "az",
                            "bs",
                            "bh",
                            "bd",
                            "bb",
                            "by",
                            "be",
                            "bz",
                            "bj",
                            "bm",
                            "bt",
                            "bo",
                            "bq",
                            "ba",
                            "bw",
                            "bv",
                            "br",
                            "io",
                            "bn",
                            "bg",
                            "bf",
                            "bi",
                            "kh",
                            "cm",
                            "ca",
                            "cv",
                            "ky",
                            "cf",
                            "td",
                            "cl",
                            "cn",
                            "cx",
                            "cc",
                            "co",
                            "km",
                            "cg",
                            "cd",
                            "ck",
                            "cr",
                            "ci",
                            "hr",
                            "cu",
                            "cw",
                            "cy",
                            "cz",
                            "dk",
                            "dj",
                            "dm",
                            "do",
                            "ec",
                            "eg",
                            "sv",
                            "gq",
                            "er",
                            "ee",
                            "et",
                            "fk",
                            "fo",
                            "fj",
                            "fi",
                            "fr",
                            "gf",
                            "pf",
                            "tf",
                            "ga",
                            "gm",
                            "ge",
                            "de",
                            "gh",
                            "gi",
                            "gr",
                            "gl",
                            "gd",
                            "gp",
                            "gu",
                            "gt",
                            "gg",
                            "gn",
                            "gw",
                            "gy",
                            "ht",
                            "hm",
                            "va",
                            "hn",
                            "hk",
                            "hu",
                            "is",
                            "in",
                            "id",
                            "ir",
                            "iq",
                            "ie",
                            "im",
                            "il",
                            "it",
                            "jm",
                            "jp",
                            "je",
                            "jo",
                            "kz",
                            "ke",
                            "ki",
                            "kp",
                            "kr",
                            "xk",
                            "kw",
                            "kg",
                            "la",
                            "lv",
                            "lb",
                            "ls",
                            "lr",
                            "ly",
                            "li",
                            "lt",
                            "lu",
                            "mo",
                            "mk",
                            "mg",
                            "mw",
                            "my",
                            "mv",
                            "ml",
                            "mt",
                            "mh",
                            "mq",
                            "mr",
                            "mu",
                            "yt",
                            "mx",
                            "fm",
                            "md",
                            "mc",
                            "mn",
                            "me",
                            "ms",
                            "ma",
                            "mz",
                            "mm",
                            "na",
                            "nr",
                            "np",
                            "nl",
                            "nc",
                            "nz",
                            "ni",
                            "ne",
                            "ng",
                            "nu",
                            "nf",
                            "mp",
                            "no",
                            "om",
                            "pk",
                            "pw",
                            "ps",
                            "pa",
                            "pg",
                            "py",
                            "pe",
                            "ph",
                            "pn",
                            "pl",
                            "pt",
                            "pr",
                            "qa",
                            "re",
                            "ro",
                            "ru",
                            "rw",
                            "bl",
                            "sh",
                            "kn",
                            "lc",
                            "mf",
                            "pm",
                            "vc",
                            "ws",
                            "sm",
                            "st",
                            "sa",
                            "sn",
                            "rs",
                            "sc",
                            "sl",
                            "sg",
                            "sx",
                            "sk",
                            "si",
                            "sb",
                            "so",
                            "za",
                            "gs",
                            "ss",
                            "es",
                            "lk",
                            "sd",
                            "sr",
                            "sj",
                            "sz",
                            "se",
                            "ch",
                            "sy",
                            "tw",
                            "tj",
                            "tz",
                            "th",
                            "tl",
                            "tg",
                            "tk",
                            "to",
                            "tt",
                            "tn",
                            "tr",
                            "tm",
                            "tc",
                            "tv",
                            "ug",
                            "ua",
                            "ae",
                            "gb",
                            "us",
                            "um",
                            "uy",
                            "uz",
                            "vu",
                            "ve",
                            "vn",
                            "vg",
                            "vi",
                            "wf",
                            "eh",
                            "ye",
                            "zm",
                            "zw"
                        ],
                        "type": "string",
                        "description": "Country to browse (mode=byCountry)."
                    },
                    "stationIds": {
                        "title": "Station IDs (mode=byId)",
                        "type": "array",
                        "description": "Open Charge Map numeric station IDs (the number in a map.openchargemap.io/#/poi/<ID> link).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "connectorType": {
                        "title": "Connector type",
                        "enum": [
                            "avconConnector",
                            "bS13633Pin13Amp",
                            "blueCommando2PE",
                            "cCSType1",
                            "cCSType2",
                            "cEE3Pin",
                            "cEE5Pin",
                            "cEE74SchukoTypeF",
                            "cEE75",
                            "cEE7Pin",
                            "cHAdeMO",
                            "chaoJiCHAdeMO3x",
                            "europlug2PinCEE716",
                            "gBTACGBT202342Socket",
                            "gBTACGBT202342TetheredCable",
                            "gBTDCGBT202343",
                            "iEC603093pin",
                            "iEC603095pin",
                            "lPInductive",
                            "nACSTeslaSupercharger",
                            "nEMA1430",
                            "nEMA1450",
                            "nEMA515R",
                            "nEMA520R",
                            "nEMA615",
                            "nEMA620",
                            "nEMATT30R",
                            "sCAMEType3ALowPower",
                            "sCAMEType3CSchneiderLegrand",
                            "sPInductive",
                            "t13SEC1011Swissdomestic3pinTypeJ",
                            "teslaModelSX",
                            "teslaRoadster",
                            "teslaBatterySwap",
                            "threePhase5PinASNZ3123",
                            "type1J1772",
                            "type2SocketOnly",
                            "type2TetheredConnector",
                            "typeIAS3112",
                            "typeM",
                            "wirelessCharging",
                            "xLRPlug4pin"
                        ],
                        "type": "string",
                        "description": "Filter to stations offering this connector type."
                    },
                    "operator": {
                        "title": "Network operator",
                        "enum": [
                            "tesla",
                            "teslaOnly",
                            "chargePoint",
                            "electrifyAmerica",
                            "evgo",
                            "ionity",
                            "bpPulseUK",
                            "bpPulseUS",
                            "ospreyCharging",
                            "fastNed",
                            "chargefox",
                            "blinkCharging",
                            "chargemaster",
                            "podPointUK",
                            "geniePoint",
                            "instaVolt",
                            "esbEcars",
                            "engie",
                            "allegoBV",
                            "evBox",
                            "ubitricity",
                            "voltaCharging",
                            "chargeNetNZ",
                            "chargeplaceScotland",
                            "enelX"
                        ],
                        "type": "string",
                        "description": "Filter to a specific charging network. Covers the most common global/regional networks; not exhaustive (976+ operators exist upstream) — leave blank to include all networks."
                    },
                    "chargingLevel": {
                        "title": "Charging speed / level",
                        "enum": [
                            "slow",
                            "fast",
                            "rapid"
                        ],
                        "type": "string",
                        "description": "Filter by charging power level."
                    },
                    "usageType": {
                        "title": "Usage type / access",
                        "enum": [
                            "public",
                            "publicMembershipRequired",
                            "publicPayAtLocation",
                            "publicNoticeRequired",
                            "privateRestrictedAccess",
                            "privatelyOwnedNoticeRequired",
                            "privateStaffVisitorsCustomers"
                        ],
                        "type": "string",
                        "description": "Filter by public/private access type."
                    },
                    "minPowerKW": {
                        "title": "Min power (kW)",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Drop stations whose fastest connector is below this power."
                    },
                    "maxPowerKW": {
                        "title": "Max power (kW)",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Drop stations whose fastest connector is above this power."
                    },
                    "operationalOnly": {
                        "title": "Operational stations only",
                        "type": "boolean",
                        "description": "Only emit stations currently marked operational.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on emitted records (Open Charge Map returns at most 500 per query).",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
