API Indonesia docsAPI referenceGet an API keyllms.txt

Halal, BPOM, trademarks and OJK

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

BPJPH halal certificates, BPOM products, DJKI trademarks and OJK legal/illegal investment lists.

Lookups against public registers: halal certification (BPJPH), BPOM registered products, DJKI trademarks and OJK lists of licensed and illegal investment products and apps.

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

Halal (BPJPH)

Search halal supervisors/businesses from the BPJPH portal. On-demand: fetches upstream on cache miss, 24h TTL per keyword.

GET /api/v1/halal

Search halal. Search by business or supervisor name.

ParameterInRequiredTypeDescription
qqueryyesstringKeyword (min. 2 chars)
limitquerynointegerMax 200, default 50
curl "https://use.apiindonesia.id/api/v1/halal?q=indomie" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id_penyelia": "...",
      "company_name": "Dapoer indomie",
      "supervisor_name": "..."
    }
  ],
  "meta": {
    "attribution": "Sumber: BPJPH",
    "refreshed": true,
    "cache_ttl_hours": 24
  }
}

GET /api/v1/halal/{id}

Supervisor detail. Get one record by id_penyelia UUID.

ParameterInRequiredTypeDescription
idpathyesstringSupervisor UUID
curl "https://use.apiindonesia.id/api/v1/halal/C7A753BB-3282-4D57-A485-B2B724D8267C" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "id_penyelia": "...",
    "company_name": "...",
    "issuer": "BPJPH"
  }
}

BPOM Products

Search BPOM registered products (NIE, name, ingredients). On-demand with 24h cache per keyword.

GET /api/v1/bpom

Search products. Search registered medicine/traditional/cosmetic products.

ParameterInRequiredTypeDescription
qqueryyesstringKeyword (min. 2 chars)
curl "https://use.apiindonesia.id/api/v1/bpom?q=paracetamol" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "nie": "DBL9424502004A1",
      "product_name": "PANADOL EXTRA",
      "status": "Berlaku"
    }
  ],
  "meta": {
    "attribution": "Sumber: BPOM RI",
    "refreshed": true
  }
}

GET /api/v1/bpom/{nie}

NIE detail. Get product by NIE (registration number).

ParameterInRequiredTypeDescription
niepathyesstringNIE e.g. DBL9424502004A1
curl "https://use.apiindonesia.id/api/v1/bpom/DBL9424502004A1" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "nie": "DBL9424502004A1",
    "product_name": "PANADOL EXTRA",
    "category": "Obat"
  }
}

Trademarks (DJKI)

Indonesian trademark data from DJKI.

Search registered trademarks. Returns registered trademarks matching a keyword. Search covers the mark-name column; use optional parameters to filter by owner, NICE class, or search within the owner column instead.

ParameterInRequiredTypeDescription
qqueryyesstringSearch keyword, e.g. garuda.
pagequerynointegerPage to retrieve. Defaults to 1.
limitquerynointegerItems per page. Defaults to 20.
ownerquerynostringFilter by trademark owner name.
classquerynostringFilter by NICE class, e.g. 35.
inquerynostringSet in=owner to search the keyword within the owner column instead of the mark name.
curl "https://use.apiindonesia.id/api/v1/merek/search?q=garuda" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "success": true,
  "data": [
    {
      "app_number": "DID2019050403",
      "mark_name": "GARUDA SUPER",
      "class": "16",
      "owner": "DARWIN EFFENDY",
      "consultant": null,
      "reg_date": "2019-09-03"
    },
    {
      "app_number": "JID2019056084",
      "mark_name": "GARUDA + GAMBAR",
      "class": "35",
      "owner": "SURYA CHANDRA",
      "consultant": "Hendra Prasetya M.Si",
      "reg_date": "2019-09-24"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 5,
    "total": 1755
  }
}

GET /api/v1/merek/{appNumber}

Trademark detail. Returns details of a single trademark by application number. If the number only appears in the publication journal (not yet registered), the response still returns 200 with journal data plus a journal_events list.

ParameterInRequiredTypeDescription
appNumberpathyesstringTrademark application number, e.g. DID2019050403.
curl "https://use.apiindonesia.id/api/v1/merek/DID2019050403" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "success": true,
  "data": {
    "app_number": "DID2019050403",
    "mark_name": "GARUDA SUPER",
    "class": "16",
    "owner": "DARWIN EFFENDY",
    "consultant": null,
    "reg_date": "2019-09-03",
    "journal_events": []
  }
}

GET /api/v1/merek/journal

Search the trademark journal. Returns trademark applications published in the DJKI Berita Resmi Merek journal. Coverage is a rolling window of recent editions (roughly twice a month, last few months). Use it to monitor lookalike filings during the opposition window.

