# Dataonline Bmkg — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Access Indonesia's weather station information and check the availability of meteorological data including rainfall, temperature, and sunshine duration readings. Search across different regions and station types to find the weather data you need.

**Category:** Weather | **Website:** [dataonline.bmkg.go.id/](https://dataonline.bmkg.go.id/) | **Docs:** [parse.bot/marketplace/45c32a60-766d-486e-99a0-24bfc3e1e0a4/dataonline-bmkg-go-id-api](https://parse.bot/marketplace/45c32a60-766d-486e-99a0-24bfc3e1e0a4/dataonline-bmkg-go-id-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-dataonline-bmkg-go-id-api-45c32a60/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_data_availability

Retrieve data availability grid for a specific station and meteorological parameter. Returns a data array (year/month availability rows), a chart array with monthly availability percentages, station metadata, and the current year. Requires a CSRF token internally obtained from the portal page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `parameter` | string | Yes | Meteorological parameter to query availability for. |
| `province_id` | string | Yes | Province ID from get_provinces results (e.g. '17' for Bali). |
| `station_id` | string | Yes | Station number (WMO number) from get_stations results field station_number (e.g. '97230'). |
| `year` | string | No | Optional year to filter data availability (e.g. '2020'). Omitting returns all available years. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-dataonline-bmkg-go-id-api-45c32a60/get_data_availability \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"parameter":"<string>","province_id":"<string>","station_id":"<string>","year":"<string>"}'
```

### get_kabupaten_kota

Retrieve the list of kabupaten/kota (regencies/cities) for a given province. Use province IDs from get_provinces. Returns administrative subdivisions useful for geographic filtering of stations.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `province_id` | string | Yes | Province ID from get_provinces results (e.g. '17' for Bali, '11' for DKI Jakarta). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-dataonline-bmkg-go-id-api-45c32a60/get_kabupaten_kota \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"province_id":"<string>"}'
```

### get_provinces

Retrieve the list of Indonesian provinces available for filtering weather stations and data availability queries. Province IDs are used as inputs to get_stations, get_kabupaten_kota, and get_data_availability.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-dataonline-bmkg-go-id-api-45c32a60/get_provinces \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_station_types

Retrieve the list of station types (Jenis Stasiun) available for filtering weather stations. Returns the station type codes and their display names as published in the BMKG portal filter dropdown.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-dataonline-bmkg-go-id-api-45c32a60/get_station_types \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_stations

Retrieve the list of weather stations for a given province. Use province IDs from get_provinces. The station_number field in results is the WMO number used as station_id input for get_data_availability.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `province_id` | string | Yes | Province ID from get_provinces results (e.g. '17' for Bali, '11' for DKI Jakarta). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-dataonline-bmkg-go-id-api-45c32a60/get_stations \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"province_id":"<string>"}'
```
