API

A free, read-only API made of static files. No key is needed, and CORS is open (Access-Control-Allow-Origin: *), so you can call it from a browser. The data is rebuilt every time it changes: Bibit daily, Kontan and Makmur weekly, Bareksa monthly.

Replace the host below with the one you are visiting.

curl https://your-site.example/api/funds/RD216.json
curl -O https://your-site.example/csv/nav/RD216.csv
curl -s https://your-site.example/api/funds.json | jq 'map(select(.tradeable)) | length'

Endpoints

Replace RD8807 or RD216 with any symbol from funds.json. Everything is a GET request. Unknown paths return 404.

GET /api/funds.json

Index of every fund. The columns of funds.csv, with numbers and booleans typed, plus return_1y (a fraction, so 0.0106 is 1.06%) and makmur_url (the Makmur page of the fund, or null when there is no Makmur match).

Example: https://your-site.example/api/funds.json

[
  {
    "symbol": "RD13",
    "name": "ABF Indonesia Bond Index Fund",
    "type": "Obligasi",
    "investment_manager": "PT Bahana TCW Investment Management",
    "currency": "IDR",
    "sharia": false,
    "etf": true,
    "index": true,
    "tradeable": true,
    "status": 1,
    "nav_first_date": "2007-12-18",
    "nav_date": "2026-09-30",
    "nav": 59116.5317,
    "aum": 7850300000000,
    "expense_ratio": 0.0021,
    "return_1y": 0.010580157352288122
  }
]

GET /api/funds/RD8807.json

Everything about one fund: the full Bibit record, plus documents, switchables, dividends, nav, aum, kontan, bareksa, and makmur. kontan, bareksa, and makmur are the matching funds from Kontan, Bareksa, and Makmur, or null when there is no confident match. A missing part is null (documents, switchables, dividends, kontan, bareksa, makmur) or an empty list (nav, aum).

Example: https://your-site.example/api/funds/RD8807.json

{
  "symbol": "RD8807",
  "name": "Grow Obligasi Optima Dinamis Kelas O",
  "type": "Obligasi",
  "tradeable": 1,
  "fee": { "subscription": { "value": 0, "type": "percent", "currency": "IDR" }, "...": "..." },
  "asset": [{ "name": "Obligasi Negara", "percentage": 81.33 }, "..."],
  "simplereturn": { "1d": 0.0033, "1y": 0.0111, "...": "..." },
  "nav": [
    { "date": "2024-10-02", "nav": 1000, "nav_adjusted": 1000 },
    "..."
  ],
  "aum": [
    { "date": "2024-10-01", "aum": 42315763006.92 },
    "..."
  ],
  "kontan": null,
  "bareksa": null,
  "makmur": null,
  "documents": { "factsheets": ["..."], "prospectus": ["..."] },
  "switchables": null,
  "dividends": null
}

GET /api/funds/RD1141.json

A fund with a Kontan match: kontan holds the Kontan fund id, its name, and its daily NAV. Kontan serves the last 12 months, and every update adds the new days.

Example: https://your-site.example/api/funds/RD1141.json

{
  "symbol": "RD1141",
  "name": "Net Dana Gemilang",
  "...": "...",
  "kontan": {
    "id": 378,
    "name": "Net Dana Gemilang",
    "nav": [
      { "date": "2025-10-02", "nav": 3257.37 },
      { "date": "2025-10-03", "nav": 3258.24 },
      "..."
    ]
  }
}

GET /api/funds/RD3420.json

A fund with a Bareksa match: bareksa holds the Bareksa fund id and name, then four lists. nav is the daily NAV (empty until the owner has run the logged-in backfill described in the README). aum has the monthly AUM in rupiah and US dollars, and units the monthly units outstanding. allocation has the monthly asset allocation in percent: saham (equity), obligasi (bonds), pasar_uang (money market), and lainnya (other). Any list can be empty.

Example: https://your-site.example/api/funds/RD3420.json

{
  "symbol": "RD3420",
  "name": "Aberdeen Standard Indonesia Bond Fund",
  "...": "...",
  "bareksa": {
    "id": 354,
    "name": "Aberdeen Standard Indonesia Bond Fund",
    "nav": [
      { "date": "2007-06-01", "nav": 1000 },
      "..."
    ],
    "aum": [
      { "date": "2007-06-01", "aum_idr": 80659641807, "aum_usd": 9139902.75 },
      "..."
    ],
    "units": [
      { "date": "2007-06-01", "units": 80646262 },
      "..."
    ],
    "allocation": [
      { "date": "2017-11-30", "saham": 0, "obligasi": 89.5, "pasar_uang": 10.5, "lainnya": 0 },
      "..."
    ]
  }
}

GET /api/funds/RD142.json

A fund with a Makmur match: makmur holds the Makmur fund id, its name, the address of its Makmur page (url), and data, the fund record from Makmur as it is. Makmur scales its numbers: returns, drawdown, CAGR, the expense ratio, and the asset allocation weights are in hundredths of a percent (2162 is 21.62%), and lastPrice is the NAV times 100 (156 is 1.56). lastAum and the minimum buy are plain amounts. Dates are numbers like 20260930.

Example: https://your-site.example/api/funds/RD142.json

{
  "symbol": "RD142",
  "name": "Bahana Liquid USD",
  "...": "...",
  "makmur": {
    "id": "67f4d3dbc5988e812e4e9d59",
    "name": "Bahana Liquid USD",
    "url": "https://www.makmur.id/id/reksadana/pasar-uang/bahana-liquid-usd-b2dbfdcba9e3",
    "data": {
      "currency": "USD",
      "lastPrice": 100,
      "return1y": 266,
      "assetAllocations": [{ "asset": "Obligasi", "weight": 2984 }, "..."],
      "factsheet": "https://cache.makmur.id/...",
      "...": "..."
    }
  }
}

GET /api/types.json

Fund type codes and labels.

Example: https://your-site.example/api/types.json

{
  "types": [
    { "code": 3, "label": "Pasar Uang" },
    { "code": 2, "label": "Obligasi" }
  ],
  "show_sharia_tab": true
}

GET /csv/funds.csv

The fund index as CSV. An exact copy of data/bibit/funds.csv.

Example: https://your-site.example/csv/funds.csv

symbol,name,type,investment_manager,currency,sharia,etf,index,tradeable,status,nav_first_date,nav_date,nav,aum,expense_ratio
RD13,ABF Indonesia Bond Index Fund,Obligasi,PT Bahana TCW Investment Management,IDR,false,true,true,1,1,2007-12-18,2026-09-30,59116.5317,7850300000000,0.0021

GET /csv/nav/RD216.csv

Daily NAV of one fund. An exact copy of data/bibit/nav/<symbol>.csv. nav_adjusted can be empty.

Example: https://your-site.example/csv/nav/RD216.csv

date,nav,nav_adjusted
2000-01-05,4336.44,4336.44
2000-01-06,4386.41,4386.41

GET /csv/aum/RD216.csv

AUM history of one fund. An exact copy of data/bibit/aum/<symbol>.csv.

Example: https://your-site.example/csv/aum/RD216.csv

date,aum
2004-06-07,9993.82
2004-07-30,12837

GET /download/bibit.zip

The Bibit data (data/bibit/) as one zip file. The other sources have their own zips: kontan.zip, makmur.zip, bareksa.zip (without daily NAV), and bareksa-nav-1.zip and up (daily NAV, split by size). See the download page for the list.

Example: https://your-site.example/download/bibit.zip