API Endpoints
Detailed reference for the Index Alpha API endpoints.
Data Scope & Schedule: Data is available from 2025-01-01 for both the Regular Market (RG) and the
Negotiated Market (NG). Requests with a from date before 2025-01-01 are rejected. Older data may be available
on the Enterprise plan; contact support at @neon_scale for access. Records are
updated every trading day at 12:00 GMT (19:00 Asia/Jakarta).
1. Broker Summary
Retrieve aggregated daily activity for brokers on a specific stock ticker.
Endpoint: GET /stocks/broker-summary
Aggregation: Date ranges are aggregated, not per-day. A request for from=2025-01-01 to to=2025-01-31 returns
one row per broker for the whole month (totals across the range), not 30 separate daily rows. Foreign flow returns a
single total for the range. Request single days (from = to) if you need daily records.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ticker | String | Yes | Stock ticker symbol (e.g., BBCA, TLKM) |
from | Date | Yes | Start date in YYYY-MM-DD format |
to | Date | Yes | End date in YYYY-MM-DD format |
investor | Enum | Yes | Type of investor. One of: all (all investors), f (foreign), d (domestic). |
market | Enum | No | Market segment: RG (Regular, default), NG (Negotiated), ALL (both). NG available from 2025-01-01. |
Example Request
curl -X 'GET' \
'https://api.indexalpha.id/stocks/broker-summary?ticker=BBCA&from=2026-03-26&to=2026-03-26&investor=all' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your_api_token>'Response Format
{
"success": true,
"data": [
{
"code": "SQ",
"buy_freq": 4044,
"buy_volume": 26837300,
"buy_value": 185357180000,
"sell_freq": 586,
"sell_volume": 1499300,
"sell_value": 10374017500,
"buy_avg": 6906.7,
"sell_avg": 6919.24
},
{
"code": "AK",
"buy_freq": 4355,
"buy_volume": 16591800,
"buy_value": 114517012500,
"sell_freq": 5542,
"sell_volume": 19340600,
"sell_value": 133580562500,
"buy_avg": 6902.02,
"sell_avg": 6906.74
}
],
"error": null
}NG Market Example
curl -X 'GET' \
'https://api.indexalpha.id/stocks/broker-summary?ticker=BBCA&from=2025-01-02&to=2025-01-02&investor=all&market=NG' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your_api_token>'2. Batch Broker Summary (Multi-Ticker)
Retrieve aggregated broker activity for multiple stock tickers in a single HTTP request.
Endpoint: POST /stocks/broker-summary/batch
Usage Counting: Each requested ticker symbol creates 1 usage log entry against your monthly quota. For
example, requesting ['BBCA', 'BBRI', 'TLKM'] consumes 3 units from your monthly limit - the same as 3 individual
single-ticker calls.
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
tickers | Array[String] | Yes | List of stock tickers (e.g. ["BBCA", "BBRI", "TLKM"]). Min 1, Max 50 tickers. |
from | Date | Yes | Start date in YYYY-MM-DD format |
to | Date | Yes | End date in YYYY-MM-DD format |
investor | Enum | No | Investor type: all (default), f (foreign), d (domestic). |
market | Enum | No | Market segment: RG (Regular, default), NG (Negotiated), ALL (both). |
Example Request
curl -X 'POST' \
'https://api.indexalpha.id/stocks/broker-summary/batch' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <your_api_token>' \
-d '{
"tickers": ["BBCA", "BBRI", "TLKM"],
"from": "2026-03-26",
"to": "2026-03-26",
"investor": "all",
"market": "RG"
}'Response Format
{
"success": true,
"data": {
"BBCA": [
{
"code": "SQ",
"buy_freq": 4044,
"buy_volume": 26837300,
"buy_value": 185357180000,
"sell_freq": 586,
"sell_volume": 1499300,
"sell_value": 10374017500,
"buy_avg": 6906.7,
"sell_avg": 6919.24
}
],
"BBRI": [
{
"code": "AK",
"buy_freq": 1200,
"buy_volume": 15000000,
"buy_value": 75000000000,
"sell_freq": 800,
"sell_volume": 10000000,
"sell_value": 50000000000,
"buy_avg": 5000.0,
"sell_avg": 5000.0
}
],
"TLKM": []
},
"error": null
}3. Foreign Flow
Retrieve aggregated foreign buy, sell, and net trading activity for a stock ticker across all foreign brokers.
Like broker summary, a multi-day range returns a single aggregated total, not per-day values.
Endpoint: GET /foreign-flow
Data Source: Foreign flow is calculated from the same underlying data as Broker Summary, but aggregated across
all foreign brokers instead of per-broker. Foreign columns use data tagged with investor type f (foreign).
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ticker | String | Yes | Stock ticker symbol (e.g., BBCA, TLKM) |
from | Date | Yes | Start date in YYYY-MM-DD format |
to | Date | Yes | End date in YYYY-MM-DD format |
market | Enum | No | Market segment: RG (Regular), NG (Negotiated), ALL (both, default). NG available from 2025-01-01. |
Example Request
curl -X 'GET' \
'https://api.indexalpha.id/foreign-flow?ticker=BBCA&from=2026-07-01&to=2026-07-28' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your_api_token>'Response Format
{
"success": true,
"data": {
"foreign_buy": 125000000000,
"foreign_sell": 83000000000,
"net_foreign": 42000000000
},
"error": null
}4. Batch Foreign Flow (Multi-Ticker)
Retrieve aggregated foreign flow for multiple stock tickers in a single HTTP request.
Like broker summary, a multi-day range returns a single aggregated total, not per-day values.
Endpoint: POST /foreign-flow/batch
Usage Counting: Each requested ticker symbol creates 1 usage log entry against your monthly quota. For
example, requesting ['BBCA', 'BBRI', 'TLKM'] consumes 3 units from your monthly limit - the same as 3 individual
single-ticker calls.
Request Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
tickers | Array[String] | Yes | List of stock tickers (e.g. ["BBCA", "BBRI", "TLKM"]). Min 1, Max 50 tickers. |
from | Date | Yes | Start date in YYYY-MM-DD format |
to | Date | Yes | End date in YYYY-MM-DD format |
market | Enum | No | Market segment: RG (Regular), NG (Negotiated), ALL (both, default). |
Example Request
curl -X 'POST' \
'https://api.indexalpha.id/foreign-flow/batch' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <your_api_token>' \
-d '{
"tickers": ["BBCA", "BBRI", "TLKM"],
"from": "2026-07-01",
"to": "2026-07-28",
"market": "ALL"
}'Response Format
{
"success": true,
"data": {
"BBCA": {
"foreign_buy": 125000000000,
"foreign_sell": 83000000000,
"net_foreign": 42000000000
},
"BBRI": {
"foreign_buy": 45000000000,
"foreign_sell": 52000000000,
"net_foreign": -7000000000
},
"TLKM": {
"foreign_buy": 18000000000,
"foreign_sell": 15000000000,
"net_foreign": 3000000000
}
},
"error": null
}5. Check Usage & Limits
Monitor your monthly call usage and remaining quota.
Endpoint: GET /usage
Example Request
curl -X 'GET' \
'https://api.indexalpha.id/usage' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your_api_token>'Response Format
{
"success": true,
"data": {
"api_key": "ia_l...H_Qv",
"key": {
"key_id": "uuid-of-your-key",
"key_name": "Default Key",
"current_usage": 3,
"monthly_limit": 25000,
"remaining": 24997
},
"account": {
"plan": "Starter",
"current_usage": 42,
"monthly_limit": 25000,
"remaining": 24958,
"period_end": "2026-08-29T00:00:00"
}
},
"error": null
}The response shows your key-level usage (key.current_usage) alongside your account-level usage (account.current_usage). The monthly quota guard is enforced at the account level - usage from all keys under the same account is aggregated. The key-level counters are informational, allowing you to monitor per-key consumption.
6. Market News (RSS)
Fetches the latest articles from Indonesian market news RSS feeds, grouped by source.
Endpoint: GET /news
Live Data: Articles are fetched from the publisher RSS feeds at request time and held only in a short 30-second cache — nothing is stored long-term. A source that is temporarily unreachable is skipped, so the response can vary between calls.
Query Parameters
None. The response includes only sources that returned at least one article; a temporarily unreachable source is simply absent. Filter client-side.
Response Format
data is an object mapping each source name to a newest-first array of articles. Only sources that returned at
least one article are present. Each article contains:
| Field | Type | Meaning |
|---|---|---|
source | String | Source name (e.g. CNBC-Indonesia, Stockwatch) |
title | String | Article headline (HTML stripped) |
description | String | Summary text (HTML stripped) |
link | String | URL to the full article |
image_url | String | Thumbnail/hero image URL, or "" when none |
guid | String / null | Feed unique identifier when the feed provides one |
published_date | String / null | ISO-8601 UTC timestamp (2026-09-02T07:30:49Z), or null when unparseable |
{
"success": true,
"data": {
"CNBC-Indonesia": [
{
"source": "CNBC-Indonesia",
"title": "IHSG Ditutup Menguat",
"description": "Indeks Harga Saham Gabungan ditutup menguat…",
"link": "https://www.cnbcindonesia.com/market/…",
"image_url": "https://…",
"guid": "…",
"published_date": "2026-09-02T07:30:49Z"
}
],
"Stockwatch": [
{
"source": "Stockwatch",
"title": "…",
"description": "…",
"link": "https://stockwatch.id/…",
"image_url": "",
"guid": null,
"published_date": "2026-09-02T06:00:00Z"
}
]
},
"error": null
}Sources: CNBC Indonesia, Tempo Bisnis, Detik Finance, Investing.com (Saham & Ekonomi), which appears as the two data keys Investing-Saham and Investing-Ekonomi, Stockwatch (4 category feeds
merged), and Mikir Duit.
Field Reference
Every row in a broker-summary response uses the following fields:
| Field | Type | Meaning | Unit |
|---|---|---|---|
code | String | Broker code (e.g. SQ, AK) | - |
buy_freq | Integer | Number of buy transactions | transactions |
sell_freq | Integer | Number of sell transactions | transactions |
buy_volume | Integer | Total shares bought | shares |
sell_volume | Integer | Total shares sold | shares |
buy_value | Integer | Total value of buys | IDR |
sell_value | Integer | Total value of sells | IDR |
buy_avg | Number | Weighted average buy price | IDR |
sell_avg | Number | Weighted average sell price | IDR |
Foreign-flow fields:
| Field | Type | Meaning | Unit |
|---|---|---|---|
foreign_buy | Integer | Total foreign buy transaction value | IDR |
foreign_sell | Integer | Total foreign sell transaction value | IDR |
net_foreign | Integer | Net foreign flow (foreign_buy - foreign_sell) | IDR |