This is the documentation of version 0.55.1. Go to the latest version, 1.0.0-rc.5.

EV charging stations availability

Request Access

Important note EV Charging Stations Availability is unavailable on a Freemium or Pay As You Grow (PAYG) basis. Click the Request Access button above to contact our Sales team.

The EV Charging Stations Availability service provides real-time information about electric vehicle charging points, including availability status, connector types, power levels, and charging network details.

Basic usage

import { getPlacesWithEVAvailability } from '@tomtom-org/maps-sdk/services';
import { search } from '@tomtom-org/maps-sdk/services';

// First, search for EV charging stations
const chargingStations = await search({
    query: 'EV charging',
    geoBias: { position: [4.9041, 52.3676] }, // Amsterdam
    categorySet: ['ELECTRIC_VEHICLE_STATION'],
    limit: 10
});

// Fetch real-time availability data
const stationsWithAvailability = await getPlacesWithEVAvailability(chargingStations);

Individual station availability

Get availability for a specific charging station:

import { getPlaceWithEVAvailability } from '@tomtom-org/maps-sdk/services';

// Get a specific charging station (from search results)
const station = chargingStations.features[0];

// Get detailed availability information
const stationWithAvailability = await getPlaceWithEVAvailability(station);

// Access availability data
const availability = stationWithAvailability.properties.evChargingStationAvailability;
if (availability) {
    console.log(`Total connectors: ${availability.totalConnectors}`);
    console.log(`Available connectors: ${availability.availableConnectors}`);

    // Check individual connector types
    availability.connectorAvailability.forEach(connector => {
        console.log(`${connector.connectorType}: ${connector.availableConnectors}/${connector.totalConnectors} available`);
    });
}

Understanding availability data

The availability response includes comprehensive charging station information:

const stationWithAvailability = await getPlaceWithEVAvailability(station);
const evData = stationWithAvailability.properties.evChargingStationAvailability;

if (evData) {
    // Overall availability
    console.log(`Station Status: ${evData.availabilityStatus}`); // 'Available', 'Busy', 'OutOfService'
    console.log(`Total Connectors: ${evData.totalConnectors}`);
    console.log(`Available Connectors: ${evData.availableConnectors}`);

    // Connector-specific availability
    evData.connectorAvailability.forEach(connector => {
        console.log(`Connector Type: ${connector.connectorType}`); // 'Type2', 'CCS', 'CHAdeMO', etc.
        console.log(`Power Level: ${connector.powerKW} kW`);
        console.log(`Available: ${connector.availableConnectors}/${connector.totalConnectors}`);
        console.log(`Status: ${connector.status}`); // 'Available', 'Occupied', 'OutOfOrder'
    });

    // Charging park information
    if (evData.chargingPark) {
        console.log(`Charging Park: ${evData.chargingPark.name}`);
        console.log(`Operator: ${evData.chargingPark.operator}`);
    }
}

Integration with map display

Display charging stations with availability indicators on your map:

import { PlacesModule } from '@tomtom-org/maps-sdk/map';

// Search and get availability data
const stations = await search({
    query: 'EV charging',
    geoBias: { position: [4.9041, 52.3676] },
    categorySet: ['ELECTRIC_VEHICLE_STATION'],
    limit: 20
});

const stationsWithAvailability = await getPlacesWithEVAvailability(stations);

// Display on map with custom styling based on availability
const placesModule = await PlacesModule.create(map, {
    iconConfig: {
        customIcons: [
            {
                category: 'ELECTRIC_VEHICLE_STATION',
                iconFunction: (place) => {
                    const availability = place.properties.evChargingStationAvailability;

                    if (!availability) return 'ev-charging-default';

                    switch (availability.availabilityStatus) {
                        case 'Available':
                            return 'ev-charging-available'; // Green icon
                        case 'Busy':
                            return 'ev-charging-busy';      // Red icon
                        case 'OutOfService':
                            return 'ev-charging-offline';   // Gray icon
                        default:
                            return 'ev-charging-default';
                    }
                }
            }
        ]
    }
});

await placesModule.show(stationsWithAvailability);

Filtering by connector type

Filter stations by specific connector types:

const filterByConnectorType = (stationsWithAvailability, connectorTypes) => {
    return {
        ...stationsWithAvailability,
        features: stationsWithAvailability.features.filter(station => {
            const availability = station.properties.evChargingStationAvailability;

            if (!availability) return false;

            return availability.connectorAvailability.some(connector =>
                connectorTypes.includes(connector.connectorType) &&
                connector.availableConnectors > 0
            );
        })
    };
};

// Find stations with available Type2 or CCS connectors
const compatibleStations = filterByConnectorType(stationsWithAvailability, ['Type2', 'CCS']);

Related guides and examples

Related guides

Related examples

Related services