API Indonesia docsAPI referenceGet an API keyllms.txt

Schools, universities and hospitals

Documentation index for AI agents: /llms.txt. Every page is also available as markdown: add .md to the URL.

Schools by NPSN, universities and hospitals.

Schools: 93,500+ (by NPSN). Universities and other higher-education institutions: 4,200+ (active records). Hospitals: 2,900+.

All endpoints need the x-api-key header (see Authentication) and return the standard envelope. A successful request costs 2 credits.

Endpoints on this page

Schools

GET /api/v1/sekolah

List schools. Returns a paginated list of schools with name/NPSN search plus region, level, status, and accreditation filters.

ParameterInRequiredTypeDescription
provinsi_idquerynostringFilter by province code.
kabupaten_idquerynostringFilter by regency/city code.
district_idquerynostringFilter by district ID. Indonesian alias: kecamatan_id.
district_codequerynostringFilter by district code. Indonesian alias: kecamatan_code.
jenisquerynostringSchool level: SD, SMP, SMA, SMK, or SLB.
gradequerynostringEnglish alias for jenis/school level.
typequerynostringAdditional alias for jenis/school level.
statusquerynostringSchool status: Negeri (state) or Swasta (private).
accreditationquerynostringFilter by accreditation grade. Indonesian alias: akreditasi.
qquerynostringExact NPSN or school-name prefix, minimum 2 characters.
pagequerynointegerPage to retrieve. Defaults to 1.
per_pagequerynointegerItems per page. Defaults to 50, maximum 200.
curl "https://use.apiindonesia.id/api/v1/sekolah" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "npsn": "20219557",
      "name": "SMA NEGERI 3 BANDUNG",
      "jenis": "SMA",
      "status": "Negeri",
      "province_id": "32",
      "regency_id": "3273",
      "district_id": "3273190",
      "village_id": "3273190004",
      "address": "Jl. Belitung No. 8",
      "postal_code": "40113",
      "lat": -6.9106,
      "lng": 107.6183,
      "phone": "0224235154",
      "email": null,
      "website": null,
      "accreditation": "A",
      "source_name": "kemendikbud-reference",
      "source_url": "https://referensi.data.kemdikbud.go.id/",
      "source_synced_at": "2026-09-18T00:00:00Z",
      "is_active": 1
    }
  ],
  "meta": {
    "total": 27,
    "page": 1,
    "per_page": 50,
    "total_pages": 1
  }
}

Search schools. Searches schools by name. Returns up to 50 results.

ParameterInRequiredTypeDescription
qqueryyesstringSearch keyword, minimum 3 characters.
curl "https://use.apiindonesia.id/api/v1/sekolah/search?q=taruna" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "npsn": "20302879",
      "name": "SMA TARUNA NUSANTARA",
      "jenis": "SMA",
      "status": "Swasta",
      "province_id": "33",
      "regency_id": "3308",
      "accreditation": "A",
      "is_active": 1
    }
  ]
}

GET /api/v1/sekolah/{npsn}

Retrieve a school. Returns a single school by NPSN, including province, regency/city, district, and village names.

ParameterInRequiredTypeDescription
npsnpathyesstringNPSN (national school ID).
curl "https://use.apiindonesia.id/api/v1/sekolah/20219557" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "npsn": "20219557",
    "name": "SMA NEGERI 3 BANDUNG",
    "jenis": "SMA",
    "status": "Negeri",
    "province_id": "32",
    "regency_id": "3273",
    "address": "Jl. Belitung No. 8",
    "postal_code": "40113",
    "accreditation": "A",
    "is_active": 1,
    "province_name": "JAWA BARAT",
    "regency_name": "KOTA BANDUNG",
    "district_name": "SUMUR BANDUNG",
    "village_name": "MERDEKA"
  }
}

Universities

GET /api/v1/kampus

List universities. Returns a paginated, filterable list of higher-education institutions, including province and regency/city names.

ParameterInRequiredTypeDescription
qquerynostringSearch by name or abbreviation.
provincequerynostringFilter by province code. Legacy alias: provinsi_id.
regencyquerynostringFilter by regency/city code. Legacy alias: kabupaten_id.
typequerynostringType: universitas, institut, politeknik, akademi, or sekolah_tinggi. Legacy alias: jenis.
groupquerynostringGroup: PTN, PTS, PTA, or PTK. Legacy alias: kelompok.
pagequerynointegerPage to retrieve. Defaults to 1.
per_pagequerynointegerItems per page. Defaults to 50, maximum 200.
curl "https://use.apiindonesia.id/api/v1/kampus" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": "pt_001",
      "name": "INSTITUT TEKNOLOGI BANDUNG",
      "short_name": "ITB",
      "jenis": "institut",
      "kelompok": "PTN",
      "province_id": "32",
      "regency_id": "3273",
      "address": "Jl. Ganesha No. 10",
      "postal_code": "40132",
      "website": "https://itb.ac.id",
      "accreditation": "Unggul",
      "is_active": 1,
      "province_name": "JAWA BARAT",
      "regency_name": "KOTA BANDUNG"
    }
  ],
  "meta": {
    "total": 12,
    "page": 1,
    "per_page": 50,
    "total_pages": 1
  }
}

