Indo Court Atlas APIindocourtatlas.com ↗
Search and browse Indonesian court cases, legal decisions, and judicial records. Access case parties, verdicts, judges, and court metadata via 2 endpoints.
What is the Indo Court Atlas API?
The Indo Court Atlas API provides access to Indonesian judicial records through 2 endpoints — search_cases and list_cases — covering case numbers, party names, verdict dates, judges, clerks, and court classifications from courts across Indonesia. Use search_cases for full-text lookup by case number or party name, or use list_cases to paginate detailed records filtered by court category, case type, and year.
curl -X GET 'https://api.parse.bot/scraper/ddbb8954-f3b4-4fb1-9562-c61acaac3891/search_cases?limit=5&query=korupsi' \ -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 indocourtatlas-com-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: IndoCourtAtlas SDK — bounded, re-runnable; every call capped."""
from parse_apis.indocourtatlas_com_api import IndoCourtAtlas, CourtCategory, ParseError
client = IndoCourtAtlas()
# Search for corruption-related cases by keyword (returns summary fields)
for case in client.cases.search(query="korupsi", limit=3):
print(case.register_number, case.court, case.year)
# List cases from district courts filtered by year (returns full detail)
for case in client.cases.list(court_category=CourtCategory.PN, year=2020, limit=3):
print(case.title, case.classification, case.legally_binding)
# Drill into a single result with error handling
try:
item = client.cases.list(court_category=CourtCategory.MA, limit=1).first()
if item:
print(item.register_number, item.judges, item.notes)
except ParseError as e:
print(f"request failed: {e}")
print("exercised: cases.search, cases.list")
Full-text search across all Indonesian court cases. Matches case numbers, titles, and party names. Returns summary records ordered by relevance with a subset of case fields (id, registerNumber, title, parties, court, courtCategory, year, verdictDate). Use list_cases for full record detail.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results to return (1-100). |
| queryrequired | string | Search text matched against case numbers, titles, and party names. |
{
"type": "object",
"fields": {
"cases": "array of case summary objects with id, registerNumber, title, parties, court, courtCategory, year, verdictDate",
"query": "the search query echoed back"
},
"sample": {
"data": {
"cases": [
{
"id": "847d0ebc856b9cb57cbe75d31c7591ea",
"year": null,
"court": "PN Mamuju",
"title": "Putusan PN MAMUJU Nomor 232/Pid.B/2007/PN.Mu Tahun 1970",
"parties": ". Pidana Korupsi\n.- H. MUH. TAHIR KARIM,SE",
"verdictDate": null,
"courtCategory": "PN",
"registerNumber": "232/Pid.B/2007/PN.Mu"
}
],
"query": "korupsi"
},
"status": "success"
}
}About the Indo Court Atlas API
What the API Returns
The search_cases endpoint accepts a required query string and matches it against case numbers, titles, and party names across the full Indonesian court database. Results come back as summary records — each including id, registerNumber, title, parties, court, courtCategory, year, and verdictDate — ordered by relevance. The endpoint echoes the original query back in the response. You can cap results with an optional limit parameter (1–100).
Detailed Case Records via list_cases
The list_cases endpoint returns paginated, detailed case records. In addition to the summary fields available from search, these records include judges, clerk, classification, verdict notes, and related metadata. You can filter by court_category (a category code), case_type (using Indonesian court labels such as 'Pidana Umum' or 'Perdata Khusus / PHI'), and year. Pagination is controlled via page and limit parameters; the response includes total so you can calculate how many pages exist for a given filter set.
Coverage and Filtering Notes
Case type values use the labels as defined by Indonesian courts — for example, 'Pidana Umum' for general criminal cases and 'Perdata Khusus / PHI' for special civil/industrial relations cases. Omitting court_category returns cases across all categories. The year filter narrows records to a specific filing year. Both endpoints return results in Indonesian as court records are natively in Bahasa Indonesia.
The Indo Court Atlas API is a managed, monitored endpoint for indocourtatlas.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when indocourtatlas.com 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 indocourtatlas.com 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?+
- Identify prior rulings involving a specific company or individual using
search_caseswith party name queries - Build a legal research tool that filters Indonesian criminal cases (
Pidana Umum) by year usinglist_cases - Track verdict dates across courts for a specific case type to analyze judicial timelines
- Cross-reference register numbers from documents against court records to verify case existence
- Compile judge and clerk assignment data across court categories for judicial workload analysis
- Monitor newly filed cases in a specific court category by paginating
list_casesfiltered by year - Research industrial relations tribunal (PHI) decisions using the
Perdata Khusus / PHIcase type filter
| 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 indocourtatlas.com have an official developer API?+
What does `list_cases` return that `search_cases` does not?+
list_cases returns full case records that include judges, clerk, classification, and verdict notes alongside the standard summary fields. search_cases returns only the summary subset — id, registerNumber, title, parties, court, courtCategory, year, and verdictDate — ranked by relevance to the query string.Can I retrieve the full legal text or document attachments for a case?+
Are court categories and case types documented somewhere?+
'Pidana Umum' for general criminal matters and 'Perdata Khusus / PHI' for industrial relations civil cases. Omitting court_category from list_cases returns records across all categories, which is a practical way to discover valid values from live data.How does pagination work in `list_cases`, and is there a hard limit on results?+
list_cases response includes page, limit, and total fields. Use the page parameter to step through results and limit (1–100) to control page size. The total field tells you how many records match the current filter combination, so you can calculate the number of pages needed to consume the full result set.