Discover/Go API
live

Go APIjdih.kemenkeu.go.id

Search and retrieve Indonesian Ministry of Finance legal documents via 4 endpoints. Access regulations, ministerial decrees, metadata, and file downloads.

Endpoint health
verified 4d ago
get_document_detail
get_document_files
get_jenis_dokumen_options
search_documents
4/4 passing latest checkself-healing
Endpoints
4
Updated
26d ago

What is the Go API?

The JDIH Kemenkeu API provides 4 endpoints for searching and retrieving legal documents from Indonesia's Ministry of Finance legal document database. Using search_documents, you can run full-text searches across regulations, ministerial decrees, and other legal products, filtering by document type, year, issuing body, topic, and status. Results include metadata fields like produk_hukum_id, slug, judul, status, and tanggal_penetapan, and paginated responses let you traverse the full corpus.

Try it
Tajuk Entri Utama (Issuing Body) filter.
Page number for pagination.
Topic/Theme filter.
Document label filter.
Document number filter.
Sort order.
Year of publication filter (e.g. '2026').
Document type filter. Use get_jenis_dokumen_options to discover valid values.
Document status filter.
Search keyword to find in document titles and content.
api.parse.bot/scraper/28adf406-de91-41c1-8d27-973ab86b332a/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/28adf406-de91-41c1-8d27-973ab86b332a/search_documents?teu=Kementerian+Keuangan&page=1&tema=Perpajakan&label=PAJAK&nomor=39&order=desc&tahun=2026&bentuk=Peraturan+Menteri&status=Berlaku&keyword=pajak' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 jdih-kemenkeu-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: JDIH Kemenkeu SDK — search Indonesian Ministry of Finance legal documents."""
from parse_apis.jdih_kemenkeu_api import (
    JDIHKemenkeu, DocumentType, DocumentStatus, Sort, DocumentNotFound
)

client = JDIHKemenkeu()

# Discover available document types and their counts.
for doc_type in client.documenttypeoptions.list(limit=5):
    print(doc_type.judul, doc_type.total)

# Search for active ministerial regulations about tax, sorted by newest first.
for doc in client.documentsummaries.search(
    keyword="pajak",
    bentuk=DocumentType.PERATURAN_MENTERI,
    status=DocumentStatus.BERLAKU,
    order=Sort.DESC,
    limit=3,
):
    print(doc.nomor, doc.judul, doc.tahun)

# Drill into one result to get full detail including files.
result = client.documentsummaries.search(keyword="pajak", limit=1).first()
if result:
    detail = result.details()
    print(detail.judul, detail.teu, detail.unit)

    # List downloadable files for this document.
    for f in detail.files(limit=5):
        print(f.filename, f.size_kb, f.keterangan)

# Fetch a document directly by slug when the identifier is already known.
try:
    doc = client.documents.get(slug="pmk-39-tahun-2026")
    print(doc.nomor, doc.status, doc.tanggal_penetapan)
except DocumentNotFound as exc:
    print(f"Document not found: {exc.slug}")

print("exercised: documenttypeoptions.list / documentsummaries.search / details / files / documents.get")
All endpoints · 4 totalmissing one? ·

Full-text search over the Indonesian Ministry of Finance legal document database. Supports filtering by document type, year, status, issuing body, topic, and label. Results are paginated and sortable by date or relevance. Each result includes document metadata (title, number, year, status, slug) suitable for drilling into detail or files.

Input
ParamTypeDescription
teustringTajuk Entri Utama (Issuing Body) filter.
pageintegerPage number for pagination.
temastringTopic/Theme filter.
labelstringDocument label filter.
nomorstringDocument number filter.
orderstringSort order.
tahunstringYear of publication filter (e.g. '2026').
bentukstringDocument type filter. Use get_jenis_dokumen_options to discover valid values.
statusstringDocument status filter.
keywordstringSearch keyword to find in document titles and content.
Response
{
  "type": "object",
  "fields": {
    "items": "array of document summary objects with produk_hukum_id, slug, bentuk, no, tahun, nomor, status, judul, teu, tanggal_penetapan, tanggal_pengundangan, full_text_pdf, label, tematik",
    "query": "object containing the query parameters used",
    "total_pages": "integer total number of pages",
    "current_page": "integer current page number",
    "total_results": "integer total number of matching documents"
  },
  "sample": {
    "data": {
      "items": [
        {
          "no": 39,
          "teu": "Kementerian Keuangan",
          "slug": "pmk-39-tahun-2026",
          "judul": "Perubahan atas Peraturan Menteri Keuangan Nomor 211/PMK.03/2017 tentang Tata Cara Penghitungan Tunjangan Kinerja Pegawai di Lingkungan Direktorat Jenderal Pajak",
          "label": [
            "TUNJANGAN KINERJA PEGAWAI ",
            "DIREKTORAT JENDERAL PAJAK "
          ],
          "nomor": "PMK 39 TAHUN 2026",
          "tahun": 2026,
          "bentuk": "Peraturan Menteri",
          "status": "Berlaku",
          "tematik": [],
          "full_text_pdf": "/api/download/7EA3940D-673A-40EB-981B-0F585275031A/2026pmkeuangan039.pdf",
          "produk_hukum_id": "f216a1ad-ddc3-4241-ac87-059c8e54e5ed",
          "tanggal_penetapan": "2026-05-29 12:00:00",
          "tanggal_pengundangan": "2026-06-02 12:00:00"
        }
      ],
      "query": {
        "page": "1",
        "order": "desc",
        "keyword": "pajak"
      },
      "total_pages": 1000,
      "current_page": 1,
      "total_results": 10000
    },
    "status": "success"
  }
}

