Mudahnya Mengakses Data melalui WebAPI BPS

Akses WebAPI BPS

Badan Pusat Statistik (BPS) adalah lembaga resmi di Indonesia yang menyediakan berbagai jenis data statistik bagi pemerintah, swasta maupun pihak lainnya. Dengan status tersebut, BPS tentunya memiliki koleksi data yang sangat kaya serta menyediakan akses bagi pengguna untuk mendapatkan data tersebut. Berbagai upaya dilakukan BPS untuk memudahkan pengguna data termasuk dengan memanfaatkan teknologi informasi.

Mungkin belum banyak yang tahu, bahwa sudah beberapa tahun terakhir, BPS melalui Bagian Layanan dan Promosi Statistik menyediakan akses layanan data melalui Web API. Layanan ini tentu saja sangat memudahkan pengguna data sehingga dapat mengurangi prosedur manual yang memakan waktu. Terlebih bagi siapapun dengan basic pemahaman bahasa pemrograman, entah itu python, R atau lainnya maka proses ini tentu menjadi semakin mudah.

Mendaftar WebAPI BPS

Web API BPS dapat diakses siapapun dengan mendaftar pada alamat https://webapi.bps.go.id. Prosesnya juga sangat mudah, cukup memasukkan alamat email selanjutnya akan mendapatkan link aktivasi yang dikirimkan ke alamat email tersebut. Jika sudah mendaftar dan melakukan aktivasi maka langsung dapat digunakan.

Setiap permintaan data melalui WebAPI ini memerlukan suatu API Key. API key dapat dibuat melalui menu ProfileApplications – Add Application.

Melalui layanan ini, kita dapat mengkases berbagai produk BPS untuk berbagai subjek data, termasuk tabel dinamis, tabel statis, data sensus, publikasi, BRS, indikator strategis hingga infografis.

Informasi yang diperlukan untuk membuat aplikasi yaitu nama aplikasi, URL, jenis aplikasi serta informasi tambahan lainnya. Kemudian klik tombol Generate Key. Setelah selesai, daftar aplikasi yang telah dibuat akan muncul pada bagian Applications. API key terletak pada kolom App ID dan nantinya akan diperlukan setiap mengakses API.

Menambah Aplikasi pada WebAPI BPS

Akses data web API BPS

Tampilan Daftar Aplikasi

Akses Web API BPS

Dokumentasi WebAPI BPS (Contoh Data Ekspor Impor)

WebAPI BPS menyediakan dokumentasi yang lengkap dan jelas. Dokumentasi ini dapat diakses melalui menu Docs (bagian kanan atas). Agar lebih jelas mengenai format url dari endpoint setiap API, kita dapat mencoba terlebih dahulu dengan klik pada tombol Try It! yang terdapat pada setiap penjelasan masing-masing API.

Contoh di bawah merupakan contoh endpoint untuk mengakses data foreign trade atau ekspor impor.

Contoh Dokumentasi WebAPI

Akses Web API BPS

Contoh Response WebAPI

Akses Web API BPS

Try It!

Mengakses WebAPI BPS Menggunakan Python

Pada bagian ini, kita akan mencoba membaca data ekspor dan impor. Jika ingin mencoba API lainnya silahkan di-eksplore terlebih dahulu pada menu Docs. Selanjutnya dapat mengikuti sintaks-sintaks di bawah ini tentunya dengan penyesuaian terhadap API yang digunakan.

Untuk melanjutkan proses ini kita memerlukan library requests dan pandas. Library requests digunakan untuk berkomunikasi dengan API, dan pandas nantinya akan digunakan untuk mengolah data hasil API.

Python

#!pip install pandas requests

# memuat library yang diperlukan
import requests
import pandas as pd


# API ENDPOINT untuk foreign trade data
# Silahkan sesuaikan untuk ENDPOINT lainnya
base_url = "https://webapi.bps.go.id/v1/api/dataexim"

# app ID
api_key = "THIS_IS_YOUR_API_KEY"

Format API Endpoint untuk data ekspor impor:

Python

# Format Lengkap API ENDPOINT untuk data ekspor-impor

https://webapi.bps.go.id/v1/api/dataexim/sumber/{sumber}/kodehs/{kodehs}/jenishs/{jenishs}/tahun/{tahun}/periode/{periode}/key/{key}

Python

# membuat fungsi untuk memudahkan API call
def get_data_exim(sumber, kodehs, jenishs, tahun, periode, key):

    full_url = f"{base_url}/sumber/{sumber}" + \
               f"/kodehs/{kodehs}/jenishs/{jenishs}" + \
               f"/tahun/{tahun}/periode/{periode}/key/{key}"

    response = requests.get(full_url)

    data_resp = response.json()

    return data_resp

Contoh API Call 1

Mengakses data ekspor Indonesia tahun 2022 dalam periode tahunan untuk kode HS 01 dan 02 dan diagregasi dalam 2 digit:

Python

# testing 1

sumber = "1"        # ekspor
kodehs = "01;02"    # HS 01, 02
jenishs = "1"       # 2 digit HS Kode untuk (01, 02)
tahun = "2022"
periode = "2"       # tahunan
key = api_key

# memanggil fungsi
response = get_data_exim(sumber, kodehs, jenishs, tahun, periode, key)