Search universities. Searches institutions by name or abbreviation. Returns up to 50 results.

ParameterInRequiredTypeDescription
qqueryyesstringSearch keyword, minimum 2 characters.
curl "https://use.apiindonesia.id/api/v1/kampus/search?q=itb" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": "pt_001",
      "name": "INSTITUT TEKNOLOGI BANDUNG",
      "short_name": "ITB",
      "jenis": "institut",
      "kelompok": "PTN",
      "province_id": "32",
      "regency_id": "3273"
    }
  ]
}

GET /api/v1/kampus/{id}

Retrieve a university. Returns a single institution by ID, including province and regency/city names.

ParameterInRequiredTypeDescription
idpathyesstringInstitution ID.
curl "https://use.apiindonesia.id/api/v1/kampus/pt_001" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "id": "pt_001",
    "name": "INSTITUT TEKNOLOGI BANDUNG",
    "short_name": "ITB",
    "jenis": "institut",
    "kelompok": "PTN",
    "province_id": "32",
    "regency_id": "3273",
    "address": "Jl. Ganesha No. 10",
    "postal_code": "40132",
    "website": "https://itb.ac.id",
    "accreditation": "Unggul",
    "is_active": 1,
    "province_name": "JAWA BARAT",
    "regency_name": "KOTA BANDUNG"
  }
}

Hospitals

GET /api/v1/rumah-sakit

List hospitals. Compact list with name/code search and region, type, class, ownership, and BLU filters. Use the detail endpoint for service, staff, bed, and facility collections.

ParameterInRequiredTypeDescription
qquerynostringSearch partial hospital name or code.
codequerynostringFilter by exact SIRS code.
province_idquerynostringFilter by province code. Legacy alias: provinsi_id.
regency_idquerynostringFilter by regency/city code. Legacy alias: kabupaten_id.
typequerynostringFilter by raw SIRS hospital type or legacy type code. Alias: jenis.
classquerynostringFilter by hospital class. Alias: kelas.
ownershipquerynostringFilter by ownership. Alias: kepemilikan.
bluquerynostringFilter BLU/BLUD status by SIRS label or boolean. Alias: blu_status/is_blu.
pagequerynointegerPage to retrieve. Defaults to 1.
per_pagequerynointegerItems per page. Defaults to 50, maximum 200.
curl "https://use.apiindonesia.id/api/v1/rumah-sakit" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": "rs-3204086",
      "code": "3204086",
      "name": "RS UMUM DAERAH AL IHSAN PROVINSI JAWA BARAT",
      "jenis": "RSUM",
      "hospital_type": "RS_RUJUKAN_PROVINSI",
      "kelas": null,
      "ownership": null,
      "is_blu": 0,
      "blu_status": null,
      "province_id": "32",
      "regency_id": "3204",
      "lat": -7.0081,
      "lng": 107.624,
      "beds_total": 462,
      "province_name": "JAWA BARAT",
      "regency_name": "KABUPATEN BANDUNG"
    }
  ],
  "meta": {
    "total": 1,
    "page": 1,
    "per_page": 50,
    "total_pages": 1
  }
}

Search hospitals. Searches hospitals by name/code with the same filters as the list endpoint. Returns up to 50 results.

ParameterInRequiredTypeDescription
qquerynostringName/code keyword, minimum 2 characters when code is absent.
codequerynostringExact SIRS code.
curl "https://use.apiindonesia.id/api/v1/rumah-sakit/search" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": "rs_3273_001",
      "name": "RSUP Dr. Hasan Sadikin",
      "jenis": "RSUM",
      "kelas": "A",
      "ownership": "Kemenkes",
      "province_id": "32",
      "regency_id": "3273"
    }
  ]
}

GET /api/v1/rumah-sakit/{id}

Retrieve a hospital. Returns a full profile by internal ID or SIRS code, including available bed, service, staff, facility, provenance, and synchronization details.

ParameterInRequiredTypeDescription
idpathyesstringInternal ID or SIRS code.
curl "https://use.apiindonesia.id/api/v1/rumah-sakit/3204086" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "id": "rs-3204086",
    "code": "3204086",
    "name": "RS UMUM DAERAH AL IHSAN PROVINSI JAWA BARAT",
    "jenis": "RSUM",
    "hospital_type": "RS_RUJUKAN_PROVINSI",
    "kelas": null,
    "ownership": null,
    "is_blu": 0,
    "blu_status": null,
    "director": null,
    "address": "JL. KI ASTRAMANGGALA BALE ENDAH KAB. BANDUNG",
    "phone": "(022) 5940872",
    "beds_total": 462,
    "source_name": "Pusdatin Kemenkes export via zakiego/data-pusdatin-kemenkes",
    "source_url": "https://github.com/zakiego/data-pusdatin-kemenkes",
    "province_name": "JAWA BARAT",
    "regency_name": "KABUPATEN BANDUNG",
    "beds": [],
    "services": [],
    "staff": [],
    "facilities": [],
    "provenance": {
      "source_record_code": "3204086"
    }
  }
}