Bank Indonesia Transaction Rates
Freefinance:kurs-bi
Bank Indonesia's official selling, buying and middle rates for 25 currencies against the Rupiah, updated every business day. The reference for bookkeeping and FX transactions.
No key yet? Sign up free
GET/v1/finance:kurs-bi/terbaru
Latest BI transaction rates; leave currency empty for all currencies. Prices are per `unit` of currency.
Cache 1800 s
1 quota / request
finance.kurs-bi.terbaru
cURL
curl -H "x-api-key: ga_live_..." "https://kajidata.artonlabs.com/v1/finance:kurs-bi/terbaru?currency=USD"
Python
import requests
response = requests.get(
"https://kajidata.artonlabs.com/v1/finance:kurs-bi/terbaru",
params={"currency": "USD"},
headers={"x-api-key": "ga_live_..."},
timeout=30,
)
body = response.json()
print(body["data"] if body["ok"] else body["error"])
JavaScript
const params = new URLSearchParams({"currency": "USD"});
const response = await fetch(`https://kajidata.artonlabs.com/v1/finance:kurs-bi/terbaru?${params}`, {
headers: { "x-api-key": "ga_live_..." },
});
const body = await response.json();
console.log(body.ok ? body.data : body.error);
PHP
<?php
$ch = curl_init('https://kajidata.artonlabs.com/v1/finance:kurs-bi/terbaru?' . http_build_query(['currency' => 'USD']));
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['x-api-key: ga_live_...'],
CURLOPT_TIMEOUT => 30,
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($body['ok'] ? $body['data'] : $body['error']);
Go
package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)
func main() {
params := url.Values{}
params.Set("currency", "USD")
req, _ := http.NewRequest("GET", "https://kajidata.artonlabs.com/v1/finance:kurs-bi/terbaru?"+params.Encode(), nil)
req.Header.Set("x-api-key", "ga_live_...")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var body map[string]any
json.NewDecoder(res.Body).Decode(&body)
fmt.Println(body["data"])
}
Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://kajidata.artonlabs.com/v1/finance:kurs-bi/terbaru?currency=USD"))
.header("x-api-key", "ga_live_...")
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
Ruby
require "net/http"
require "json"
uri = URI("https://kajidata.artonlabs.com/v1/finance:kurs-bi/terbaru")
uri.query = URI.encode_www_form({"currency" => "USD"})
request = Net::HTTP::Get.new(uri)
request["x-api-key"] = "ga_live_..."
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") { |http| http.request(request) }
body = JSON.parse(response.body)
puts body["ok"] ? body["data"] : body["error"]
C#
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "ga_live_...");
var json = await client.GetStringAsync("https://kajidata.artonlabs.com/v1/finance:kurs-bi/terbaru?currency=USD");
Console.WriteLine(json);