# menampilkan output metadata
print(response["metadata"])

Output

{
  'source': 'Sumber : https://www.bps.go.id diakses pada 01-06-2023 23:33:33 WIB', 
  'value': 'Nilai Ekspor/Impor dalam US Dollar ($)', 
  'netweight': 'Berat Ekspor/Impor dalam Kilogram (KG)', 
  'kodehs': 'Kode dan Deskripsi dari HS', 
  'pod': 'Pelabuhan Masuk/Keluar di Indonesia', 
  'ctr': 'Negara Asal/Tujuan', 
  'tahun': 'Tahun Data'
}

Selanjutnya untuk mengambil bagian response yang berisi data (sesuai dokumentasi API yaitu disimpan dengan key -> "data").

Dari hasil pemanggilan API kita peroleh sebanyak 104 data. Dapat dilihat bahwa output yang diberikan sesuai dengan apa yang kita harapkan, yaitu data tahunan 2022 serta kode HS 2 digit 01 dan 02. Informasi yang diberikan cukup lengkap meliputi nilai ekspor (value) , berat bersih (netweight), kodehs, pelabuhan muat (pod), negara tujuan (ctr) dan tahun.

Python

# mengambil data-data
list_data = response["data"]

print(f"Jumlah data pada response : {len(data)}\n")

for dt in list_data:
    print(dt)

Output

Akses WebAPI BPS

Output yang dihasilkan di atas masih tersimpan dalam format JSON atau dalam python (tipe data dict). Pada contoh selanjutnya kita akan menggunakan pandas untuk memodifikasi output menjadi lebih rapi dan siap digunakan untuk pengolahan lebih lanjut.

Contoh API Call 2

Pada bagian ini, kita akan menarik data ekspor pada tahun 2022. Kode HS yang diambil adalah berdasarkan kode HS lengkap 8 digit dari 01XXXXXX,02XXXXXX, sampai dengan 10XXXXXX. Selain itu data yang diambil adalah periode bulanan.

Jika sebelumnya data masih tersimpan dalam format JSON (tipe dict) maka dapat kita konversi menjadi format DataFrame menggunakan fungsi json_normalize pada library pandas.

Python

# testing 2

sumber = "1"       # ekspor

# kode HS (01;02;...;09)
kodehs = ';'.join([f"0{i}" if i < 10 else str(i) for i in range(1, 11)])

jenishs = "2"      # Full digit HS Kode untuk (01**, 02**, dst)
tahun = "2022"
periode = "1"      # bulanan
key = api_key

response_all = get_data_exim(sumber, kodehs, jenishs, tahun, periode, key)

response_data = response_all["data"]

# mengubah format json (dict) menjadi dataframe
df_data = pd.json_normalize(response_data)

df_data

Output

Akses WebAPI BPS

Output yang dihasilkan sudah lebih baik. Kode HS yang diberikan merupakan kode detail (bukan 2 digit saja) serta dalam periode bulanan.

Jika diperhatikan pada kolom kodehs dan bulan masih bercampur antara kode dan deskripsi. Oleh karena itu akan kita partisi dengan mengambil bagian-bagian yan sesuai untuk kode dan deskripsi. Hal ini dapat diperbaiki dengan mengubah text terkait menggunakan method str.

Untuk lebih rapi lagi, kita juga dapat mengurutkan ulang kolom-kolom agar lebih mudah dipahami.


Python

# slicing untuk mendapatkan deskripsi HS
df_data["deskhs"] = df_data["kodehs"].str[10:]

# update kolom kodehs sehingga hanya berisi kode saja
df_data["kodehs"] = df_data["kodehs"].str[1:9]

# ambil nilai bulan 01-10 tanpa nama bulan
df_data["bulan"] = df_data["bulan"].str[1:3]

# mengatur ulang urutan kolom
df_data = df_data[["kodehs", "deskhs", "tahun", "bulan", "pod", "ctr", "value", "netweight"]]

df_data

Output

Akses WebAPI BPS

Sekarang kita sudah menghasilkan format data yang lebih rapi. Untuk pengolahan lebih lanjut data dapat disimpan ke dalam format CSV ataupun format lainnya.

Python

# menyimpan ke dalam format csv
df_data.to_csv("ekspor_2022_hs_01-10.csv", index=False)


# untuk menyimpa ke dalam Ms. Excel perlu tambahan library openpyxl

#!pip install openpyxl

df_data.to_excel("ekspor_2022_hs_01-10.xlsx", sheet_name="ekspor_2022")

Demikianlah tutorial singkat penggunaan WebAPI BPS untuk memperoleh berbagai data resmi dari BPS. Silahkan rekan-rekan mencoba untuk data-data lainnya.

Jika ada pertanyaan mengenai lebih lanjut, dapat menghubungi bagian yang bertanggung jawab di BPS

Gedung 2 Lantai 3.
Subdirektorat Layanan dan Promosi Statistik. Badan Pusat Statistik.
Jl. Dr. Sutomo 6-8 Jakarta 10710 Indonesia

dataweb@bps.go.id

Tulisan Lainnya

Cahya Alkahfi

Data Engineer di BPS-Statistics Indonesia dan Konsultan Senior di Educativa.id. Aktif membagikan tulisan seputar sains data dan statistika di sainsdata.id

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Isi