A Geocoded Dataset of Public EV Charging Stations in Indonesia with Provider, Venue, and Provincial Coverage Information
Description
This dataset provides a geocoded inventory of public electric vehicle charging stations in Indonesia, locally known as SPKLU (Stasiun Pengisian Kendaraan Listrik Umum). It contains 3,029 stations, 4,707 charger boxes, 9,781 chargers, and 5,947 connectors. The data were captured on 16 June 2026 from the public national charging map petaspklu.id, operated by Solopos, with underlying data from PT PLN (Persero). The dataset covers all 34 Indonesian provinces under the pre-2022 provincial structure. The original source was not directly ready for analysis. Charger and connector totals were recorded as zero; power ratings were provided only in free text; and administrative codes, operator labels, and venue information were not included. A Python pipeline was developed to clean and enrich the source data. The pipeline reconstructs charger and connector counts from individual charger boxes, converts power information into numeric kW values and five power tiers, and assigns official BPS administrative codes at the province and regency levels. It also classifies each station by operator type, namely PLN or SPKLU network, independent charge-point operator, or automaker dealership, and records the corresponding operator or brand name. Venue information is added through 14 detailed venue classes, which are further grouped into 7 broader categories. Province-level reference tables combine the SP2020 census population and the 2025 PDRB (regional GDP) to produce per-capita and per-GDP coverage indicators. Each station record includes WGS84 coordinates, parsed power rating, power tier, charger box count, charger count, connector count, BPS province and regency codes, operator classification, venue classification, co-location cluster identifier, and quality control flags. A companion charger-box table provides box-level power information, inferred AC or DC current type, and related counts. The charger-box table can be joined to the station table using the station identifier. A complete data dictionary is also provided. The dataset shows a large provincial gap in per-capita access to charging. DKI Jakarta has 6.92 stations per 100,000 residents, compared with 0.35 in Papua. It also shows a three-tier operator structure. PLN’s own SPKLU network accounts for 62% of stations and dominates utility and public-civic sites. Independent charge-point operators account for 24%, mainly in offices, hotels, and retail venues. Automaker dealerships account for 13% of the total across all showroom locations. The dataset can support studies on charging infrastructure equity, electric vehicle adoption, spatial accessibility, and transport and energy policy.
Files
Steps to reproduce
Source data were retrieved on 16 June 2026 from the public national charging map petaspklu.id, via its JSON endpoint /api/v1/spklu/all, which returns the full station list without authentication. The raw response was saved as input/spklu_raw.json and used as the immutable starting point. All processing was performed with a documented Python pipeline (build_dataset.py, with the regency-code matcher match_regency_codes.py) using pandas. The steps were:Recompute each station's charger and connector totals by summing its charger boxes, because the raw source totals were uniformly zero. Parse free-text power values (e.g. "22 kW") into numeric kW and assign a standardized power tier (AC slow ≤7 kW; AC fast 11–22 kW; DC fast 25–49 kW; DC rapid 50–99 kW; DC ultra-rapid ≥100 kW). Normalize province names to the 34 official 2-digit BPS province codes. Normalize regency names and administrative level (Kabupaten/Kota) and match them to 4-digit BPS codes based on Permendagri No. 72/2019, joining a regency master compiled from the open emsifa/api-wilayah-indonesia dataset. All 3,029 stations were coded; one source province mislabel (a Kendari station) was corrected. Infer AC or DC current from charger-box names where stated. Apply an empirical coordinate plausibility screen against each province's bounding-box footprint and group stations sharing identical coordinates into co-location clusters (review candidates are flagged only; nothing is deleted or merged). Join provincial population (BPS Sensus Penduduk 2020) and GDP (BPS PDRB ADHB 2025) indicators. Compute per-capita and per-GDP coverage metrics for every province. Derive provider_type and operator_brand from the explicit operator signal in the station name (PLN / SPKLU network, independent charge-point operator, or automaker dealership), and location_type/location_group name-first using documented keyword rules; the street address is consulted only for the high-precision phrases "rest area", "bandara", and "rumah sakit". To regenerate the dataset, place the input files in input/ and run: python3 match_regency_codes.py then python3 build_dataset.py. The pipeline and figure scripts are openly available in the project's code repository (GitHub URL to be added on release).
Institutions
- Binus UniversityJakarta, Jakarta