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 oleh BPS untuk semakin memudahkan setiap 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 yang memiliki basic pemahaman bahasa pemrograman, entah itu python, R atau lainnya maka proses ini tentu mejadi semakin mudah.

Mendaftar WebAPI BPS

Untuk dapat menggunakannya siapapun dapat 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 sudah bisa menikmati.

Setiap permintaan data melalui WebAPI ini memerlukan suatu API Key. Untuk mendapatkan API key tersebut dapat dilakukan 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 sangat 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 untuk menarik 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 diperlukan library requests dan pandas. Library requests digunakan untuk berkomunikasi dengan API, sementara library 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}

# Format Lengkap API ENDPOINT untuk data ekspor impor

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)

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-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 yang ada mmenjadi 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 kode 01,02, sampai dengan 10. Selain itu data yang diambil adalah data rinci berdasarkan kode HS lengkap (bukan 2 digit) dan 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 has (01;02;...;10)
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 bagaimana memanfaatkan WebAPI BPS untuk memperoleh berbagai data yang tersedia. 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

You may also like...

Leave a Reply

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

Daftar Isi