ChargeAlong
Sign in

ChargeAlong API

Version 1.0.0

Every charging site ChargeAlong lists, with its plugs, power, price, network and position, and the browse hierarchy the site itself is built from.

Free, anonymous and read only. There is no key, no quota and no sign up. Limits at the edge are generous and are there to stop a flood, not to ration use; verified crawlers are not limited at all. Answers are cached for an hour and may be cached by you.

Attribution is a licence condition, not a courtesy: the data comes from Open Charge Map contributors and each record names its own source and licence. Keep those with anything you publish.

Per record: see each site's sources. Full copyright notice.

Everything is under https://api.chargealong.io, over HTTPS, and every answer is JSON wrapped in a data field.

GET /v1/countries

Every country with charging sites, and how many each has

Answers

  • 200 The countries, busiest first
  • 503 The database is unavailable
curl
curl -sS "https://api.chargealong.io/v1/countries"
Node
const url = new URL("https://api.chargealong.io/v1/countries");

const res = await fetch(url);
const { data } = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/countries",
)
data = res.json()["data"]
GET /v1/overview

What the whole directory holds: countries with their busiest places

Answers

  • 200 One answer for a home page or a first call
  • 503 The database is unavailable
curl
curl -sS "https://api.chargealong.io/v1/overview"
Node
const url = new URL("https://api.chargealong.io/v1/overview");

const res = await fetch(url);
const { data } = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/overview",
)
data = res.json()["data"]
GET /v1/countries/{country}

One country: its regions and their counts

Parameters

  • country string, in the path, required. Country slug, as in a page URL: australia

Answers

  • 200 The country and its regions
  • 404 No such country
curl
curl -sS "https://api.chargealong.io/v1/countries/australia"
Node
const url = new URL("https://api.chargealong.io/v1/countries/australia");

const res = await fetch(url);
const { data } = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/countries/australia",
)
data = res.json()["data"]
GET /v1/countries/{country}/regions/{region}

One region: the places in it that have charging sites

Parameters

  • country string, in the path, required
  • region string, in the path, required. Region slug: victoria

Answers

  • 200 The region and its localities
  • 404 No such region
curl
curl -sS "https://api.chargealong.io/v1/countries/australia/regions/victoria"
Node
const url = new URL("https://api.chargealong.io/v1/countries/australia/regions/victoria");

const res = await fetch(url);
const { data } = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/countries/australia/regions/victoria",
)
data = res.json()["data"]
GET /v1/countries/{country}/networks

Every charging network in a country, with its site and region counts

Parameters

  • country string, in the path, required

Answers

  • 200 The networks, biggest first
  • 404 No such country
curl
curl -sS "https://api.chargealong.io/v1/countries/australia/networks"
Node
const url = new URL("https://api.chargealong.io/v1/countries/australia/networks");

const res = await fetch(url);
const { data } = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/countries/australia/networks",
)
data = res.json()["data"]
GET /v1/countries/{country}/networks/{network}

One network in a country: where it reaches, and a sample of its sites

Parameters

  • country string, in the path, required
  • network string, in the path, required. Network slug: evie-networks

Answers

  • 200 The network, its regions and its busiest places
  • 404 No such network in that country
curl
curl -sS "https://api.chargealong.io/v1/countries/australia/networks/evie-networks"
Node
const url = new URL("https://api.chargealong.io/v1/countries/australia/networks/evie-networks");

const res = await fetch(url);
const { data } = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/countries/australia/networks/evie-networks",
)
data = res.json()["data"]
GET /v1/localities/{country}/{region}/{locality}

One suburb or town: every charging site in it, with facet counts

Parameters

  • country string, in the path, required
  • region string, in the path, required
  • locality string, in the path, required. Locality slug: sunshine

Answers

  • 200 The locality, its sites, its facet counts and its neighbours
  • 404 No such locality