ParameterInRequiredTypeDescription
qquerynostringSearch keyword, e.g. garuda.
pagequerynointegerPage to retrieve. Defaults to 1.
limitquerynointegerItems per page. Defaults to 20.
journal_noquerynostringFilter by journal number, e.g. 140/P-M/VII/A/2026.
curl "https://use.apiindonesia.id/api/v1/merek/journal" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "success": true,
  "data": [
    {
      "app_number": "DID2026064189",
      "journal_no": "140/P-M/VII/A/2026",
      "journal_date": "2026-07-10",
      "opposition_end": "2026-09-10",
      "mark_name": "GLS Garuda Lintas Segoro + Logo",
      "class": "20",
      "owner": "LILY",
      "filing_date": "2026-07-02"
    },
    {
      "app_number": "JID2026033404",
      "journal_no": "137/P-M/VII/A/2026",
      "journal_date": "2026-07-06",
      "opposition_end": "2026-09-06",
      "mark_name": "Sama Juga Bohong",
      "class": "41",
      "owner": "PT Garuda Film",
      "filing_date": "2026-04-15"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 5,
    "total": 51
  }
}

OJK Investment

Investment data from Otoritas Jasa Keuangan (OJK): legal products and apps, plus the illegal investment list.

GET /api/v1/ojk/products

List legal investment products. Returns a list of legal mutual fund products registered with OJK. Supports pagination and name search.

ParameterInRequiredTypeDescription
namequerynostringSearch products by name (fuzzy match).
limitquerynonumberItems per page (max 200, default 50).
offsetquerynonumberNumber of items to skip (for pagination).
curl "https://use.apiindonesia.id/api/v1/ojk/products" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": 1,
      "name": "Schroder Dana Likuid",
      "management": "Schroder Investment Management Indonesia",
      "custodian": "PT Bank HSBC Indonesia",
      "type": "Money Market"
    }
  ],
  "meta": {
    "total": 2189,
    "page": 1,
    "per_page": 5,
    "total_pages": 438
  }
}

GET /api/v1/ojk/products/{id}

Investment product detail. Returns details of a single mutual fund product by ID.

ParameterInRequiredTypeDescription
idpathyesnumberProduct ID.
curl "https://use.apiindonesia.id/api/v1/ojk/products/1" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "id": 1,
    "name": "Schroder Dana Likuid",
    "management": "Schroder Investment Management Indonesia",
    "custodian": "PT Bank HSBC Indonesia",
    "type": "Money Market"
  }
}

GET /api/v1/ojk/apps

List legal investment apps. Returns a list of legal investment apps registered with OJK. Supports pagination and name search.

ParameterInRequiredTypeDescription
namequerynostringSearch apps by name (fuzzy match).
limitquerynonumberItems per page (max 200, default 50).
offsetquerynonumberNumber of items to skip (for pagination).
curl "https://use.apiindonesia.id/api/v1/ojk/apps" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": 1,
      "name": "Ajaib",
      "url": "https://ajaib.co.id",
      "owner": "Ajaib Sekuritas Asia"
    }
  ],
  "meta": {
    "total": 93,
    "page": 1,
    "per_page": 5,
    "total_pages": 19
  }
}

GET /api/v1/ojk/apps/{id}

Investment app detail. Returns details of a single investment app by ID.

ParameterInRequiredTypeDescription
idpathyesnumberApp ID.
curl "https://use.apiindonesia.id/api/v1/ojk/apps/1" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "id": 1,
    "name": "Ajaib",
    "url": "https://ajaib.co.id",
    "owner": "Ajaib Sekuritas Asia"
  }
}

GET /api/v1/ojk/illegals

List illegal investments. Returns a list of illegal investments flagged by OJK. Each entry may include aliases, addresses, phone numbers, emails, websites, entity type, activity types, and a description. Supports pagination and name search.

ParameterInRequiredTypeDescription
namequerynostringSearch illegal investments by name (fuzzy match).
limitquerynonumberItems per page (max 200, default 50).
offsetquerynonumberNumber of items to skip (for pagination).
curl "https://use.apiindonesia.id/api/v1/ojk/illegals" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": [
    {
      "id": 1,
      "name": "PT Jelita Harmoni Mas",
      "alias": [],
      "address": [
        "Jakarta"
      ],
      "phone": [],
      "email": [],
      "web": [],
      "entity_type": "Investasi Bodong",
      "activity_type": [
        "Penipuan"
      ],
      "input_date": "20/01/2020",
      "description": "SP1/III/INFEST/2019"
    }
  ],
  "meta": {
    "total": 11278,
    "page": 1,
    "per_page": 3,
    "total_pages": 3760
  }
}

GET /api/v1/ojk/illegals/{id}

Illegal investment detail. Returns details of a single illegal investment by ID.

ParameterInRequiredTypeDescription
idpathyesnumberIllegal investment ID.
curl "https://use.apiindonesia.id/api/v1/ojk/illegals/1" \
  -H "x-api-key: YOUR_API_KEY"

Example response (shortened):

{
  "data": {
    "id": 1,
    "name": "PT Jelita Harmoni Mas",
    "alias": [],
    "address": [
      "Jakarta"
    ],
    "phone": [],
    "email": [],
    "web": [],
    "entity_type": "Investasi Bodong",
    "activity_type": [
      "Penipuan"
    ],
    "input_date": "20/01/2020",
    "description": "SP1/III/INFEST/2019"
  }
}