About the Go API

Search and Filter Legal Documents

The search_documents endpoint is the primary entry point. It accepts optional parameters including bentuk (document type), tahun (publication year), teu (issuing body), tema (topic), label, nomor (document number), order (sort order), and page for pagination. Responses return an items array of document summary objects alongside total_results, total_pages, and current_page counters — useful for building paginated document browsers or bulk exports. Use get_jenis_dokumen_options to discover the full vocabulary of valid bentuk values along with per-type document counts before constructing search queries.

Retrieving Full Document Records

Once you have a slug from search_documents results, pass it to get_document_detail to retrieve the full metadata record. This includes judul (title), nomor, status, teu (issuing body), unit (organizational unit), kode_unit, tanggal_penetapan (enactment date), a files array of attached documents, and a links array of related document references. The files array items carry jenis (type code), keterangan (description), filename, size_kb, and url for direct download.

Accessing Document Files

The get_document_files endpoint is a lightweight alternative when you only need the file listing for a given document. Supply the same slug and receive the files array with the same shape — jenis, keterangan, filename, size_kb, and download url — without the full metadata payload. This is efficient for pipelines that separately resolve metadata and file access.

Document Type Discovery

get_jenis_dokumen_options takes no inputs and returns an items array of all document type categories in the database. Each item has a judul (display label), value (the string to pass as bentuk in search_documents), and a total count of documents in that category. Run this once to map the taxonomy before building filter logic or reporting dashboards.

Reliability & maintenanceVerified

The Go API is a managed, monitored endpoint for jdih.kemenkeu.go.id — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jdih.kemenkeu.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 jdih.kemenkeu.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.

Last verified
4d ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitoring newly enacted Ministry of Finance regulations by querying search_documents filtered by tahun and sorted by date.
  • Building a compliance reference tool that retrieves full document metadata via get_document_detail for a list of known regulatory slugs.
  • Downloading all attached files for a specific ministerial decree using get_document_files with the document's slug.
  • Enumerating the complete document type taxonomy with get_jenis_dokumen_options to populate filter dropdowns in a legal research UI.
  • Tracking the status field across a set of documents to identify which regulations are still active versus superseded.
  • Cross-referencing linked documents using the links array returned by get_document_detail to trace regulatory lineage.
  • Aggregating document counts by type from get_jenis_dokumen_options for reporting on the volume of different legal product categories.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does jdih.kemenkeu.go.id have an official developer API?+
The JDIH Kemenkeu website (jdih.kemenkeu.go.id) does not publish a documented public developer API or SDK. This Parse API provides structured programmatic access to the same legal document data available through the site.
How do I know which values are valid for the `bentuk` filter in `search_documents`?+
Call get_jenis_dokumen_options first. It returns every document type category in the database with its value string (use this as bentuk) and a total count. This avoids guessing type names and ensures your filter matches actual database vocabulary.
Does the API return the full text content of legal documents?+
The API returns document metadata — title, number, issuing body, enactment date, status, and linked file URLs — but not the extracted plain text of the document body. The files array in get_document_detail and get_document_files provides download URLs pointing to the attached files (typically PDFs). You can fork this API on Parse and revise it to add a document-text extraction endpoint if your workflow requires parsed content.
Is there a way to retrieve all documents without a keyword query?+
The search_documents endpoint supports fully optional inputs — you can call it with only page and order to browse the entire corpus without a keyword. Combine tahun or bentuk alone to narrow by year or type without free-text input. Pagination is controlled via the page parameter and the total_pages field in the response.
Does the API cover legal documents from other Indonesian ministries or agencies?+
No. The API covers only the JDIH Kemenkeu database, which is scoped to the Indonesian Ministry of Finance and its organizational units. Documents from other ministries or the central JDIH network are not included. You can fork this API on Parse and revise it to point at another JDIH portal if you need coverage from a different ministry.
Page content last updated . Spec covers 4 endpoints from jdih.kemenkeu.go.id.
Related APIs in Government PublicSee all →
idx.co.id API
Access real-time and historical data from the Indonesia Stock Exchange (IDX). Retrieve stock listings, daily trading summaries, market indices, company profiles, financial and annual reports, corporate event calendars, announcements, IPO data, and market overviews.
pddikti.kemdiktisaintek.go.id API
Search and retrieve comprehensive information about Indonesian higher education institutions, including details about students, lecturers, universities, and their study programs from the official national education database. Quickly look up specific universities, academic staff profiles, and available degree programs to research educational options or verify institution credentials.
detik.com API
Search and browse news articles from Detik.com by keywords, topics, or specific channels to get the latest headlines and full article details. Find news tailored to your interests through tag-based browsing and access real-time updates across different content categories.
referensi.data.kemendikdasmen.go.id API
Search and browse Indonesian educational institutions by location hierarchy, view detailed institution information, and access foundation data from the Ministry of Education's official reference portal. Find schools, colleges, and educational programs across provinces, districts, and sub-districts while checking institution status and service program details.
indiankanoon.org API
indiankanoon.org API
moj.gov.kh API
Access Cambodia's official legal resources including books, news, laws, and regulations through the Ministry of Justice's digital library. Search and retrieve information about legal documents, news events, and official publications to stay informed on Cambodian legislation and justice updates.
legifrance.gouv.fr API
Search and retrieve official French legal documents, laws, and unclaimed estate notices from the Journal Officiel (JORF), including the ability to browse the latest published issues. Find specific legal texts and succession notices to stay informed about French legislation and inheritance announcements.
sedarplus.ca API
sedarplus.ca API