Wilayah Administratif Indonesia
Freegeo:wilayah
38 provinsi, kabupaten/kota, kecamatan, dan kelurahan/desa beserta kode Kemendagri, sesuai Kepmendagri No 300.2.2-2138 Tahun 2025. Cocok untuk dropdown alamat bertingkat.
Belum punya key? Daftar gratis
GET/v1/geo:wilayah/kabupaten
Kabupaten/kota dalam satu provinsi.
Cache 2592000 dtk
1 kuota / request
geo.wilayah.kabupaten
cURL
curl -H "x-api-key: ga_live_..." "https://kajidata.artonlabs.com/v1/geo:wilayah/kabupaten?province_id=31"
Python
import requests
response = requests.get(
"https://kajidata.artonlabs.com/v1/geo:wilayah/kabupaten",
params={"province_id": "31"},
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({"province_id": "31"});
const response = await fetch(`https://kajidata.artonlabs.com/v1/geo:wilayah/kabupaten?${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/geo:wilayah/kabupaten?' . http_build_query(['province_id' => '31']));
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("province_id", "31")
req, _ := http.NewRequest("GET", "https://kajidata.artonlabs.com/v1/geo:wilayah/kabupaten?"+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/geo:wilayah/kabupaten?province_id=31"))
.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/geo:wilayah/kabupaten")
uri.query = URI.encode_www_form({"province_id" => "31"})
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/geo:wilayah/kabupaten?province_id=31");
Console.WriteLine(json);
GET/v1/geo:wilayah/kecamatan
Kecamatan dalam satu kabupaten/kota.
Cache 2592000 dtk
1 kuota / request
geo.wilayah.kecamatan
cURL
curl -H "x-api-key: ga_live_..." "https://kajidata.artonlabs.com/v1/geo:wilayah/kecamatan?regency_id=31.71"
Python
import requests
response = requests.get(
"https://kajidata.artonlabs.com/v1/geo:wilayah/kecamatan",
params={"regency_id": "31.71"},
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({"regency_id": "31.71"});
const response = await fetch(`https://kajidata.artonlabs.com/v1/geo:wilayah/kecamatan?${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/geo:wilayah/kecamatan?' . http_build_query(['regency_id' => '31.71']));
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("regency_id", "31.71")
req, _ := http.NewRequest("GET", "https://kajidata.artonlabs.com/v1/geo:wilayah/kecamatan?"+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/geo:wilayah/kecamatan?regency_id=31.71"))
.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/geo:wilayah/kecamatan")
uri.query = URI.encode_www_form({"regency_id" => "31.71"})
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/geo:wilayah/kecamatan?regency_id=31.71");
Console.WriteLine(json);
GET/v1/geo:wilayah/kelurahan
Kelurahan/desa dalam satu kecamatan.
Cache 2592000 dtk
1 kuota / request
geo.wilayah.kelurahan
cURL
curl -H "x-api-key: ga_live_..." "https://kajidata.artonlabs.com/v1/geo:wilayah/kelurahan?district_id=31.71.01"
Python
import requests
response = requests.get(
"https://kajidata.artonlabs.com/v1/geo:wilayah/kelurahan",
params={"district_id": "31.71.01"},
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({"district_id": "31.71.01"});
const response = await fetch(`https://kajidata.artonlabs.com/v1/geo:wilayah/kelurahan?${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/geo:wilayah/kelurahan?' . http_build_query(['district_id' => '31.71.01']));
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("district_id", "31.71.01")
req, _ := http.NewRequest("GET", "https://kajidata.artonlabs.com/v1/geo:wilayah/kelurahan?"+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/geo:wilayah/kelurahan?district_id=31.71.01"))
.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/geo:wilayah/kelurahan")
uri.query = URI.encode_www_form({"district_id" => "31.71.01"})
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/geo:wilayah/kelurahan?district_id=31.71.01");
Console.WriteLine(json);
GET/v1/geo:wilayah/provinsi
Semua provinsi.
Cache 2592000 dtk
1 kuota / request
geo.wilayah.provinsi
cURL
curl -H "x-api-key: ga_live_..." "https://kajidata.artonlabs.com/v1/geo:wilayah/provinsi"
Python
import requests
response = requests.get(
"https://kajidata.artonlabs.com/v1/geo:wilayah/provinsi",
headers={"x-api-key": "ga_live_..."},
timeout=30,
)
body = response.json()
print(body["data"] if body["ok"] else body["error"])
JavaScript
const response = await fetch("https://kajidata.artonlabs.com/v1/geo:wilayah/provinsi", {
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/geo:wilayah/provinsi');
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"
)
func main() {
req, _ := http.NewRequest("GET", "https://kajidata.artonlabs.com/v1/geo:wilayah/provinsi", 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/geo:wilayah/provinsi"))
.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/geo:wilayah/provinsi")
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/geo:wilayah/provinsi");
Console.WriteLine(json);