Open Charge Map API: Search EV chargers near a place
Finds Open Charge Map charging locations near an address, city, or postcode, nearest first.
Unofficial. Not affiliated with or endorsed by Open Charge Map.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Location, required
location Address, city, or postcode near which to search, for example Oxford, UK.
Oxford, UK
2 characters or more.
- Connector optional
connector Connector to require, for example CCS; any accepts all.
any (default)
One of
any,CCS,CHAdeMO,Type 2,Tesla/NACS,J1772.- Radius (km) optional
radius_km Search radius in kilometres, for example 10 (maximum 100).
10 (default)
Number from 0.1 to 100.
- Max Results optional
max_results Maximum number of locations, for example 20 (maximum 100).
20 (default)
Whole number from 1 to 100.
- Min Power Kw optional
min_power_kw Minimum power in kW for a matching connector, for example 50; 0 accepts any power.
0 (default)
Number 0 or more.
Input as JSON
{ "location": "Oxford, UK"}Output
{ "chargers": [ { "cost": null, "name": "CP QA UK CPHM-C686", "town": "Oxford", "access": "public", "address": "10 Queen St test", "country": "United Kingdom", "latitude": 51.752098, "map_link": "https://map.openchargemap.io/?id=214553" , "operator": "ChargePoint", "postcode": "OX1 4AA", "longitude": -1.25767, "connectors": [ { "type": "Type 2 (Socket Only)", "count": null, "power_kw": 22 } ], "distance_km": 0.02, "operational": true, "distance_miles": 0.01, "last_verified_date": "2023-05-04", "open_charge_map_id": 214553, "number_of_charging_points": null }, { "cost": null, "name": "Old Greyfriars", "town": "Oxford", "access": "public", "address": "Old Greyfriars Street", "country": "United Kingdom", "latitude": 51.749338, "map_link": "https://map.openchargemap.io/?id=254945" , "operator": "Blink Charging (UK)", "postcode": "OX1 1PE", "longitude": -1.260836, "connectors": [ { "type": "Type 2 (Tethered Connector) ", "count": null, "power_kw": 50 }, { "type": "CHAdeMO", "count": null, "power_kw": 50 }, { "type": "Type 2 (Socket Only)", "count": null, "power_kw": 22 } ], "distance_km": 0.36, "operational": true, "distance_miles": 0.22, "last_verified_date": "2023-12-07", "open_charge_map_id": 254945, "number_of_charging_points": null }, { "cost": null, "name": "The Randolph Hotel", "town": null, "access": "public", "address": "Beaumont Street, City Centre", "country": "United Kingdom", "latitude": 51.75505564122571, "map_link": "https://map.openchargemap.io/?id=300677" , "operator": "Roam Charging (UK)", "postcode": "OX1 2LN", "longitude": -1.2597127000284445, "connectors": [ { "type": "Type 2 (Socket Only)", "count": 8, "power_kw": 22 } ], "distance_km": 0.36, "operational": true, "distance_miles": 0.22, "last_verified_date": "2024-07-08", "open_charge_map_id": 300677, "number_of_charging_points": 4 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"openchargemap.org/search_chargers","input":{"location":"Oxford, UK"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "openchargemap.org/search_chargers" , "input": { "location": "Oxford, UK" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "openchargemap.org/search_chargers" , "input": { "location": "Oxford, UK" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run openchargemap.org/search_chargers# with {"location":"Oxford, UK"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "location" ], "properties": { "location": { "type": "string", "minLength": 2, "description": "Address, city, or postcode near which to search, for example Oxford, UK." }, "connector": { "enum": [ "any", "CCS", "CHAdeMO", "Type 2", "Tesla/NACS" , "J1772" ], "type": "string", "default": "any", "description": "Connector to require, for example CCS; any accepts all." }, "radius_km": { "type": "number", "default": 10, "maximum": 100, "minimum": 0.1, "description": "Search radius in kilometres, for example 10 (maximum 100)." }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Maximum number of locations, for example 20 (maximum 100)." }, "min_power_kw": { "type": "number", "default": 0, "minimum": 0, "description": "Minimum power in kW for a matching connector, for example 50; 0 accepts any power." } }}Output schema
{ "type": "object", "required": [ "chargers" ], "properties": { "chargers": { "type": "array", "items": { "type": "object", "properties": { "cost": { "type": [ "string", "null" ] }, "name": { "type": [ "string", "null" ] }, "town": { "type": [ "string", "null" ] }, "access": { "type": [ "string", "null" ] }, "address": { "type": [ "string", "null" ] }, "country": { "type": [ "string", "null" ] }, "latitude": { "type": [ "number", "null" ] }, "map_link": { "type": "string" }, "operator": { "type": [ "string", "null" ] }, "postcode": { "type": [ "string", "null" ] }, "longitude": { "type": [ "number", "null" ] }, "connectors": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": [ "string", "null" ] }, "count": { "type": [ "integer", "null" ] }, "power_kw": { "type": [ "number", "null" ] } } } }, "distance_km": { "type": [ "number", "null" ] }, "operational": { "type": [ "boolean", "null" ] }, "distance_miles": { "type": [ "number", "null" ] }, "last_verified_date": { "type": [ "string", "null" ] }, "open_charge_map_id": { "type": "integer" }, "number_of_charging_points": { "type": [ "integer", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
openchargemap.org/search_chargers- Returns
- name, address, distance, operator, access, connectors, status, map link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method openchargemap.org/search_chargers with the inputs above.
Ask your agent
- Find EV chargers within 15 km of Manchester city centre that have CCS connectors rated at least 50 kW.
- Show me the nearest charging points to postcode SW1A 1AA, nearest first, up to 10 results.
- Any Type 2 chargers near Leeds within a 5 km radius?
- I need a fast charger near Bristol Temple Meads station on openchargemap.org, Tesla/NACS connector, at least 150 kW.
- List up to 30 public charging locations around Cambridge, UK, showing connectors and whether they are currently available.
See more
Finds public PlugShare charging stations near an address, city or ZIP code, nearest first, with driver PlugScores and charging details. Cost and opening hours appear when listed.
plugshare.com/search_chargersFind public, open EV charging stations near a US or Canadian city, address, or postal code, sorted by distance. Power is the highest listed connector output at each station; unavailable details are null.
afdc.energy.gov/search_ev_chargersFinds named places or kinds of places in a city or area, in search order, using OpenStreetMap Nominatim. Results may be fewer than requested. Data © OpenStreetMap contributors (ODbL).
openstreetmap.org/search_placesLists UK postcodes nearest to a postcode or named place, with distance, ward, council and coordinates. For places sharing a name, a city or town is preferred.
postcodes.io/list_nearby_postcodesFinds McDonald's restaurants within 50 miles of a US city, address or ZIP code, nearest first. Each result includes today's hours, services and directions. Open-now status follows the listed hours.
mcdonalds.com/search_restaurantsFinds map coordinates and address details for an address or place on OpenStreetMap, optionally restricted to a country.
openstreetmap.org/get_coordinatesGets crimes reported within one mile of a UK postcode or place in England, Wales or Northern Ireland for a month (latest published by default), with category totals, up to 100 sampled incidents, the previous month's total and the local police.uk crime-map link.
data.police.uk/get_crimes_near_postcodeFinds Starbucks cafés near a city, address or ZIP code, nearest first, with whether each is open now, today's local hours and amenities; optionally only cafés open now.
starbucks.com/search_stores