curl
curl -sS "https://api.chargealong.io/v1/localities/australia/victoria/sunshine"
Node
const url = new URL("https://api.chargealong.io/v1/localities/australia/victoria/sunshine");

const res = await fetch(url);
const { data } = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/localities/australia/victoria/sunshine",
)
data = res.json()["data"]
GET /v1/sites/{publicID}

One charging site: connectors, power, price, access, network and position

The public id is the last segment of a site's slug in its page URL, eight characters.

Parameters

  • publicID string, in the path, required

Answers

  • 200 The site, its connectors, its sources and nearby alternatives
  • 404 No such site
  • 410 The site was removed from its source
curl
curl -sS "https://api.chargealong.io/v1/sites/abcd2345"
Node
const url = new URL("https://api.chargealong.io/v1/sites/abcd2345");

const res = await fetch(url);
const { data } = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/sites/abcd2345",
)
data = res.json()["data"]
GET /v1/nearby

The charging sites nearest a coordinate

Answers the question an answer engine is usually resolving: what is nearest to here, and how fast is it.

Parameters

  • lat number, in the query string, required. Latitude in degrees, rounded to four places
  • lng number, in the query string, required. Longitude in degrees, rounded to four places
  • min_kw number, in the query string, optional. Only sites with a connector of at least this many kW. 100 is roughly the line between a stop and a break.
  • radius_km number, in the query string, optional. How far to look, in kilometres
  • limit integer, in the query string, optional. How many sites to return, nearest first
  • connector string, in the query string, optional. Only sites with one of these connectors. Repeat the parameter for more than one.
  • network string, in the query string, optional. Only sites on this network, by slug: evie-networks

Answers

  • 200 Sites near the point, nearest first, with their distance
  • 400 The coordinates are missing or out of range
curl
curl -sS "https://api.chargealong.io/v1/nearby?lat=-37.7886&lng=144.8311&min_kw=100"
Node
const url = new URL("https://api.chargealong.io/v1/nearby");
url.searchParams.set("lat", "-37.7886");
url.searchParams.set("lng", "144.8311");
url.searchParams.set("min_kw", "100");

const res = await fetch(url);
const { data } = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/nearby",
    params={"lat": "-37.7886", "lng": "144.8311", "min_kw": "100"},
)
data = res.json()["data"]
GET /v1/openapi.json

This document

Answers

  • 200 The OpenAPI description of this API
curl
curl -sS "https://api.chargealong.io/v1/openapi.json"
Node
const url = new URL("https://api.chargealong.io/v1/openapi.json");

const res = await fetch(url);
const spec = await res.json();
Python
import requests

res = requests.get(
    "https://api.chargealong.io/v1/openapi.json",
)
spec = res.json()

For an agent: the MCP server

The same directory is four tools over MCP, at https://api.chargealong.io/mcp. Streamable HTTP, stateless, and keyless like the rest: no key, no account, nothing to sign up for. Every answer carries the page it came from and the date the record was last checked, so an agent can cite it and say how fresh it is.

  • find_chargers What is nearest a coordinate and how fast it is, nearest first. Narrow it by power, by plug or by network.
  • search_places Turns a suburb, town or postcode into a coordinate to search around.
  • get_charger One site in full: its connectors with power and quantity, the price, how to get in, and when the record was last checked.
  • list_networks Who operates chargers in a country, biggest first, with how far each one reaches.
Claude Code
claude mcp add --transport http chargealong https://api.chargealong.io/mcp

claude.ai and other MCP clients take the same URL. Paste it where the client asks for a remote or HTTP server and leave the key field empty, because there is not one. ChatGPT takes it under Settings, Apps and Connectors. Where a client asks how to authenticate, including those two, the answer is no authentication: this server never asks who you are, and a connector set to OAuth sits waiting for a consent screen that never comes.

The document this page is built from is at https://api.chargealong.io/v1/openapi.json. Generate a client from it rather than writing one by hand. If you are building on this and want something it does not answer, say so on the contact page.