AS
Dokumentasi AksesSaham API
Proxy data pasar saham Indonesia · panel admin
Base URL: https://aksessaham.pages.dev/api/v1
Semua endpoint data memakai GET dan wajib menyertakan API key.
Halaman ini bisa dibaca tanpa login.
Autentikasi
Kirim salah satu dari tiga cara berikut.
X-API-Key: ask_xxxxxxxxxxxxxxxxxxxxxxxxxxxx Authorization: Bearer ask_xxxxxxxxxxxxxxxxxxxxxxxxxxxx https://aksessaham.pages.dev/api/v1/ping?apikey=ask_xxx
API key dibuat di panel admin (perlu login). Kunci ditampilkan sekali saat dibuat.
Endpoint
| Endpoint | Query | Keterangan |
|---|---|---|
/api/v1/ping | — | Cek hidup & sisa kuota |
/api/v1/sectors | — | Daftar sektor |
/api/v1/info/{kode} | — | Profil & info emiten |
/api/v1/orderbook/{kode} | — | Bid/offer + harga terakhir (near real-time) |
/api/v1/historical/{kode} | days,start,end,limit,page,period | OHLCV harian + foreign flow |
/api/v1/keystats/{kode} | year_limit | PER/PBV/ROE, hingga 10 tahun |
/api/v1/broker/{kode} | days,investor_type,market_board,limit | Bandarmologi / broker summary |
/api/v1/raw/{path} | sesuai upstream | Passthrough mentah (butuh scope raw) |
{kode} = kode saham IDX (BBCA, TLKM, GOTO…). Huruf besar-kecil tidak berpengaruh.
Batas parameter (penting)
limit maksimal 50. Stockbit menolak
limit di atas 50 dengan HTTP 400
Invalid parameter. AksesSaham otomatis menurunkannya ke 50 supaya tidak error.
Rentang tanggal maksimal ~365 hari.
start_date lebih lama dari itu
juga ditolak upstream.
Mau 1 tahun penuh? Satu tahun bursa ≈ 239 baris, jadi butuh 5 permintaan:
for p in 1 2 3 4 5; do
curl -H "X-API-Key: ask_xxx" \
"https://aksessaham.pages.dev/api/v1/historical/BBCA?days=365&limit=50&page=$p"
done
Respons
Default: payload asli upstream, tidak dibungkus. Tambahkan
?envelope=1 untuk bentuk {ok, data, meta}.
{
"ok": true,
"data": { /* payload upstream */ },
"meta": {
"endpoint": "historical",
"request_id": "...",
"elapsed_ms": 412,
"cached": false,
"upstream_cache": "MISS",
"rate_limit": { "limit": 60, "remaining": 59, "reset": 1791776340 }
}
}
| Header | Arti |
|---|---|
X-RateLimit-Limit | Kuota per menit untuk key ini |
X-RateLimit-Remaining | Sisa kuota di jendela berjalan |
X-RateLimit-Reset | Epoch detik saat jendela reset |
X-Upstream-Cache | HIT / MISS / STALE |
X-Request-Id | Id permintaan untuk lacak log |
Kode error
| Status | Kode | Makna |
|---|---|---|
| 401 | missing_key | API key tidak dikirim |
| 401 | invalid_key | Key tidak dikenal |
| 403 | key_revoked / key_expired | Key dicabut / kedaluwarsa |
| 403 | scope_denied | Key tidak punya scope yang diminta |
| 403 | ip_denied | IP tidak masuk whitelist key |
| 429 | rate_limited | Kuota habis; lihat Retry-After |
| 400 | invalid_parameter | Biasanya limit > 50 atau rentang > 365 hari |
| 503 | no_token | Kredensial upstream belum diset (urusan admin) |
Contoh
curl -H "X-API-Key: ask_xxx" \ "https://aksessaham.pages.dev/api/v1/orderbook/BBCA"
// Node.js
const r = await fetch(
'https://aksessaham.pages.dev/api/v1/broker/BBCA?days=30',
{ headers: { 'X-API-Key': process.env.AKSESSAHAM_KEY } }
);
if (r.status === 429) console.log('tunggu', r.headers.get('Retry-After'), 'detik');
const data = await r.json();
# Python
import os, requests
r = requests.get(
"https://aksessaham.pages.dev/api/v1/historical/BBCA",
params={"days": 365, "limit": 50, "page": 1},
headers={"X-API-Key": os.environ["AKSESSAHAM_KEY"]},
)
print(r.json()["data"]["result"][0])
Untuk AI / LLM
Beri tahu model cukup dua hal ini, lalu ia bisa memakai API-nya:
Gunakan AksesSaham API, base URL https://aksessaham.pages.dev/api/v1. Kirim header X-API-Key: <key>. Dokumentasi mesin ada di https://aksessaham.pages.dev/llms.txt dan OpenAPI di https://aksessaham.pages.dev/openapi.json
| Berkas | Untuk |
|---|---|
/llms.txt | Ringkasan siap tempel ke prompt LLM |
/openapi.json | OpenAPI 3.1 — bisa diimpor Postman / ChatGPT Actions |
/api/v1 | Ringkasan JSON tanpa login |
AksesSaham · data diteruskan dari Stockbit · panel admin