BPS API — Indonesian Statistics Data API
Pricing
from $1.20 / 1,000 api requests
BPS API — Indonesian Statistics Data API
FastAPI wrapper for the BPS (Badan Pusat Statistik) Web API. Access Indonesian statistical data - domains, subjects, dynamic data, static tables, press releases, publications, foreign trade, census, and SDGs - using human-readable names. No BPS codes needed.
Pricing
from $1.20 / 1,000 api requests
Rating
0.0
(0)
Developer
RD.Galih Rakasiwi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
BPS Data API
FastAPI wrapper for BPS (Badan Pusat Statistik) Web API — Indonesian Central Bureau of Statistics data access.
Access Indonesian statistical data: domains, subjects, dynamic data, static tables, press releases, publications, foreign trade, census, SIMDASI, SDGs, and more.
Designed as an Apify actor for publishing on Apify Store.
📖 Full documentation: docs/ — index, architecture, API reference, code map, deployment, troubleshooting
Quick Start
# 1. Sync dependencies (uv auto-creates venv)uv sync# 2. Set your BPS API keycp .env.example .env# Edit .env and add your BPS_API_KEY# 3. Run the serviceuv run bps-data-api# Or with hot-reload during developmentuv run uvicorn src.main:app --reload --port 8000# 4. Open API docsopen http://localhost:8000/docs
Authentication
BPS requires an API key. Three ways to provide it:
| Method | How |
|---|---|
| Header | X-BPS-API-Key: your_key |
| Env Var | BPS_API_KEY=your_key |
| Apify Input | bpsApiKey in actor input |
Priority: Header → Env Var → Apify Input
API Endpoints
Simplified API (Recommended — User-Friendly)
All endpoints accept human-readable names — no BPS codes needed.
# Data DiscoveryGET /api/v1/subjects?prov=Jawa BaratGET /api/v1/subjects/Kependudukan?prov=jabarGET /api/v1/variables?prov=jabar&keyword=population# Statistical Data (Core)GET /api/v1/data?prov=jabar&subject=KependudukanGET /api/v1/data/376?prov=AcehGET /api/v1/data?kabkot=Bandung&subject=Kependudukan # regency-level!# ContentGET /api/v1/tables?prov=jabar&keyword=povertyGET /api/v1/tables/347?prov=AcehGET /api/v1/tables/347/excel?prov=Aceh # download ExcelGET /api/v1/news?prov=DKI Jakarta&year=2024GET /api/v1/news/1092/pdf?prov=Aceh # download PDFGET /api/v1/publications?prov=pusat&keyword=inflationGET /api/v1/publications/{id}/pdf?prov=Aceh # download PDFGET /api/v1/publications/{id}/cover?prov=Aceh # cover image# IndicatorsGET /api/v1/indicators?prov=Jawa TimurGET /api/v1/infographics?prov=Jawa BaratGET /api/v1/sdgs?goal=1# Unified SearchGET /api/v1/search?q=inflation # across all data types!GET /api/v1/search?q=poverty&prov=Jawa Barat# GlossaryGET /api/v1/glossary?keyword=inflasiGET /api/v1/glossary/{id}# Census (name-based drill-down)GET /api/v1/census/eventsGET /api/v1/census/{event}/topicsGET /api/v1/census/{event}/areasGET /api/v1/census/{event}/datasets?topic=PendudukGET /api/v1/census/{event}/data?topic=X&area=ACEH&dataset=1# SIMDASIGET /api/v1/simdasi/areasGET /api/v1/simdasi/subjects?area=DKI JakartaGET /api/v1/simdasi/tables?area=DKI JakartaGET /api/v1/simdasi/tables/{id}?area=DKI Jakarta&year=2023
Province & Regency Lookup
GET /api/v1/provinces # all 34 provincesGET /api/v1/provinces/Jawa Barat # by nameGET /api/v1/provinces/jabar # by aliasGET /api/v1/kabkot?prov=Jawa Barat # regencies in provinceGET /api/v1/kabkot/3271 # by domain ID
New in v3.0: kabkot parameter on all simplified endpoints for regency-level data.
When a name is ambiguous (e.g. "Bandung" = Kab + Kota), the API returns available domain IDs.
Health Check
GET /healthGET /api/v1/health
Legacy BPS-Compatible API
GET /api/v1/domain?type=allGET /api/v1/list?model=subject&domain=1100&lang=indGET /api/v1/list?model=data&domain=1100&var=100&th=1GET /api/v1/view?model=statictable&domain=1100&id=123&lang=indGET /api/v1/dataexim?sumber=1&periode=2&kodehs=01&jenishs=1&Tahun=2023GET /api/v1/interoperabilitas/datasource/sensus/id/37GET /api/v1/interoperabilitas/datasource/simdasi/id/26
Project Structure
bps-data-api/├── .actor/actor.json # Apify actor configuration├── src/│ ├── main.py # FastAPI app + entrypoint (v3.0)│ ├── config.py # Environment-based settings│ ├── bps_client.py # Async HTTP client for BPS API│ ├── models.py # Pydantic request/response models│ ├── dependencies.py # FastAPI dependency injection│ ├── wilayah_data.py # Province/regency name→code index│ ├── simplified/│ │ ├── router.py # ★ Primary API (25+ endpoints)│ │ ├── subject_cache.py # Subject name→ID per domain│ │ ├── census_helper.py # Census name→ID resolution│ │ └── simdasi_helper.py # SIMDASI area code resolution│ └── routers/│ ├── health.py # Health check│ ├── wilayah.py # /provinces, /kabkot│ ├── domain.py # /domain│ ├── list.py # /list (18 models)│ ├── view.py # /view│ ├── dataexim.py # Foreign trade│ └── interoperability.py # Census + SIMDASI├── docs/ # Full documentation (9 files)├── Dockerfile└── .env.example
BPS API Documentation
Full documentation: https://webapi.bps.go.id/documentation/
License
MIT
Related searches
bps api, badan pusat statistik api, indonesia statistics api, indonesian economic data, bps data json, statistik indonesia api