Go APIpddikti.kemdiktisaintek.go.id ↗
Access Indonesia's PDDikti database via API. Search students, lecturers, universities, and study programs. Returns accreditation, enrollment status, and more.
What is the Go API?
The PDDikti API provides access to Indonesia's official Pangkalan Data Pendidikan Tinggi across 5 endpoints, covering students, lecturers, universities, and study programs. The search endpoint returns results grouped by type (mahasiswa, dosen, pt, prodi) in a single call, while detail endpoints like get_student_detail and get_university_programs expose granular fields including enrollment status, accreditation, lecturer-to-student ratios, and geographic coordinates.
curl -X GET 'https://api.parse.bot/scraper/7adc51d7-b63d-45f5-87a7-49a7987989c3/search?keyword=Universitas+Indonesia&category=all' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace pddikti-kemdiktisaintek-go-id-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: PDDikti SDK — bounded, re-runnable; every call capped."""
from parse_apis.PDDikti_API import PDDikti, SearchCategory, NotFoundError_
client = PDDikti()
# Search for students across all categories
for item in client.search_results.search(keyword="Tsabita Afifah", category=SearchCategory.ALL, limit=3):
print(item.nama, item.nama_pt)
# Drill-down: take one student and get full details
student_summary = client.search_results.search(keyword="Tsabita Afifah", limit=1).first()
if student_summary:
full = student_summary.details()
print(full.nama, full.nim, full.nama_pt, full.jenjang)
# University detail with programs sub-resource
try:
result = client.search_results.search(keyword="Universitas Brawijaya", category=SearchCategory.PT, limit=1).first()
if result:
uni = result.details()
print(uni.nama_pt, uni.akreditasi_pt, uni.status_pt)
for prog in uni.programs.list(semester="20251", limit=3):
print(prog.nama_prodi, prog.jenjang_prodi, prog.akreditasi)
except NotFoundError_ as e:
print("not found:", e)
print("exercised: search_results.search / StudentSummary.details / UniversitySummary.details / University.programs.list")
Search across all categories (students, lecturers, universities, study programs) or a specific category in Indonesia's higher education database. When category is 'all', results are grouped by type (mahasiswa, dosen, pt, prodi). When a specific category is chosen, results are returned in a flat 'results' array. Pagination is not supported server-side; all matching results are returned.
| Param | Type | Description |
|---|---|---|
| keywordrequired | string | Search keyword (name of student, lecturer, university, or study program). |
| category | string | Category to search in. |
{
"type": "object",
"fields": {
"pt": "array of university results (present when category=all)",
"dosen": "array of lecturer results (present when category=all)",
"prodi": "array of study program results (present when category=all)",
"results": "array of results (present when a specific category is used)",
"mahasiswa": "array of student results (present when category=all)"
},
"sample": {
"data": {
"pt": [
{
"id": "def==",
"kode": "001002",
"nama": "UNIVERSITAS INDONESIA",
"nama_singkat": "UI"
}
],
"dosen": [
{
"id": "xyz==",
"nama": "NAZARUDIN",
"nidn": "0324058301",
"nuptk": "4856761662130182",
"nama_pt": "UNIVERSITAS INDONESIA",
"nama_prodi": "SASTRA INDONESIA",
"sinkatan_pt": "UI"
}
],
"prodi": [
{
"id": "ghi==",
"pt": "UNIVERSITAS INDONESIA",
"nama": "SASTRA INDONESIA",
"jenjang": "S1",
"pt_singkat": "UI"
}
],
"mahasiswa": [
{
"id": "abc==",
"nim": "195120407111047",
"nama": "TSABITA AFIFAH KHOIRUNNISA",
"nama_pt": "UNIVERSITAS BRAWIJAYA",
"nama_prodi": "HUBUNGAN INTERNASIONAL",
"sinkatan_pt": "UB"
}
]
},
"status": "success"
}
}About the Go API
Search and Discovery
The search endpoint accepts a keyword string and an optional category parameter. When category is omitted or set to all, the response contains four arrays — mahasiswa (students), dosen (lecturers), pt (universities), and prodi (study programs) — each with encrypted id fields used to call the detail endpoints. When a specific category is passed, results are returned under a flat results array instead.
Student and Lecturer Detail
get_student_detail takes an encrypted student_id from the search results and returns fields including nim (student number), nama, jenjang (degree level), nama_pt, kode_prodi, and encrypted IDs (id_pt, id_sms) that chain into the university detail endpoint. get_lecturer_detail returns jabatan_akademik (academic position), status_aktivitas, status_ikatan_kerja (employment type), and pendidikan_tertinggi (highest education level), along with university and study program affiliation.
University Detail and Programs
get_university_detail returns institutional metadata: alamat (address), email, website, no_tel, no_fax, pembina (supervising ministry), kelompok (institution group), and geolocation via bujur_pt (longitude). get_university_programs accepts a university_id and an optional semester code in YYYYS format (e.g. 20231 for the odd semester of 2023), and returns a total count plus a programs array with degree level, accreditation, student count, lecturer count, and lecturer-student ratio for each program.
The Go API is a managed, monitored endpoint for pddikti.kemdiktisaintek.go.id — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pddikti.kemdiktisaintek.go.id changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official pddikti.kemdiktisaintek.go.id API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Verify a student's enrollment status and degree level using
get_student_detailfields likejenjangandnim. - Build a university directory by querying
get_university_detailfor address, website, and geolocation data. - Compare study programs at a university by semester using
get_university_programsto inspect accreditation and lecturer-student ratios. - Look up a lecturer's academic position and employment type via
jabatan_akademikandstatus_ikatan_kerjafields. - Aggregate institution groups and supervising ministries across multiple universities using the
kelompokandpembinafields. - Search for all universities or study programs matching a keyword to support higher education research or journalism.
- Chain
search→get_student_detail→get_university_detailto resolve a student's full institutional context from a single name query.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does PDDikti have an official public developer API?+
What does the `search` endpoint return when no category is specified?+
category is omitted or set to all, the response contains four typed arrays: mahasiswa (students), dosen (lecturers), pt (universities), and prodi (study programs). Each item in those arrays includes an encrypted id you pass to the corresponding detail endpoint. If you specify a category, results come back as a single flat results array instead.Does the API return historical semester data or transcript records for students?+
get_student_detail returns current enrollment metadata — name, student number, university, study program, and degree level — but not semester-by-semester records or grade history. get_university_programs does accept a semester parameter to retrieve program snapshots per term. You can fork this API on Parse and revise it to add an endpoint targeting historical student academic records if that data becomes available.What is the `semester` parameter format for `get_university_programs`?+
semester parameter uses the format YYYYS, where YYYY is the four-digit academic year and S is either 1 (odd/ganjil semester) or 2 (even/genap semester). For example, 20231 targets the odd semester of 2023. If omitted, the endpoint returns data for the current or most recent available semester.Does the API cover private universities and vocational institutions, or only state universities?+
kelompok and pembina fields in get_university_detail indicate the institution group and supervising ministry, which can help distinguish between types. The API does not currently expose a filter parameter to restrict search results to a specific institution group. You can fork it on Parse and revise to add that filtering endpoint.