# Finance — Zapi reference > Every Finance endpoint on Zapi, with parameters, request shape and an example response. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a key at https://zpi.web.id/dashboard/keys (free tier — 2,000 req/mo, no credit card). **Response envelope:** `{ status: "success" | "error", message: string, content: }` **Rate limit:** 60 req/min (free tier). Per-endpoint cache TTL is documented below. **Errors:** standard HTTP codes (`401` invalid key, `429` rate limited, `5xx` upstream). Body always has `{ status: "error", message, errors? }`. ```bash curl "https://api.zpi.web.id/v1/CATEGORY:SCRAPER/ENDPOINT?param=value" \ -H "x-api-key: $ZAPI_KEY" ``` **Category page:** https://zpi.web.id/category/finance **Full catalog:** https://zpi.web.id/apis · **Index:** https://zpi.web.id/llms-full.txt --- ## Bank Indonesia **Category:** finance · **Slug:** `bi-kurs` **Detail page:** https://zpi.web.id/api/finance/bi-kurs Official Indonesian exchange rates — JISDOR, the transaction rate and the banknote rate — plus the BI-Rate and headline inflation. **Tags:** forex, exchange-rate, indonesia, jisdor, inflation, interest-rate ### JISDOR The official USD/IDR reference rate, by day. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:bi-kurs/jisdor` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `startDate` | string | query | no | Range start, YYYY-MM-DD. Omit for the latest published rate | | `endDate` | string | query | no | Range end, YYYY-MM-DD. Defaults to today when a start is given | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:bi-kurs/jisdor?startDate=2026-07-01&endDate=2026-07-31" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:bi-kurs/jisdor?startDate=2026-07-01&endDate=2026-07-31", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:bi-kurs/jisdor?startDate=2026-07-01&endDate=2026-07-31", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 23, "items": [ { "date": "2026-07-31", "rate": 18058 }, { "date": "2026-07-30", "rate": 18078 }, { "date": "2026-07-29", "rate": 18087 }, { "date": "2026-07-28", "rate": 18088 }, { "date": "2026-07-27", "rate": 17995 }, { "date": "2026-07-24", "rate": 17973 }, { "date": "2026-07-23", "rate": 17915 }, { "date": "2026-07-22", "rate": 17909 } ], "series": "jisdor", "source": "bank-indonesia", "endDate": "2026-07-31", "currency": "USD", "startDate": "2026-07-01" } ``` --- ### Transaction rate Kurs Transaksi BI — the rate used for settlement and tax reporting. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:bi-kurs/transaction` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `date` | string | query | no | Single publication date, YYYY-MM-DD. Omit for the latest | | `currency` | string | query | no | ISO currency code. Required when requesting a date range | | `startDate` | string | query | no | Range start, YYYY-MM-DD. Needs a currency | | `endDate` | string | query | no | Range end, YYYY-MM-DD. Defaults to today | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:bi-kurs/transaction?date=2026-07-31¤cy=USD&startDate=2026-07-01&endDate=2026-07-31" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:bi-kurs/transaction?date=2026-07-31¤cy=USD&startDate=2026-07-01&endDate=2026-07-31", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:bi-kurs/transaction?date=2026-07-31¤cy=USD&startDate=2026-07-01&endDate=2026-07-31", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "date": "2026-07-31", "count": 26, "items": [ { "buy": 4897.12, "date": "2026-07-31", "sell": 4946.61, "unit": 1, "currency": "AED" }, { "buy": 12501.39, "date": "2026-07-31", "sell": 12628.85, "unit": 1, "currency": "AUD" }, { "buy": 13925.53, "date": "2026-07-31", "sell": 14068.75, "unit": 1, "currency": "BND" }, { "buy": 12786.19, "date": "2026-07-31", "sell": 12917.45, "unit": 1, "currency": "CAD" }, { "buy": 22003.19, "date": "2026-07-31", "sell": 22235.21, "unit": 1, "currency": "CHF" }, { "buy": 2662.27, "date": "2026-07-31", "sell": 2689.18, "unit": 1, "currency": "CNH" }, { "buy": 2661.83, "date": "2026-07-31", "sell": 2688.86, "unit": 1, "currency": "CNY" }, { "buy": 2752.21, "date": "2026-07-31", "sell": 2780.29, "unit": 1, "currency": "DKK" } ], "series": "transaction", "source": "bank-indonesia", "endDate": null, "currency": null, "startDate": null } ``` --- ### Banknote rate Kurs Uang Kertas Asing — the physical cash rate. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:bi-kurs/banknote` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `date` | string | query | no | Single publication date, YYYY-MM-DD. Omit for the latest | | `currency` | string | query | no | ISO currency code. Required when requesting a date range | | `startDate` | string | query | no | Range start, YYYY-MM-DD. Needs a currency | | `endDate` | string | query | no | Range end, YYYY-MM-DD. Defaults to today | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:bi-kurs/banknote?date=2026-07-31¤cy=USD&startDate=2026-07-01&endDate=2026-07-31" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:bi-kurs/banknote?date=2026-07-31¤cy=USD&startDate=2026-07-01&endDate=2026-07-31", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:bi-kurs/banknote?date=2026-07-31¤cy=USD&startDate=2026-07-01&endDate=2026-07-31", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "date": "2026-07-31", "count": 1, "items": [ { "buy": 17578, "date": "2026-07-31", "sell": 18578, "unit": 1, "currency": "USD" } ], "series": "banknote", "source": "bank-indonesia", "endDate": null, "currency": "USD", "startDate": null } ``` --- ### Currencies Which currencies each rate series carries. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:bi-kurs/currencies` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `series` | enum(all|transaction|banknote) | query | no | Restrict to one rate series. Default all | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:bi-kurs/currencies?series=all" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:bi-kurs/currencies?series=all", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:bi-kurs/currencies?series=all", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "date": "2026-07-31", "count": 26, "items": [ { "code": "AED", "name": "UNITED ARAB EMIRATES DIRHAM", "banknote": true, "transaction": true }, { "code": "AUD", "name": "AUSTRALIAN DOLLAR", "banknote": true, "transaction": true }, { "code": "BND", "name": "BRUNEI DOLLAR", "banknote": true, "transaction": true }, { "code": "CAD", "name": "CANADIAN DOLLAR", "banknote": true, "transaction": true }, { "code": "CHF", "name": "SWISS FRANC", "banknote": true, "transaction": true }, { "code": "CNH", "name": "CHINA YUAN", "banknote": true, "transaction": true }, { "code": "CNY", "name": "CHINA YUAN", "banknote": false, "transaction": true }, { "code": "DKK", "name": "DANISH KRONE", "banknote": true, "transaction": true } ], "series": "all", "source": "bank-indonesia" } ``` --- ### BI-Rate The policy rate and every decision that changed it. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:bi-kurs/policy-rate` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `count` | number | query | no | Most recent decisions to return. Default 24, max 200 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:bi-kurs/policy-rate?count=24" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:bi-kurs/policy-rate?count=24", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:bi-kurs/policy-rate?count=24", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 10, "items": [ { "date": "2026-07-22", "ratePercent": 5.75, "announcementUrl": "https://www.bi.go.id/id/publikasi/ruang-media/news-release/Pages/sp_2814226.aspx" }, { "date": "2026-06-18", "ratePercent": 5.75, "announcementUrl": "https://www.bi.go.id/id/publikasi/ruang-media/news-release/Pages/sp_2812626.aspx" }, { "date": "2026-06-09", "ratePercent": 5.5, "announcementUrl": "https://www.bi.go.id/id/publikasi/ruang-media/news-release/Pages/sp_2811926.aspx" }, { "date": "2026-05-20", "ratePercent": 5.25, "announcementUrl": "https://www.bi.go.id/id/publikasi/ruang-media/news-release/Pages/sp_2810726.aspx" }, { "date": "2026-04-22", "ratePercent": 4.75, "announcementUrl": "https://www.bi.go.id/id/publikasi/ruang-media/news-release/Pages/sp_288426.aspx" }, { "date": "2026-03-17", "ratePercent": 4.75, "announcementUrl": "https://www.bi.go.id/id/publikasi/ruang-media/news-release/Pages/sp_286526.aspx" }, { "date": "2026-02-19", "ratePercent": 4.75, "announcementUrl": "https://www.bi.go.id/id/publikasi/ruang-media/news-release/Pages/sp_284326.aspx" }, { "date": "2026-01-21", "ratePercent": 4.75, "announcementUrl": "https://www.bi.go.id/id/publikasi/ruang-media/news-release/Pages/sp_281326.aspx" } ], "series": "bi-rate", "source": "bank-indonesia", "effectiveDate": "2026-07-22", "currentRatePercent": 5.75 } ``` --- ### Inflation Indonesian headline inflation, year on year, by month. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:bi-kurs/inflation` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `count` | number | query | no | Most recent months to return. Default 24, max 120 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:bi-kurs/inflation?count=24" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:bi-kurs/inflation?count=24", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:bi-kurs/inflation?count=24", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "basis": "year-on-year", "count": 10, "items": [ { "month": "2026-06", "inflationPercent": 3.34 }, { "month": "2026-05", "inflationPercent": 3.08 }, { "month": "2026-04", "inflationPercent": 2.42 }, { "month": "2026-03", "inflationPercent": 3.48 }, { "month": "2026-02", "inflationPercent": 4.76 }, { "month": "2026-01", "inflationPercent": 3.55 }, { "month": "2025-12", "inflationPercent": 2.92 }, { "month": "2025-11", "inflationPercent": 2.72 } ], "series": "inflation", "source": "bank-indonesia", "latestMonth": "2026-06", "latestPercent": 3.34 } ``` --- ## Binance **Category:** finance · **Slug:** `binance` **Detail page:** https://zpi.web.id/api/finance/binance Global crypto spot market data — 24h statistics, candles and order book depth from the largest venue. **Tags:** crypto, exchange, orderbook, klines, usdt ### Ticker 24-hour statistics for one spot pair. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:binance/ticker` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Trading pair. Accepts BTCUSDT, BTC/USDT or btc_usdt | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:binance/ticker?symbol=BTCUSDT" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:binance/ticker?symbol=BTCUSDT", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:binance/ticker?symbol=BTCUSDT", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "ask": 62986.66, "bid": 62986.65, "low": 62275, "high": 63150, "last": 62986.66, "open": 62971.86, "askQty": 4.04187, "bidQty": 3.92792, "change": 14.8, "symbol": "BTCUSDT", "exchange": "binance", "openTime": 1785549235012, "closeTime": 1785635635012, "tradeCount": 826869, "volumeBase": 7308.28437, "volumeQuote": 459748760.2615933, "changePercent": 0.024, "previousClose": 62971.86, "weightedAvgPrice": 62907.89150855 } ``` --- ### Tickers Every spot pair at once, filterable by quote asset. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:binance/tickers` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `quote` | enum(all|USDT|USDC|BTC|ETH|BNB|FDUSD|TRY|EUR) | query | no | Restrict to pairs quoted in this asset. Default USDT | | `search` | string | query | no | Filter by base asset | | `sort` | enum(volume|change|symbol) | query | no | Sort key, descending for volume and change. Default volume | | `count` | number | query | no | Rows to return. Default 100, max 500 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:binance/tickers?quote=USDT&search=btc&sort=volume&count=100" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:binance/tickers?quote=USDT&search=btc&sort=volume&count=100", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:binance/tickers?quote=USDT&search=btc&sort=volume&count=100", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "sort": "volume", "count": 10, "items": [ { "low": 1.0007, "base": "USDC", "high": 1.0009, "last": 1.00085, "quote": "USDT", "change": -0.00003, "symbol": "USDCUSDT", "tradeCount": 505338, "volumeBase": 465800496, "volumeQuote": 466177265.05961, "changePercent": -0.003 }, { "low": 62275, "base": "BTC", "high": 63150, "last": 62991.99, "quote": "USDT", "change": 20.13, "symbol": "BTCUSDT", "tradeCount": 827359, "volumeBase": 7311.09465, "volumeQuote": 459925771.4156871, "changePercent": 0.032 }, { "low": 1822.06, "base": "ETH", "high": 1875.45, "last": 1856.5, "quote": "USDT", "change": -10.05, "symbol": "ETHUSDT", "tradeCount": 878480, "volumeBase": 113651.93, "volumeQuote": 210628641.95109, "changePercent": -0.538 }, { "low": 0.0407, "base": "MIRA", "high": 0.0433, "last": 0.041, "quote": "USDT", "change": -0.0018, "symbol": "MIRAUSDT", "tradeCount": 124310, "volumeBase": 2191410638.9, "volumeQuote": 94077365.95299, "changePercent": -4.206 }, { "low": 70.58, "base": "SOL", "high": 73.21, "last": 72.65, "quote": "USDT", "change": -0.39, "symbol": "SOLUSDT", "tradeCount": 272860, "volumeBase": 1105628.794, "volumeQuote": 79911008.59277, "changePercent": -0.534 }, { "low": 573.5, "base": "BNB", "high": 592.8, "last": 577.93, "quote": "USDT", "change": -11.92, "symbol": "BNBUSDT", "tradeCount": 492848, "volumeBase": 105720.504, "volumeQuote": 61457961.68883, "changePercent": -2.021 }, { "low": 0.99986, "base": "USD1", "high": 1.00004, "last": 0.99993, "quote": "USDT", "change": -0.00011, "symbol": "USD1USDT", "tradeCount": 102808, "volumeBase": 57487899, "volumeQuote": 57483361.20734, "changePercent": -0.011 }, { "low": 37.07, "base": "GIGGLE", "high": 55.71, "last": 42.51, "quote": "USDT", "change": -2.97, "symbol": "GIGGLEUSDT", "tradeCount": 841714, "volumeBase": 1065602.953, "volumeQuote": 48090911.77891, "changePercent": -6.53 } ], "quote": "USDT", "total": 723, "exchange": "binance" } ``` --- ### Klines OHLCV candles from one minute to one month. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:binance/klines` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Trading pair. Accepts BTCUSDT, BTC/USDT or btc_usdt | | `interval` | enum(1m|3m|5m|15m|30m|1h|2h|4h|6h|8h|12h|1d|3d|1w|1M) | query | no | Candle size. Default 1d | | `count` | number | query | no | Number of candles. Default 200, max 1000 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:binance/klines?symbol=BTCUSDT&interval=1d&count=200" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:binance/klines?symbol=BTCUSDT&interval=1d&count=200", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:binance/klines?symbol=BTCUSDT&interval=1d&count=200", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 30, "symbol": "BTCUSDT", "candles": [ { "low": 62328.24, "date": "2026-07-04T00:00:00.000Z", "high": 63461.99, "open": 62583.26, "close": 63144.01, "openTime": 1783123200000, "closeTime": 1783209599999, "tradeCount": 1643288, "volumeBase": 9139.8274, "volumeQuote": 574233846.0826051 }, { "low": 62436.59, "date": "2026-07-05T00:00:00.000Z", "high": 63999, "open": 63144.01, "close": 63650, "openTime": 1783209600000, "closeTime": 1783295999999, "tradeCount": 1790183, "volumeBase": 9172.07758, "volumeQuote": 577866444.607444 }, { "low": 61306.84, "date": "2026-07-06T00:00:00.000Z", "high": 64700, "open": 63650.01, "close": 64042.02, "openTime": 1783296000000, "closeTime": 1783382399999, "tradeCount": 3777895, "volumeBase": 21435.28437, "volumeQuote": 1347956046.4032269 }, { "low": 62671.39, "date": "2026-07-07T00:00:00.000Z", "high": 64314, "open": 64042.93, "close": 63363.99, "openTime": 1783382400000, "closeTime": 1783468799999, "tradeCount": 3282102, "volumeBase": 16834.20823, "volumeQuote": 1069267686.8886092 }, { "low": 61544.56, "date": "2026-07-08T00:00:00.000Z", "high": 63761.99, "open": 63364, "close": 62290, "openTime": 1783468800000, "closeTime": 1783555199999, "tradeCount": 3598487, "volumeBase": 18620.09796, "volumeQuote": 1160087170.620036 }, { "low": 61705.29, "date": "2026-07-09T00:00:00.000Z", "high": 63500, "open": 62290.01, "close": 63230, "openTime": 1783555200000, "closeTime": 1783641599999, "tradeCount": 3176050, "volumeBase": 16742.80672, "volumeQuote": 1050849813.269484 }, { "low": 62926.01, "date": "2026-07-10T00:00:00.000Z", "high": 64692.83, "open": 63230.01, "close": 64161.72, "openTime": 1783641600000, "closeTime": 1783727999999, "tradeCount": 2927425, "volumeBase": 17589.00122, "volumeQuote": 1126097961.002051 }, { "low": 63819, "date": "2026-07-11T00:00:00.000Z", "high": 64504.11, "open": 64161.72, "close": 63819, "openTime": 1783728000000, "closeTime": 1783814399999, "tradeCount": 1406178, "volumeBase": 9151.97432, "volumeQuote": 587469874.5668087 } ], "exchange": "binance", "interval": "1d" } ``` --- ### Order book Resting bids and asks for one spot pair. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:binance/depth` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Trading pair. Accepts BTCUSDT, BTC/USDT or btc_usdt | | `limit` | number | query | no | Levels per side. Default 50, max 500 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:binance/depth?symbol=BTCUSDT&limit=50" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:binance/depth?symbol=BTCUSDT&limit=50", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:binance/depth?symbol=BTCUSDT&limit=50", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "asks": [ { "price": 62992, "amount": 2.41343 }, { "price": 62992.01, "amount": 0.00142 }, { "price": 62992.02, "amount": 0.00016 }, { "price": 62992.08, "amount": 0.00008 }, { "price": 62992.74, "amount": 0.00008 }, { "price": 62992.8, "amount": 0.00018 }, { "price": 62992.81, "amount": 0.05142 }, { "price": 62992.82, "amount": 0.17044 } ], "bids": [ { "price": 62991.99, "amount": 6.46597 }, { "price": 62991.98, "amount": 0.00016 }, { "price": 62991.97, "amount": 0.00016 }, { "price": 62991.44, "amount": 0.004 }, { "price": 62991.32, "amount": 0.00018 }, { "price": 62991.31, "amount": 0.04207 }, { "price": 62991.29, "amount": 0.00018 }, { "price": 62991.28, "amount": 0.16704 } ], "spread": 0.01, "symbol": "BTCUSDT", "askCount": 10, "bidCount": 10, "exchange": "binance" } ``` --- ## Crypto Price **Category:** finance · **Slug:** `crypto-price` **Detail page:** https://zpi.web.id/api/finance/crypto-price Fetch current cryptocurrency prices and market data. **Tags:** utility, crypto ### Get Crypto Price Retrieve current price for a given cryptocurrency. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:crypto-price/price` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `coins` | string | query | yes | Comma-separated coin IDs (slug, lowercase) | | `vs` | string | query | no | Comma-separated vs currencies. Default usd | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:crypto-price/price?coins=bitcoin%2Cethereum&vs=usd" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:crypto-price/price?coins=bitcoin%2Cethereum&vs=usd", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:crypto-price/price?coins=bitcoin%2Cethereum&vs=usd", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "ok": true, "prices": { "bitcoin": { "usd": 74826, "usd_24h_change": -2.5782005155042933, "usd_market_cap": 1500248007735.9695 }, "ethereum": { "usd": 2056.7, "usd_24h_change": -2.743476892620399, "usd_market_cap": 248261597304.3915 } } } ``` --- ## Currency Converter **Category:** finance · **Slug:** `currency-convert` **Detail page:** https://zpi.web.id/api/finance/currency-convert Convert monetary amounts between currencies using current exchange rates. **Tags:** utility, finance, currency ### Convert Currency Convert an amount from one currency to another. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:currency-convert/convert` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `from` | string | query | no | Source currency (ISO 4217). Default USD | | `to` | string | query | no | Target currency (ISO 4217). Default IDR | | `amount` | number | query | no | Amount to convert. Default 1 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:currency-convert/convert?from=USD&to=IDR&amount=100" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:currency-convert/convert?from=USD&to=IDR&amount=100", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:currency-convert/convert?from=USD&to=IDR&amount=100", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "ok": true, "to": "IDR", "date": "2026-05-26", "from": "USD", "rate": 17834.8, "amount": 100, "result": 1783480 } ``` --- ## Fear & Greed **Category:** finance · **Slug:** `fear-greed` **Detail page:** https://zpi.web.id/api/finance/fear-greed Market sentiment on a 0-100 scale for crypto and US equities, with history and the sub-indicators behind the score. **Tags:** sentiment, crypto, stocks, index, market-mood ### Crypto sentiment The crypto Fear & Greed index, with history. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:fear-greed/crypto` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `count` | number | query | no | Days of history. Default 30, max 365 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:fear-greed/crypto?count=30" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:fear-greed/crypto?count=30", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:fear-greed/crypto?count=30", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "date": "2026-08-02", "count": 14, "items": [ { "date": "2026-08-02", "score": 27, "rating": "Fear", "timestamp": 1785628800 }, { "date": "2026-08-01", "score": 27, "rating": "Fear", "timestamp": 1785542400 }, { "date": "2026-07-31", "score": 25, "rating": "Extreme Fear", "timestamp": 1785456000 }, { "date": "2026-07-30", "score": 28, "rating": "Fear", "timestamp": 1785369600 }, { "date": "2026-07-29", "score": 29, "rating": "Fear", "timestamp": 1785283200 }, { "date": "2026-07-28", "score": 29, "rating": "Fear", "timestamp": 1785196800 }, { "date": "2026-07-27", "score": 30, "rating": "Fear", "timestamp": 1785110400 }, { "date": "2026-07-26", "score": 26, "rating": "Fear", "timestamp": 1785024000 } ], "score": 27, "market": "crypto", "rating": "Fear", "nextUpdateIn": 79557 } ``` --- ### Stock sentiment US equity sentiment plus its seven sub-indicators. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:fear-greed/stocks` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `count` | number | query | no | Days of history. Default 30, max 365 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:fear-greed/stocks?count=30" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:fear-greed/stocks?count=30", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:fear-greed/stocks?count=30", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "asOf": "2026-07-31T23:59:52+00:00", "count": 14, "items": [ { "date": "2026-07-31", "score": 42.46, "rating": "fear" }, { "date": "2026-07-30", "score": 40.71, "rating": "fear" }, { "date": "2026-07-29", "score": 34.66, "rating": "fear" }, { "date": "2026-07-28", "score": 37.89, "rating": "fear" }, { "date": "2026-07-27", "score": 37.63, "rating": "fear" }, { "date": "2026-07-24", "score": 41.34, "rating": "fear" }, { "date": "2026-07-23", "score": 38.91, "rating": "fear" }, { "date": "2026-07-22", "score": 43.31, "rating": "fear" } ], "score": 42.46, "market": "stocks", "rating": "fear", "weekAgo": 41.34, "yearAgo": 63.71, "monthAgo": 29.97, "indicators": { "junkBondDemand": { "score": 75.2, "rating": "extreme greed" }, "marketMomentum": { "score": 35, "rating": "fear" }, "putCallOptions": { "score": 34, "rating": "fear" }, "safeHavenDemand": { "score": 50.4, "rating": "neutral" }, "marketVolatility": { "score": 50, "rating": "neutral" }, "stockPriceBreadth": { "score": 22.6, "rating": "extreme fear" }, "stockPriceStrength": { "score": 29.8, "rating": "fear" } }, "previousClose": 38.91 } ``` --- ## GoldPrice **Category:** finance · **Slug:** `goldprice` **Detail page:** https://zpi.web.id/api/finance/goldprice Harga emas, perak & crypto live + grafik, historis, ETF, saham tambang, berita, dan kalkulator. Sumber data publik goldprice. **Tags:** finance, gold, silver, crypto, precious-metals, price ### Spot Harga spot emas & perak live (per oz/gram/kg), any currency. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:goldprice/spot` - **Cache TTL:** 60s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `currency` | string | query | no | Kode mata uang ISO (mis. USD, IDR, EUR). Default USD. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:goldprice/spot?currency=USD" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:goldprice/spot?currency=USD", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:goldprice/spot?currency=USD", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "asOf": "Jun 14th 2026, 01:41:25 am NY", "gold": { "change": 112.885, "pricePerKg": 135383.74, "pricePerOz": 4210.905, "pricePerGram": 135.3837, "changePercent": 2.7546, "previousClose": 4098.02 }, "silver": { "change": 3.8419, "pricePerKg": 2179.23, "pricePerOz": 67.7815, "pricePerGram": 2.1792, "changePercent": 6.0086, "previousClose": 63.9396 }, "currency": "USD", "timestamp": 1781415690581, "goldSilverRatio": 62 } ``` --- ### Chart URL gambar grafik harga (gold/silver, 7d–30y). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:goldprice/chart` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `metal` | enum(gold|silver) | query | no | Logam mulia: gold atau silver. Default gold | | `period` | enum(7d|30d|6m|1y|2y|5y|10y|15y|20y|30y) | query | no | Rentang waktu chart. Pilihan: 7d, 30d, 6m, 1y, 2y, 5y, 10y, 15y, 20y, 30y. Default 7d | | `currency` | string | query | no | Kode mata uang ISO 3-huruf (USD, EUR, GBP, IDR, JPY, dll). Default USD | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:goldprice/chart?metal=gold&period=7d¤cy=USD" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:goldprice/chart?metal=gold&period=7d¤cy=USD", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:goldprice/chart?metal=gold&period=7d¤cy=USD", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "metal": "gold", "period": "7d", "currency": "USD", "imageUrl": "https://charts.goldprice.org/charts/history/gold_7_day_o_USD_x.png", "verified": true, "availablePeriods": [ "7d", "30d", "6m", "1y", "2y", "5y", "10y", "15y" ] } ``` --- ### Crypto Harga cryptocurrency live (BTC/ETH/SOL/dll) + market cap. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:goldprice/crypto` - **Cache TTL:** 60s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `ids` | string | query | no | Daftar id koin dipisah koma (mis. bitcoin,ethereum,solana,ripple,dogecoin). Default "bitcoin,ethereum,solana,ripple,dogecoin". Max 50 koin. | | `currency` | enum(usd|idr|eur|gbp|jpy|sgd|aud|btc|eth) | query | no | Mata uang harga: usd, idr, eur, gbp, jpy, sgd, aud, btc, eth. Default usd. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:goldprice/crypto?ids=bitcoin%2Cethereum%2Csolana¤cy=usd" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:goldprice/crypto?ids=bitcoin%2Cethereum%2Csolana¤cy=usd", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:goldprice/crypto?ids=bitcoin%2Cethereum%2Csolana¤cy=usd", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 3, "items": [ { "id": "bitcoin", "ath": 126080, "name": "Bitcoin", "rank": 1, "image": "https://coin-images.coingecko.com/coins/images/1/large/bitcoin.png?1696501400", "price": 64328, "low24h": 63486, "symbol": "BTC", "high24h": 64633, "change24h": 777.02, "marketCap": 1288787081171, "volume24h": 18113239771, "lastUpdated": "2026-06-14T05:41:38.195Z", "totalSupply": 20042446, "athChangePercent": -48.98, "changePercent24h": 1.22, "circulatingSupply": 20042437 }, { "id": "ethereum", "ath": 4946.05, "name": "Ethereum", "rank": 2, "image": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", "price": 1676.5, "low24h": 1662.23, "symbol": "ETH", "high24h": 1688.12, "change24h": 12.19, "marketCap": 202192671812, "volume24h": 6621220095, "lastUpdated": "2026-06-14T05:41:37.677Z", "totalSupply": 120684209.1147544, "athChangePercent": -66.1, "changePercent24h": 0.73, "circulatingSupply": 120684209.1147544 }, { "id": "solana", "ath": 293.31, "name": "Solana", "rank": 7, "image": "https://coin-images.coingecko.com/coins/images/4128/large/solana.png?1718769756", "price": 68.17, "low24h": 66.64, "symbol": "SOL", "high24h": 69.36, "change24h": 1.42, "marketCap": 39519480119, "volume24h": 1665123302, "lastUpdated": "2026-06-14T05:41:37.417Z", "totalSupply": 628303502.7848742, "athChangePercent": -76.76, "changePercent24h": 2.13, "circulatingSupply": 579823662.913511 } ], "currency": "USD" } ``` --- ### News Daftar berita pasar emas/perak. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:goldprice/news` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `page` | number | query | no | Nomor halaman, default 1 | | `count` | number | query | no | Item per halaman, default 20 (max 50) | | `category` | string | query | no | Filter opsional (keyword pada judul/slug, mis. 'fed' atau 'inflation') | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:goldprice/news?page=1&count=1&category=VALUE" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:goldprice/news?page=1&count=1&category=VALUE", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:goldprice/news?page=1&count=1&category=VALUE", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 5, "items": [ { "url": "https://goldprice.org/news/gold-pulls-back-inflation-pressure-reprices-fed-path", "slug": "gold-pulls-back-inflation-pressure-reprices-fed-path", "image": "https://goldprice.org/sites/default/files/styles/blog_hero_375/public/blog_hero_images/Gold-Price-Recap1_6.jpg?itok=rvvHfSPF", "title": "Gold Pulls Back as Inflation Pressure Reprices the Fed Path", "author": "Matthew Bolden", "publishedAt": "2026-06-12T14:31:49-04:00" }, { "url": "https://goldprice.org/news/jobs-shock-knocks-gold-below-4400-fed-cut-hopes-fade", "slug": "jobs-shock-knocks-gold-below-4400-fed-cut-hopes-fade", "image": "https://goldprice.org/sites/default/files/styles/blog_hero_375/public/blog_hero_images/Gold-Price-Recap1_5.jpg?itok=hGQiYGdB", "title": "Jobs Shock Knocks Gold Below $4,400 as Fed Cut Hopes Fade", "author": "Matthew Bolden", "publishedAt": "2026-06-05T13:42:18-04:00" }, { "url": "https://goldprice.org/news/de-escalation-headlines-weigh-on-gold-ahead-of-memorial-day", "slug": "de-escalation-headlines-weigh-on-gold-ahead-of-memorial-day", "image": "https://goldprice.org/sites/default/files/styles/blog_hero_375/public/blog_hero_images/Gold-Price-Recap%20%281%29_12.jpg?itok=fYRM7OWK", "title": "De-Escalation Headlines Weigh on Gold Ahead of Memorial Day", "author": "Matthew Bolden", "publishedAt": "2026-05-22T15:47:47-04:00" }, { "url": "https://goldprice.org/news/gold-falls-toward-4550-fed-cut-hopes-fade", "slug": "gold-falls-toward-4550-fed-cut-hopes-fade", "image": "https://goldprice.org/sites/default/files/styles/blog_hero_375/public/blog_hero_images/Gold-Price-Recap%20%281%29_11.jpg?itok=NO3uEVUh", "title": "Gold Falls Toward $4,550 as Fed-Cut Hopes Fade", "author": "Matthew Bolden", "publishedAt": "2026-05-15T16:11:03-04:00" }, { "url": "https://goldprice.org/news/gold-rallies-iran-peace-hopes-ease-yields-and-dollar-pressure", "slug": "gold-rallies-iran-peace-hopes-ease-yields-and-dollar-pressure", "image": "https://goldprice.org/sites/default/files/styles/blog_hero_375/public/blog_hero_images/Gold-Price-Recap1_4.jpg?itok=xAifbwQS", "title": "Gold Rallies as Iran Peace Hopes Ease Yields and Dollar Pressure", "author": "Matthew Bolden", "publishedAt": "2026-05-08T14:40:07-04:00" } ], "hasMore": false } ``` --- ### Article Isi artikel berita (input slug dari endpoint news). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:goldprice/article/:slug` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `slug` | string | path | yes | Slug artikel (atau full URL goldprice.org/news/...) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:goldprice/article/:slug" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:goldprice/article/:slug", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:goldprice/article/:slug", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "url": "https://goldprice.org/news/gold-pulls-back-inflation-pressure-reprices-fed-path", "slug": "gold-pulls-back-inflation-pressure-reprices-fed-path", "image": "https://goldprice.org/sites/default/files/styles/blog_hero/public/blog_hero_images/Gold-Price-Recap1_6.jpg?itok=qLiud1Ae", "title": "Gold Pulls Back as Inflation Pressure Reprices the Fed Path", "author": "Matthew Bolden", "source": "goldprice.org", "contentText": "Happy Friday, traders. Welcome to our weekly market wrap, where we take a look back at these last five trading days with a focus on the market news, economic data, and headlines that had the most impact on gold prices and other key correlated assets—and may continue to in the future.\n\nSo, what kind of week has it been?\n\n### Here's what you need to know:\n\n- Gold is set to close the week under pressure, with spot trading near $4,227/oz on Friday morning, down roughly $103 from last Friday's close near $4,330.\n\n- The main driver was another repricing of the Fed path after May CPI showed annual inflation running at 4.2%, keeping rate uncertainty in the center of the trade.\n\n- Geopolitical headlines around the US-Iran ceasefire and canceled strike plans complicated the tape, helping yields and crude ease late in the week while also reducing some of gold's safe-haven bid.\n\n- Next week brings the June FOMC decision on Wednesday, Chair Kevin Warsh's first as Fed chair, and traders will be watching for any shift in how the Fed balances sticky inflation, resilient labor data, and energy-market risk.\n\n### So, What Kind of a Week Has It Been?\n\nFor gold, this has been a week of pressure, repricing, and—at least through Friday morning—some late-session repair that does not quite undo the damage from earlier in the tape. Spot gold is trading near $4,227/oz as of Friday morning, down roughly $103 from last Friday's close near $4,330. That puts the yellow metal lower by a little more than 2.4% on the week, even after buyers stepped back in below the midweek lows.\n\nThe decline was not especially mysterious. The market came into the week already leaning away from the easy-rate-cut narrative after last Friday's blowout jobs number, and this week's inflation data gave traders one more reason to stay cautious. Gold has spent most of June trying to decide whether the $4,500 area was a consolidation line or a ceiling. This week's answer, at least for now, is that the path of least resistance moved lower once inflation and Fed risk returned to the center of the trade.\n\n### Inflation Keeps the Fed in the Driver's Seat\n\nThe key macro catalyst this week was the May CPI print, which showed annual inflation running at 4.2%, the hottest year-over-year reading since 2023, with energy prices doing much of the work. For gold traders, the important point was less the headline number by itself and more what it did to the policy conversation.\n\nA sticky inflation tape is not automatically bearish for gold. In the longer run, inflation is part of the reason investors own the metal in the first place. But in the short run, when inflation forces the market to push out rate-cut expectations—or, more aggressively, to entertain renewed talk of a hike—the reaction function can turn hostile very quickly. Higher real-rate expectations raise the opportunity cost of holding gold, and that is especially true when the market is already digesting a stronger labor-market print from the prior week.\n\nThe Fed is also in its pre-meeting quiet period, which left traders without much official guidance to lean on. That silence tends to let the data speak louder, and this week the data told the market that Chair Kevin Warsh's first FOMC meeting next Wednesday is unlikely to open with an immediate dovish pivot. The more likely setup is a hold, a cautious statement, and a press conference that traders will parse line by line for how willing this new Fed leadership is to tolerate inflation above target.\n\n### Geopolitics Gives, Then Takes Back, Some of the Bid\n\nThe geopolitical side of the trade was no cleaner. Early-week pressure on gold was helped along by a softer risk-premium backdrop as traders continued to reassess the US-Iran conflict and the durability of the latest ceasefire framework. Any sign that the Strait of Hormuz risk is easing matters for gold because it feeds directly into crude, gasoline, inflation expectations, and ultimately the Fed path.\n\nBy Friday morning, however, the tape had turned more two-sided. Reports that President Trump had canceled planned military strikes against Iran helped crude oil prices retreat and Treasury yields ease, which took some pressure off gold and allowed a bounce from the week's lows. But even that rebound carried an irony: de-escalation reduces the safe-haven bid that had helped support gold above $4,400, while lower oil prices also reduce the inflation impulse that had been forcing the Fed discussion in a more hawkish direction.\n\nThat is the difficult cross-current for gold here. Traders are not dealing with one simple narrative. A calmer Middle East can pressure gold by removing geopolitical premium, but it can also support gold if it pulls yields and the Dollar lower. A hotter inflation print can support the long-term hard-asset case, but it can hurt spot prices if it makes the Fed less likely to cut. This week, the rate side of the story won.\n\n### Silver Holds Up Better as the Dollar Slips\n\nSilver was the more resilient precious metal this week. Spot silver is trading near $68.72/oz on Friday morning, up about $0.90 from last Friday's close. That is not a runaway breakout, but it is a notable divergence from gold's softer tape and suggests that the white metal is still benefiting from a combination of monetary-metal demand and firmer industrial expectations.\n\nThe US Dollar was not a clean headwind by the end of the week. The Dollar softened on Thursday and Friday as yields eased and risk appetite improved, which helped give gold and silver some breathing room. But the weekly story was still dominated by the earlier repricing of Fed expectations, not by a sustained Dollar breakdown.\n\nAmong the PGMs, platinum slipped nearly 3% on the week, while palladium was the standout, gaining more than 7%. That divergence is another reminder that this has not been a simple \"precious metals up\" or \"precious metals down\" week. It has been a week of relative-value moves, macro repricing, and traders separating the monetary metals from the more industry-sensitive corners of the complex.\n\n### Looking Ahead\n\nNext week brings the June FOMC decision on Wednesday, and that is the obvious center of gravity for gold. The market is not positioned for a rate change, but it is positioned for guidance. Traders will want to know how Chair Warsh frames the combination of a hot inflation print, still-resilient labor data, energy-market uncertainty, and a gold market that has already corrected sharply from its recent highs.\n\nThe other thing to watch is whether Friday's rebound can turn into something more durable. If gold can reclaim the lower $4,300s and stabilize, this week may look like a corrective reset inside a still-constructive longer-term trend. If it fails there, the next leg of the tape may be less about geopolitics and more about how far real-rate expectations can stretch before physical demand and haven buyers step back in.\n\nIn the meantime, traders, I hope you can get out and safely enjoy your weekend for the next couple of days. After that, I'll see you back here next week for another market recap.\n\n\n\n\n\n\n\n\n\n\n\n#### Matthew Bolden\n\n\nMatthew Bolden is an active trader and investor. His passions include writing about financial markets in a simple, pragmatic way. His work has been seen in various arenas within the world of global finance, and he has written commentary on several markets including precious metals, stocks, currencies and options.\n\nMatthew is an avid reader, student of the markets and sports enthusiast who resides in the greater Chicago area.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### Gold Price Chart\n\n\n\n\n\n\n
0), satuannya ditentukan param `unit`. | | `unit` | enum(oz|gram|kg|tola|tael) | query | no | Satuan berat: oz (troy ounce), gram, kg, tola, tael (HK). Default gram. | | `currency` | string | query | no | Mata uang nilai output (kode ISO 3 huruf, mis. USD, IDR, EUR). Default USD. | | `purity` | number | query | no | Kemurnian logam 0..1 (mis. 0.999 fine, 0.75 untuk 18k emas). Default 1. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:goldprice/convert?metal=gold&weight=10&unit=gram¤cy=USD&purity=0.999" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:goldprice/convert?metal=gold&weight=10&unit=gram¤cy=USD&purity=0.999", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:goldprice/convert?metal=gold&weight=10&unit=gram¤cy=USD&purity=0.999", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "asOf": "2026-06-14T05:41:48.763Z", "unit": "gram", "metal": "gold", "purity": 1, "weight": 10, "currency": "USD", "pricePerOz": 4210.905, "totalValue": 1353.84, "pricePerGram": 135.383739 } ``` --- ## IDX (Bursa Efek Indonesia) **Category:** finance · **Slug:** `idx` **Detail page:** https://zpi.web.id/api/finance/idx Data Bursa Efek Indonesia: ringkasan saham & indeks, top movers, broker, emiten, laporan keuangan, berita, dan passthrough ke ratusan endpoint /primary/. **Tags:** idx, saham, stock, bursa, indonesia, finance ### Ringkasan Saham Ringkasan perdagangan semua saham (harga, volume, value, frekuensi). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/stock-summary` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `length` | number | query | no | Jumlah baris per halaman (default 20, max 1000) | | `start` | number | query | no | Offset awal (default 0) | | `date` | string | query | no | Tanggal data (YYYYMMDD atau YYYY-MM-DD). Default hari bursa terakhir. Bisa ambil data historis. | | `code` | string | query | no | Filter kode saham tertentu (opsional) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/stock-summary?length=20&start=0&date=20260612&code=BBCA" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/stock-summary?length=20&start=0&date=20260612&code=BBCA", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/stock-summary?length=20&start=0&date=20260612&code=BBCA", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "No": 1, "Bid": 8625, "Low": 8050, "Date": "2026-06-12T00:00:00", "High": 8850, "Close": 8650, "Offer": 8650, "Value": 182271837500, "Change": 600, "Volume": 21262200, "persen": null, "Remarks": "XDMO1SD0F10000A121------------", "Previous": 8050, "BidVolume": 29200, "Frequency": 9962, "OpenPrice": 8100, "StockCode": "AADI", "StockName": "Adaro Andalan Indonesia Tbk.", "FirstTrade": 8075, "ForeignBuy": 5896500, "percentage": null, "ForeignSell": 9874800, "OfferVolume": 67500, "ListedShares": 7786891760, "DelistingDate": "", "IDStockSummary": 4031673, "TradebleShares": 7786891760, "WeightForIndex": 1486517637, "IndexIndividual": 155.9, "NonRegularValue": 5466551, "NonRegularVolume": 659, "NonRegularFrequency": 16 }, { "No": 2, "Bid": 6175, "Low": 6025, "Date": "2026-06-12T00:00:00", "High": 6325, "Close": 6175, "Offer": 6225, "Value": 18983070000, "Change": 125, "Volume": 3068700, "persen": null, "Remarks": "--MO113E100000D232------------", "Previous": 6050, "BidVolume": 51900, "Frequency": 3424, "OpenPrice": 6075, "StockCode": "AALI", "StockName": "Astra Agro Lestari Tbk.", "FirstTrade": 6050, "ForeignBuy": 1104500, "percentage": null, "ForeignSell": 1285200, "OfferVolume": 3000, "ListedShares": 1924688333, "DelistingDate": "", "IDStockSummary": 4031674, "TradebleShares": 1924688333, "WeightForIndex": 390711732, "IndexIndividual": 501.6, "NonRegularValue": 0, "NonRegularVolume": 0, "NonRegularFrequency": 0 }, { "No": 3, "Bid": 35, "Low": 35, "Date": "2026-06-12T00:00:00", "High": 35, "Close": 35, "Offer": 36, "Value": 10220000, "Change": 0, "Volume": 292000, "persen": null, "Remarks": "--U-4100000000E614-E---------X", "Previous": 35, "BidVolume": 8000, "Frequency": 59, "OpenPrice": 0, "StockCode": "ABBA", "StockName": "Mahaka Media Tbk.", "FirstTrade": 0, "ForeignBuy": 0, "percentage": null, "ForeignSell": 0, "OfferVolume": 1020800, "ListedShares": 3935892857, "DelistingDate": "", "IDStockSummary": 4031675, "TradebleShares": 3935892857, "WeightForIndex": 1298844643, "IndexIndividual": 77.3, "NonRegularValue": 0, "NonRegularVolume": 0, "NonRegularFrequency": 0 } ], "start": 0, "length": 3, "dataset": "stock-summary", "provider": "idx", "recordsTotal": 959, "recordsFiltered": 959 } ``` --- ### Ringkasan Indeks Ringkasan semua indeks IDX (IHSG/COMPOSITE, LQ45, IDX30, dll). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/index-summary` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `length` | number | query | no | Jumlah indeks (default 50) | | `start` | number | query | no | Offset (default 0) | | `date` | string | query | no | Tanggal data (YYYYMMDD atau YYYY-MM-DD). Default hari bursa terakhir. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/index-summary?length=50&start=0&date=20260612" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/index-summary?length=50&start=0&date=20260612", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/index-summary?length=50&start=0&date=20260612", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "No": 1, "Date": "2026-06-12T00:00:00", "Close": 6007.656, "Value": 21654846683780, "Change": 121.624, "Lowest": 5952.852, "Volume": 34775696450, "Highest": 6074.072, "Previous": 5886.032, "Frequency": 2346364, "IndexCode": "COMPOSITE", "MarketCapital": 10524297346477400, "NumberOfStock": 913, "IndexSummaryID": 193005 }, { "No": 2, "Date": "2026-06-12T00:00:00", "Close": 597.448, "Value": 12206901755616, "Change": 10.606, "Lowest": 594.635, "Volume": 12651287578, "Highest": 607.958, "Previous": 586.842, "Frequency": 819004, "IndexCode": "LQ45", "MarketCapital": 4125839000206770, "NumberOfStock": 45, "IndexSummaryID": 193006 }, { "No": 3, "Date": "2026-06-12T00:00:00", "Close": 87.187, "Value": 9911848320501, "Change": 1.362, "Lowest": 86.992, "Volume": 3945789568, "Highest": 88.837, "Previous": 85.825, "Frequency": 586876, "IndexCode": "IDXLQ45LCL", "MarketCapital": 4303050354047150, "NumberOfStock": 37, "IndexSummaryID": 193045 }, { "No": 4, "Date": "2026-06-12T00:00:00", "Close": 338.988, "Value": 10146806912295, "Change": 4.6, "Lowest": 338.707, "Volume": 10087520928, "Highest": 345.174, "Previous": 334.388, "Frequency": 623335, "IndexCode": "IDX30", "MarketCapital": 3507589087883250, "NumberOfStock": 30, "IndexSummaryID": 193014 }, { "No": 5, "Date": "2026-06-12T00:00:00", "Close": 89.678, "Value": 16205619462397, "Change": 1.963, "Lowest": 88.938, "Volume": 16349915979, "Highest": 91.217, "Previous": 87.715, "Frequency": 1172821, "IndexCode": "IDX80", "MarketCapital": 4994502370344020, "NumberOfStock": 80, "IndexSummaryID": 193025 } ], "dataset": "index-summary", "provider": "idx", "recordsTotal": 45 } ``` --- ### Top Movers Saham paling aktif: top gainer, loser, volume, value, frequent. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/top-movers` - **Cache TTL:** 900s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `type` | enum(gainer|loser|volume|value|frequent) | query | yes | Jenis: gainer (naik), loser (turun), volume, value, frequent (paling sering) | | `resultCount` | number | query | no | Jumlah saham teratas yang dikembalikan (default 10) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/top-movers?type=gainer&resultCount=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/top-movers?type=gainer&resultCount=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/top-movers?type=gainer&resultCount=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "Code": "KIOS", "Price": 91, "Value": 4186683900, "Change": 23, "Volume": 49168300, "Percent": 33.82, "Frequency": 2892 }, { "Code": "ASPR", "Price": 216, "Value": 140679325600, "Change": 51, "Volume": 705910000, "Percent": 30.91, "Frequency": 38164 }, { "Code": "PART", "Price": 100, "Value": 2590827500, "Change": 20, "Volume": 27542300, "Percent": 25, "Frequency": 2324 }, { "Code": "BUKK", "Price": 1005, "Value": 280842500, "Change": 200, "Volume": 289400, "Percent": 24.84, "Frequency": 212 }, { "Code": "RLCO", "Price": 3020, "Value": 11771918000, "Change": 600, "Volume": 4123100, "Percent": 24.79, "Frequency": 4944 } ], "type": "gainer", "dataset": "top-movers", "provider": "idx", "resultCount": 5 } ``` --- ### Ringkasan Broker Ringkasan perdagangan per broker/anggota bursa. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/broker-summary` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `length` | number | query | no | Jumlah broker (default 50) | | `start` | number | query | no | Offset (default 0) | | `date` | string | query | no | Tanggal data (YYYYMMDD atau YYYY-MM-DD). Default hari bursa terakhir. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/broker-summary?length=50&start=0&date=20260612" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/broker-summary?length=50&start=0&date=20260612", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/broker-summary?length=50&start=0&date=20260612", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "No": 1, "Date": "2026-06-12T00:00:00", "Value": 1187317700, "IDFirm": "AD", "Volume": 5131200, "FirmName": "Sukadana Prima Sekuritas", "Frequency": 204, "IDBrokerSummary": 957287 }, { "No": 2, "Date": "2026-06-12T00:00:00", "Value": 3582812000, "IDFirm": "AF", "Volume": 5211500, "FirmName": "Harita Kencana Sekuritas", "Frequency": 145, "IDBrokerSummary": 957288 }, { "No": 3, "Date": "2026-06-12T00:00:00", "Value": 198130186500, "IDFirm": "AG", "Volume": 296854100, "FirmName": "Kiwoom Sekuritas Indonesia", "Frequency": 22106, "IDBrokerSummary": 957289 } ], "start": 0, "length": 3, "dataset": "broker-summary", "provider": "idx", "recordsTotal": 88 } ``` --- ### Emiten Tercatat Profil perusahaan/emiten tercatat di BEI. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/companies` - **Cache TTL:** 21600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `length` | number | query | no | Jumlah emiten per halaman (default 20, max 1000) | | `start` | number | query | no | Offset (default 0) | | `code` | string | query | no | Filter kode emiten tertentu (opsional) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/companies?length=20&start=0&code=BBCA" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/companies?length=20&start=0&code=BBCA", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/companies?length=20&start=0&code=BBCA", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "id": 0, "BAE": "PT. Datindo Entrycom", "Fax": "(021) 2553 3066", "Logo": "/Portals/0/StaticData/ListedCompanies/LogoEmiten/AADI.jpg", "NPKP": "", "NPWP": "02.433.115.9-091.000", "Email": "corsec@adaroindonesia.com", "Alamat": "Cyber 2 Tower Lantai 26\nJl. H.R. Rasuna Said Blok X-5, No.13\nJakarta 12950 - Indonesia", "DataID": 0, "Divisi": null, "Sektor": "Energi", "Status": 0, "Telepon": "(021) 2553 3065", "Website": "www.adaroindonesia.com", "Industri": "Batu Bara", "SubSektor": "Minyak, Gas & Batu Bara", "KodeDivisi": null, "KodeEmiten": "AADI", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "JenisEmiten": null, "SubIndustri": "Produksi Batu Bara", "EfekEmiten_EBA": false, "EfekEmiten_ETF": false, "EfekEmiten_SPEI": false, "PapanPencatatan": "Utama", "EfekEmiten_Saham": true, "TanggalPencatatan": "2024-12-05T00:00:00", "KegiatanUsahaUtama": "Perkebunan kelapa sawit, karet dan tanaman penghasil getah lain, perusahaan holding, dan konsultasi manajemen lainnya", "EfekEmiten_Obligasi": false }, { "id": 0, "BAE": "PT. Raya Saham Registra", "Fax": "461-6655, 461-6677, 461-6688", "Logo": "/Portals/0/StaticData/ListedCompanies/LogoEmiten/AALI.jpg", "NPKP": "", "NPWP": "001.334.427.0-054.000", "Email": "Investor@astra-agro.co.id", "Alamat": "Jl. Puloayang Raya Kawasan Industri Pulo Gadung, OR, 1, Jatinegara, Cakung, Kota ADM, Jakarta Timur, DKI Jakarta, 13930", "DataID": 0, "Divisi": null, "Sektor": "Barang Konsumen Primer", "Status": 0, "Telepon": "461-65-55", "Website": "http://www.astra-agro.co.id", "Industri": "Produk Makanan Pertanian", "SubSektor": "Makanan & Minuman", "KodeDivisi": null, "KodeEmiten": "AALI", "NamaEmiten": "Astra Agro Lestari Tbk", "JenisEmiten": null, "SubIndustri": "Perkebunan & Tanaman Pangan", "EfekEmiten_EBA": false, "EfekEmiten_ETF": false, "EfekEmiten_SPEI": false, "PapanPencatatan": "Utama", "EfekEmiten_Saham": true, "TanggalPencatatan": "1997-12-09T00:00:00", "KegiatanUsahaUtama": "Agriculture Plantation", "EfekEmiten_Obligasi": false } ], "start": 0, "length": 2, "dataset": "listed-companies", "provider": "idx", "recordsTotal": 958, "recordsFiltered": 958 } ``` --- ### Daftar Securities Daftar saham tercatat: kode, nama, listing date, jumlah saham, papan. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/securities` - **Cache TTL:** 21600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `length` | number | query | no | Jumlah per halaman (default 20, max 1000) | | `start` | number | query | no | Offset (default 0) | | `code` | string | query | no | Filter kode saham (opsional) | | `sector` | string | query | no | Filter sektor (opsional) | | `board` | string | query | no | Filter papan pencatatan: Utama/Pengembangan/Akselerasi/Ekonomi-Baru (opsional) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/securities?length=20&start=0&code=BBCA§or=Financials&board=Utama" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/securities?length=20&start=0&code=BBCA§or=Financials&board=Utama", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/securities?length=20&start=0&code=BBCA§or=Financials&board=Utama", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "Code": "AALI", "Name": "Astra Agro Lestari Tbk.", "Shares": 1924688333, "ListingDate": "1997-12-09T00:00:00", "ListingBoard": "Utama" }, { "Code": "ABBA", "Name": "Mahaka Media Tbk.", "Shares": 3935892857, "ListingDate": "2002-04-03T00:00:00", "ListingBoard": "Pemantauan Khusus" }, { "Code": "ABDA", "Name": "Asuransi Bina Dana Arta Tbk.", "Shares": 620806680, "ListingDate": "1989-07-06T00:00:00", "ListingBoard": "Pengembangan" } ], "start": 0, "length": 3, "dataset": "securities", "provider": "idx", "recordsTotal": 957, "recordsFiltered": 957 } ``` --- ### Laporan Keuangan Laporan keuangan emiten per tahun/periode (link file). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/financial-report` - **Cache TTL:** 21600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `year` | number | query | yes | Tahun laporan | | `period` | enum(tw1|tw2|tw3|audit) | query | no | Periode: tw1/tw2/tw3 (triwulan) atau audit (tahunan). Default audit | | `code` | string | query | no | Filter kode emiten (opsional) | | `length` | number | query | no | Jumlah baris (default 20) | | `start` | number | query | no | Offset (default 0) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/financial-report?year=2024&period=audit&code=BBCA&length=20&start=0" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/financial-report?year=2024&period=audit&code=BBCA&length=20&start=0", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/financial-report?year=2024&period=audit&code=BBCA&length=20&start=0", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "KodeEmiten": "AADI", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "Attachments": [ { "File_ID": "edca4d28-7ff8-4c32-b18e-14141cb0dd59", "File_Name": "AnnualReport2024-AADI.pdf", "File_Path": "/Portals/0/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202504/52ff57ad3c_f6912de316.pdf", "File_Size": 0, "File_Type": ".pdf", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "Emiten_Code": "AADI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-04T18:44:28.883", "Report_Period": "Audit" }, { "File_ID": "96655ee5-3cb9-4c0e-95d9-16db102cc978", "File_Name": "FinancialStatement-2024-Tahunan-AADI.xlsx", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AADI/FinancialStatement-2024-Tahunan-AADI.xlsx", "File_Size": 367860, "File_Type": ".xlsx", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "Emiten_Code": "AADI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-04T18:44:28.883", "Report_Period": "Audit" }, { "File_ID": "0949d36e-9a7a-4add-8b07-2e2399aeac61", "File_Name": "Checklist Pengungkapan LK 31 Desember 2024 AADI.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AADI/Checklist Pengungkapan LK 31 Desember 2024 AADI.pdf", "File_Size": 704955, "File_Type": ".pdf", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "Emiten_Code": "AADI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-04T18:44:28.883", "Report_Period": "Audit" }, { "File_ID": "bd296b95-7ee6-4846-b2c9-59a2ada5e06d", "File_Name": "FS 31 December 2024 AADI.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AADI/FS 31 December 2024 AADI.pdf", "File_Size": 5432342, "File_Type": ".pdf", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "Emiten_Code": "AADI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-04T18:44:28.883", "Report_Period": "Audit" }, { "File_ID": "a97b2840-c80c-402b-99ee-6660a9922549", "File_Name": "FinancialStatement-2024-Tahunan-AADI.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AADI/FinancialStatement-2024-Tahunan-AADI.pdf", "File_Size": 891780, "File_Type": ".pdf", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "Emiten_Code": "AADI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-04T18:44:28.883", "Report_Period": "Audit" }, { "File_ID": "2ac61344-c584-4dff-a805-a6fb291dc445", "File_Name": "inlineXBRL.zip", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AADI/inlineXBRL.zip", "File_Size": 273599, "File_Type": ".zip", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "Emiten_Code": "AADI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-04T18:44:28.883", "Report_Period": "Audit" }, { "File_ID": "48834fc8-0ac3-4fda-933b-da8fa22f0a3e", "File_Name": "AnnualReport2024-AADI-att1.pdf", "File_Path": "/Portals/0/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202504/dd68aa1634_ccc31cec64.pdf", "File_Size": 0, "File_Type": ".pdf", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "Emiten_Code": "AADI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-04T18:44:28.883", "Report_Period": "Audit" }, { "File_ID": "109b23cc-ef8c-438e-ad40-e4cd8aa8fdd9", "File_Name": "instance.zip", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AADI/instance.zip", "File_Size": 143996, "File_Type": ".zip", "NamaEmiten": "PT Adaro Andalan Indonesia Tbk", "Emiten_Code": "AADI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-04T18:44:28.883", "Report_Period": "Audit" } ], "Report_Year": "2024", "File_Modified": "2025-03-04T18:44:28.883", "Report_Period": "Audit" }, { "KodeEmiten": "AALI", "NamaEmiten": "Astra Agro Lestari Tbk", "Attachments": [ { "File_ID": "9d040440-11e2-44e2-a4b3-0afffce8a8b8", "File_Name": "instance.zip", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AALI/instance.zip", "File_Size": 124227, "File_Type": ".zip", "NamaEmiten": "Astra Agro Lestari Tbk", "Emiten_Code": "AALI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-02-20T18:52:30.817", "Report_Period": "Audit" }, { "File_ID": "babe240e-7b3a-48e2-a0ca-32f53516bc2e", "File_Name": "AnnualReport2024-AALI-att1.pdf", "File_Path": "/Portals/0/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202503/dcb2b35d05_b2fb6becaa.pdf", "File_Size": 0, "File_Type": ".pdf", "NamaEmiten": "Astra Agro Lestari Tbk", "Emiten_Code": "AALI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-02-20T18:52:30.817", "Report_Period": "Audit" }, { "File_ID": "c5873da8-a4f2-42b7-b065-5c013847bc9f", "File_Name": "AALI Surat Pernyataan Direksi LK Tahunan 2024.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AALI/AALI Surat Pernyataan Direksi LK Tahunan 2024.pdf", "File_Size": 387898, "File_Type": ".pdf", "NamaEmiten": "Astra Agro Lestari Tbk", "Emiten_Code": "AALI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-02-20T18:52:30.817", "Report_Period": "Audit" }, { "File_ID": "1c5cd578-a398-4d0c-85a1-7b6ca4987f8a", "File_Name": "AALI LK Tahunan 2024.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AALI/AALI LK Tahunan 2024.pdf", "File_Size": 3197496, "File_Type": ".pdf", "NamaEmiten": "Astra Agro Lestari Tbk", "Emiten_Code": "AALI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-02-20T18:52:30.817", "Report_Period": "Audit" }, { "File_ID": "c181691a-f95d-4433-91d5-84a3084be6e9", "File_Name": "FinancialStatement-2024-Tahunan-AALI.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AALI/FinancialStatement-2024-Tahunan-AALI.pdf", "File_Size": 800894, "File_Type": ".pdf", "NamaEmiten": "Astra Agro Lestari Tbk", "Emiten_Code": "AALI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-02-20T18:52:30.817", "Report_Period": "Audit" }, { "File_ID": "7892d4ec-62dc-45fc-8ba9-a76d117dfbaa", "File_Name": "FinancialStatement-2024-Tahunan-AALI.xlsx", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AALI/FinancialStatement-2024-Tahunan-AALI.xlsx", "File_Size": 317450, "File_Type": ".xlsx", "NamaEmiten": "Astra Agro Lestari Tbk", "Emiten_Code": "AALI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-02-20T18:52:30.817", "Report_Period": "Audit" }, { "File_ID": "9bcea6a0-5e5a-4147-abc2-acddc0b32df4", "File_Name": "AALI Checklist Pengungkapan LK AALI 2024.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/AALI/AALI Checklist Pengungkapan LK AALI 2024.pdf", "File_Size": 969992, "File_Type": ".pdf", "NamaEmiten": "Astra Agro Lestari Tbk", "Emiten_Code": "AALI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-02-20T18:52:30.817", "Report_Period": "Audit" }, { "File_ID": "149f5493-e3d6-4fa5-9246-c3a20f005695", "File_Name": "AnnualReport2024-AALI.pdf", "File_Path": "/Portals/0/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202503/7bf46a818f_3ba87d6580.pdf", "File_Size": 0, "File_Type": ".pdf", "NamaEmiten": "Astra Agro Lestari Tbk", "Emiten_Code": "AALI", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-02-20T18:52:30.817", "Report_Period": "Audit" } ], "Report_Year": "2024", "File_Modified": "2025-02-20T18:52:30.817", "Report_Period": "Audit" }, { "KodeEmiten": "ABBA", "NamaEmiten": "Mahaka Media Tbk", "Attachments": [ { "File_ID": "8283aeb0-8e02-4b1b-91b7-02257c5532bd", "File_Name": "AnnualReport2024-ABBA.pdf", "File_Path": "/Portals/0/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202505/57d67f88ce_bf92dc00a5.pdf", "File_Size": 0, "File_Type": ".pdf", "NamaEmiten": "Mahaka Media Tbk", "Emiten_Code": "ABBA", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-27T00:15:30.017", "Report_Period": "Audit" }, { "File_ID": "fe5a1e16-22d1-4fe5-9176-1690139036e1", "File_Name": "inlineXBRL.zip", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/ABBA/inlineXBRL.zip", "File_Size": 221844, "File_Type": ".zip", "NamaEmiten": "Mahaka Media Tbk", "Emiten_Code": "ABBA", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-27T00:15:30.017", "Report_Period": "Audit" }, { "File_ID": "92511c9f-5772-4454-ac1e-19666e315b18", "File_Name": "AnnualReport2024-ABBA-att1.pdf", "File_Path": "/Portals/0/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202505/8d0ec2f5d0_7ad9ace030.pdf", "File_Size": 0, "File_Type": ".pdf", "NamaEmiten": "Mahaka Media Tbk", "Emiten_Code": "ABBA", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-27T00:15:30.017", "Report_Period": "Audit" }, { "File_ID": "17f0c06e-5acc-4461-9cf5-22bbdb2433a9", "File_Name": "instance.zip", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/ABBA/instance.zip", "File_Size": 111972, "File_Type": ".zip", "NamaEmiten": "Mahaka Media Tbk", "Emiten_Code": "ABBA", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-27T00:15:30.017", "Report_Period": "Audit" }, { "File_ID": "0175e873-dc52-4d3b-9ed2-2cd12aef8044", "File_Name": "FinancialStatement-2024-Tahunan-ABBA.xlsx", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/ABBA/FinancialStatement-2024-Tahunan-ABBA.xlsx", "File_Size": 307403, "File_Type": ".xlsx", "NamaEmiten": "Mahaka Media Tbk", "Emiten_Code": "ABBA", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-27T00:15:30.017", "Report_Period": "Audit" }, { "File_ID": "154f052f-044c-45a7-ba1a-3a78baaf1e05", "File_Name": "Surat_Pengantar LK ABBA.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/ABBA/Surat_Pengantar LK ABBA.pdf", "File_Size": 286181, "File_Type": ".pdf", "NamaEmiten": "Mahaka Media Tbk", "Emiten_Code": "ABBA", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-27T00:15:30.017", "Report_Period": "Audit" }, { "File_ID": "51e228be-e2bd-41fb-baa4-a06fbb4d4738", "File_Name": "Lapkeu ABBA 31 Des 24_IDX.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/ABBA/Lapkeu ABBA 31 Des 24_IDX.pdf", "File_Size": 8920519, "File_Type": ".pdf", "NamaEmiten": "Mahaka Media Tbk", "Emiten_Code": "ABBA", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-27T00:15:30.017", "Report_Period": "Audit" }, { "File_ID": "22609fcf-2156-4996-ac00-ae881f0ac1a1", "File_Name": "Surat Pernyataan Direksi PT ABBA.pdf", "File_Path": "/Portals/0/StaticData/ListedCompanies/Corporate_Actions/New_Info_JSX/Jenis_Informasi/01_Laporan_Keuangan/02_Soft_Copy_Laporan_Keuangan//Laporan Keuangan Tahun 2024/Audit/ABBA/Surat Pernyataan Direksi PT ABBA.pdf", "File_Size": 444924, "File_Type": ".pdf", "NamaEmiten": "Mahaka Media Tbk", "Emiten_Code": "ABBA", "Report_Type": "rdf", "Report_Year": "2024", "File_Modified": "2025-03-27T00:15:30.017", "Report_Period": "Audit" } ], "Report_Year": "2024", "File_Modified": "2025-03-27T00:15:30.017", "Report_Period": "Audit" } ], "year": 2024, "period": "audit", "dataset": "financial-report", "provider": "idx", "recordsTotal": 936 } ``` --- ### Aktivitas Pasar Saham suspend, relisting, dan UMA (Unusual Market Activity). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/market-activity` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `type` | enum(suspend|relisting|uma) | query | yes | Jenis: suspend (saham disuspend), relisting, uma (Unusual Market Activity) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/market-activity?type=suspend" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/market-activity?type=suspend", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/market-activity?type=suspend", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": { "Results": [ { "Judul": "UMA atas Saham PT Solusi Environment Asia Tbk. (SOFA)", "UMAID": null, "Status": null, "UMADate": "2026-06-11T00:00:00", "CompanyID": "SOFA", "Attachment": "/Portals/0/StaticData/NewsAndAnnouncement/UMA/2026/JUN/20260611-WAS_UMA_SOFA.pdf", "CompanyName": null, "AnnouncementNo": null }, { "Judul": "UMA atas Saham PT Sinarmas Multiartha Tbk. (SMMA)", "UMAID": null, "Status": null, "UMADate": "2026-06-09T00:00:00", "CompanyID": "SMMA", "Attachment": "/Portals/0/StaticData/NewsAndAnnouncement/UMA/2026/JUN/20260609-WAS_UMA_SMMA.pdf", "CompanyName": null, "AnnouncementNo": null }, { "Judul": "UMA atas Saham PT Sentul City Tbk. (BKSL)", "UMAID": null, "Status": null, "UMADate": "2026-06-08T00:00:00", "CompanyID": "BKSL", "Attachment": "/Portals/0/StaticData/NewsAndAnnouncement/UMA/2026/JUN/20260608-WAS_UMA_BKSL.pdf", "CompanyName": null, "AnnouncementNo": null }, { "Judul": "UMA atas Saham PT Techno9 Indonesia Tbk. (NINE)", "UMAID": null, "Status": null, "UMADate": "2026-06-08T00:00:00", "CompanyID": "NINE", "Attachment": "/Portals/0/StaticData/NewsAndAnnouncement/UMA/2026/JUN/20260608-WAS_UMA_NINE.pdf", "CompanyName": null, "AnnouncementNo": null }, { "Judul": "UMA atas Saham PT Kedoya Adyaraya Tbk. (RSGK)", "UMAID": null, "Status": null, "UMADate": "2026-06-08T00:00:00", "CompanyID": "RSGK", "Attachment": "/Portals/0/StaticData/NewsAndAnnouncement/UMA/2026/JUN/20260608-WAS_UMA_RSGK.pdf", "CompanyName": null, "AnnouncementNo": null }, { "Judul": "UMA atas Saham PT First Media Tbk. (KBLV)", "UMAID": null, "Status": null, "UMADate": "2026-06-08T00:00:00", "CompanyID": "KBLV", "Attachment": "/Portals/0/StaticData/NewsAndAnnouncement/UMA/2026/JUN/20260608-WAS_UMA_KBLV.pdf", "CompanyName": null, "AnnouncementNo": null }, { "Judul": "UMA atas Saham PT RMK Energy Tbk. (RMKE)", "UMAID": null, "Status": null, "UMADate": "2026-06-08T00:00:00", "CompanyID": "RMKE", "Attachment": "/Portals/0/StaticData/NewsAndAnnouncement/UMA/2026/JUN/20260608-WAS_UMA_RMKE.pdf", "CompanyName": null, "AnnouncementNo": null } ], "ResultCount": 0, "SearchCriteria": { "DateTo": null, "Keyword": "not used", "DateFrom": null, "pagesize": 10, "indexfrom": 0 } }, "type": "uma", "dataset": "market-activity", "provider": "idx" } ``` --- ### Berita & Pengumuman Berita dan pengumuman bursa, bisa dicari per kata kunci. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/news` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `keyword` | string | query | no | Kata kunci pencarian (opsional) | | `length` | number | query | no | Jumlah berita (default 10) | | `start` | number | query | no | Offset (default 0) | | `dateFrom` | string | query | no | Tanggal mulai filter (YYYYMMDD atau YYYY-MM-DD, opsional) | | `dateTo` | string | query | no | Tanggal akhir filter (YYYYMMDD atau YYYY-MM-DD, opsional) | | `locale` | enum(id|en) | query | no | Bahasa (id/en, default id) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/news?keyword=dividen&length=10&start=0&dateFrom=20260101&dateTo=20260613&locale=id" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/news?keyword=dividen&length=10&start=0&dateFrom=20260101&dateTo=20260613&locale=id", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/news?keyword=dividen&length=10&start=0&dateFrom=20260101&dateTo=20260613&locale=id", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "Id": 11692, "Tags": "RUPST", "Links": [ { "Rel": "self", "Href": "/api/api/publication/news/11692", "Method": "GET" } ], "Title": "Panggilan Rapat Umum Pemegang Saham Tahunan PT Bursa Efek Indonesia Tahun 2026", "ItemId": "2fb61ad4-2b66-f111-b149-dacbee12ffcb", "Locale": "id-id", "Summary": "Panggilan Rapat Umum Pemegang Saham Tahunan PT Bursa Efek Indonesia Tahun 2026", "ImageUrl": "/media/1557/logo-bursa-efek-indonesia-final.jpg", "PathBase": null, "PathFile": null, "IsHeadline": true, "PublishedDate": "2026-06-12T08:00:00" }, { "Id": 11694, "Tags": "Go Public,Workshop", "Links": [ { "Rel": "self", "Href": "/api/api/publication/news/11694", "Method": "GET" } ], "Title": "Go Public Workshop “Go Public Sebagai Solusi Pendanaan di Tengah Tantangan Ekonomi Daerah” Kota Jayapura", "ItemId": "b1c02193-3766-f111-b149-dacbee12ffcb", "Locale": "id-id", "Summary": "Go Public Workshop “Go Public Sebagai Solusi Pendanaan di Tengah Tantangan Ekonomi Daerah” Kota Jayapura", "ImageUrl": "/media/bmwgnbax/gpw-jayapura.jpg", "PathBase": null, "PathFile": null, "IsHeadline": true, "PublishedDate": "2026-06-02T12:00:00" }, { "Id": 11695, "Tags": "Go Public,Workshop", "Links": [ { "Rel": "self", "Href": "/api/api/publication/news/11695", "Method": "GET" } ], "Title": "Go Public Workshop “Go Public Sebagai Solusi Pendanaan di Tengah Tantangan Ekonomi Daerah” Kota Jayapura", "ItemId": "b1c02193-3766-f111-b149-dacbee12ffcb", "Locale": "en-us", "Summary": "Go Public Workshop “Go Public Sebagai Solusi Pendanaan di Tengah Tantangan Ekonomi Daerah” Kota Jayapura", "ImageUrl": "/media/bmwgnbax/gpw-jayapura.jpg", "PathBase": null, "PathFile": null, "IsHeadline": true, "PublishedDate": "2026-06-02T12:00:00" } ], "dataset": "news", "keyword": "saham", "provider": "idx" } ``` --- ### Index Halaman Index semua halaman publik idx.co.id (464 URL), terkategorikan per section. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/sitemap` - **Cache TTL:** 86400s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `locale` | enum(id|en|all) | query | no | Filter bahasa URL: id, en, atau all (default id) | | `section` | string | query | no | Filter section tertentu (mis. data-pasar, perusahaan-tercatat, berita) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/sitemap?locale=id§ion=data-pasar" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/sitemap?locale=id§ion=data-pasar", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/sitemap?locale=id§ion=data-pasar", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "note": "Menampilkan 7 URL di section \"idx-syariah\".", "urls": [ "https://www.idx.co.id/id/idx-syariah/edukasi-pasar-modal-syariah", "https://www.idx.co.id/id/idx-syariah/fatwa-regulasi", "https://www.idx.co.id/id/idx-syariah/hubungi-kami", "https://www.idx.co.id/id/idx-syariah/indeks-saham-syariah", "https://www.idx.co.id/id/idx-syariah/pertanyaan-dan-jawaban", "https://www.idx.co.id/id/idx-syariah/produk-syariah", "https://www.idx.co.id/id/idx-syariah/transaksi-sesuai-syariah" ], "locale": "id", "dataset": "sitemap", "provider": "idx", "totalUrls": 232, "sectionCounts": { "faq": 1, "akun": 5, "masuk": 2, "berita": 11, "daftar": 1, "https:": 1, "produk": 13, "sitemap": 1, "sign-out": 1, "investhub": 13, "peraturan": 7, "data-pasar": 113, "notifikasi": 1, "idx-syariah": 7, "market-data": 17, "tentang-bei": 14, "lupa-password": 1, "daftar-istilah": 1, "hasil-pencarian": 1, "verifikasi-email": 1, "form-atur-password": 1, "perusahaan-tercatat": 13, "verifikasi-email-sukses": 1, "anggota-bursa-dan-partisipan": 5 } } ``` --- ### Raw Passthrough Akses endpoint data IDX /primary/... apa pun sebagai JSON (fleksibel, ratusan endpoint). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/raw` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `path` | string | query | yes | Path endpoint IDX setelah /primary/ (format Modul/GetXxx). Modul valid: TradingSummary, ListedCompany, StockData, Home, NewsAnnouncement, Bond, dll. | | `query` | string | query | no | Query string mentah yang ditempel ke endpoint (opsional). Contoh: length=20&start=0&kodeEmiten=BBCA | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/raw?path=TradingSummary%2FGetStockSummary&query=length%3D10%26start%3D0" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/raw?path=TradingSummary%2FGetStockSummary&query=length%3D10%26start%3D0", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/raw?path=TradingSummary%2FGetStockSummary&query=length%3D10%26start%3D0", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "No": 1, "Bid": 8625, "Low": 8050, "Date": "2026-06-12T00:00:00", "High": 8850, "Close": 8650, "Offer": 8650, "Value": 182271837500, "Change": 600, "Volume": 21262200, "persen": null, "Remarks": "XDMO1SD0F10000A121------------", "Previous": 8050, "BidVolume": 29200, "Frequency": 9962, "OpenPrice": 8100, "StockCode": "AADI", "StockName": "Adaro Andalan Indonesia Tbk.", "FirstTrade": 8075, "ForeignBuy": 5896500, "percentage": null, "ForeignSell": 9874800, "OfferVolume": 67500, "ListedShares": 7786891760, "DelistingDate": "", "IDStockSummary": 4031673, "TradebleShares": 7786891760, "WeightForIndex": 1486517637, "IndexIndividual": 155.9, "NonRegularValue": 5466551, "NonRegularVolume": 659, "NonRegularFrequency": 16 }, { "No": 2, "Bid": 6175, "Low": 6025, "Date": "2026-06-12T00:00:00", "High": 6325, "Close": 6175, "Offer": 6225, "Value": 18983070000, "Change": 125, "Volume": 3068700, "persen": null, "Remarks": "--MO113E100000D232------------", "Previous": 6050, "BidVolume": 51900, "Frequency": 3424, "OpenPrice": 6075, "StockCode": "AALI", "StockName": "Astra Agro Lestari Tbk.", "FirstTrade": 6050, "ForeignBuy": 1104500, "percentage": null, "ForeignSell": 1285200, "OfferVolume": 3000, "ListedShares": 1924688333, "DelistingDate": "", "IDStockSummary": 4031674, "TradebleShares": 1924688333, "WeightForIndex": 390711732, "IndexIndividual": 501.6, "NonRegularValue": 0, "NonRegularVolume": 0, "NonRegularFrequency": 0 }, { "No": 3, "Bid": 35, "Low": 35, "Date": "2026-06-12T00:00:00", "High": 35, "Close": 35, "Offer": 36, "Value": 10220000, "Change": 0, "Volume": 292000, "persen": null, "Remarks": "--U-4100000000E614-E---------X", "Previous": 35, "BidVolume": 8000, "Frequency": 59, "OpenPrice": 0, "StockCode": "ABBA", "StockName": "Mahaka Media Tbk.", "FirstTrade": 0, "ForeignBuy": 0, "percentage": null, "ForeignSell": 0, "OfferVolume": 1020800, "ListedShares": 3935892857, "DelistingDate": "", "IDStockSummary": 4031675, "TradebleShares": 3935892857, "WeightForIndex": 1298844643, "IndexIndividual": 77.3, "NonRegularValue": 0, "NonRegularVolume": 0, "NonRegularFrequency": 0 }, { "No": 4, "Bid": 3220, "Low": 3100, "Date": "2026-06-12T00:00:00", "High": 3430, "Close": 3390, "Offer": 3390, "Value": 33689000, "Change": 60, "Volume": 10200, "persen": null, "Remarks": "--UO2105000000G412------------", "Previous": 3330, "BidVolume": 100, "Frequency": 35, "OpenPrice": 3430, "StockCode": "ABDA", "StockName": "Asuransi Bina Dana Arta Tbk.", "FirstTrade": 3340, "ForeignBuy": 0, "percentage": null, "ForeignSell": 0, "OfferVolume": 8600, "ListedShares": 620806680, "DelistingDate": "", "IDStockSummary": 4031676, "TradebleShares": 620806680, "WeightForIndex": 81325675, "IndexIndividual": 773.9, "NonRegularValue": 0, "NonRegularVolume": 0, "NonRegularFrequency": 0 }, { "No": 5, "Bid": 2400, "Low": 2300, "Date": "2026-06-12T00:00:00", "High": 2440, "Close": 2420, "Offer": 2420, "Value": 1755194000, "Change": 120, "Volume": 739300, "persen": null, "Remarks": "--MO1135000000A121------------", "Previous": 2300, "BidVolume": 33500, "Frequency": 486, "OpenPrice": 2300, "StockCode": "ABMM", "StockName": "ABM Investama Tbk.", "FirstTrade": 2350, "ForeignBuy": 135000, "percentage": null, "ForeignSell": 89800, "OfferVolume": 20700, "ListedShares": 2753165000, "DelistingDate": "", "IDStockSummary": 4031677, "TradebleShares": 2753165000, "WeightForIndex": 413800700, "IndexIndividual": 64.5, "NonRegularValue": 0, "NonRegularVolume": 0, "NonRegularFrequency": 0 }, { "No": 6, "Bid": 356, "Low": 352, "Date": "2026-06-12T00:00:00", "High": 360, "Close": 356, "Offer": 358, "Value": 11953271200, "Change": 4, "Volume": 33615200, "persen": null, "Remarks": "CDMO1835UK6000E743------------", "Previous": 352, "BidVolume": 1716000, "Frequency": 3109, "OpenPrice": 356, "StockCode": "ACES", "StockName": "Aspirasi Hidup Indonesia Tbk.", "FirstTrade": 356, "ForeignBuy": 3864700, "percentage": null, "ForeignSell": 7173800, "OfferVolume": 446300, "ListedShares": 17120389700, "DelistingDate": "", "IDStockSummary": 4031678, "TradebleShares": 17120389700, "WeightForIndex": 6846443841, "IndexIndividual": 434.1, "NonRegularValue": 0, "NonRegularVolume": 0, "NonRegularFrequency": 0 }, { "No": 7, "Bid": 61, "Low": 60, "Date": "2026-06-12T00:00:00", "High": 65, "Close": 61, "Offer": 62, "Value": 245539000, "Change": 1, "Volume": 3937300, "persen": null, "Remarks": "--UO2100000000E413------------", "Previous": 60, "BidVolume": 574400, "Frequency": 489, "OpenPrice": 60, "StockCode": "ACRO", "StockName": "Samcro Hyosung Adilestari Tbk.", "FirstTrade": 60, "ForeignBuy": 144900, "percentage": null, "ForeignSell": 84100, "OfferVolume": 500, "ListedShares": 3469345537, "DelistingDate": "", "IDStockSummary": 4031679, "TradebleShares": 749273042, "WeightForIndex": 729950301, "IndexIndividual": 56.5, "NonRegularValue": 0, "NonRegularVolume": 0, "NonRegularFrequency": 0 }, { "No": 8, "Bid": 71, "Low": 70, "Date": "2026-06-12T00:00:00", "High": 71, "Close": 71, "Offer": 72, "Value": 12333000, "Change": 1, "Volume": 173800, "persen": null, "Remarks": "--U-4105000000J211-E---------X", "Previous": 70, "BidVolume": 178500, "Frequency": 56, "OpenPrice": 0, "StockCode": "ACST", "StockName": "Acset Indonusa Tbk.", "FirstTrade": 0, "ForeignBuy": 0, "percentage": null, "ForeignSell": 0, "OfferVolume": 20600, "ListedShares": 17675160000, "DelistingDate": "", "IDStockSummary": 4031680, "TradebleShares": 17675160000, "WeightForIndex": 1560716628, "IndexIndividual": 5.2, "NonRegularValue": 0, "NonRegularVolume": 0, "NonRegularFrequency": 0 } ], "path": "TradingSummary/GetStockSummary", "provider": "idx", "recordsTotal": 959, "recordsFiltered": 959 } ``` --- ### Announcements Keterbukaan informasi seluruh emiten, terbaru dulu. Berbasis halaman: pakai `page`, bukan offset. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/announcements` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `page` | number | query | no | Halaman ke berapa (default 1). Upstream berbasis halaman, bukan offset | | `length` | number | query | no | Jumlah pengumuman per halaman (default 20, maks 100) | | `locale` | enum(id|en) | query | no | Bahasa pengumuman (default id) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/announcements?page=1&length=20&locale=id" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/announcements?page=1&length=20&locale=id", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/announcements?page=1&length=20&locale=id", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "id": "20260802163712-045a/DIR/SP-MGU/VII/2026_id-id", "code": "FOLK", "type": "STOCK", "title": "Penyampaian Bukti Iklan Informasi Laporan Keuangan Interim", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/f0a450fdce_6f5321d463.pdf", "fileName": "f0a450fdce_6f5321d463.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/2e469f5e3d_cd42b96455.pdf", "fileName": "2e469f5e3d_cd42b96455.pdf" } ], "publishedAt": "2026-08-02T16:37:12", "announcementNo": "045a/DIR/SP-MGU/VII/2026" }, { "id": "20260802072958-053/SLIS/VIII/2026_id-id", "code": "SLIS", "type": "STOCK", "title": "Penyampaian Bukti Iklan Informasi Laporan Keuangan Interim", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/977e0ae856_8adcd7e223.pdf", "fileName": "977e0ae856_8adcd7e223.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/eac4821036_79437e2dc4.pdf", "fileName": "eac4821036_79437e2dc4.pdf" } ], "publishedAt": "2026-08-02T07:29:58", "announcementNo": "053/SLIS/VIII/2026" }, { "id": "20260802025556-18/SAVITRA/VII/2026_id-id", "code": "VISI", "type": "STOCK", "title": "Penyampaian Laporan Keuangan Interim Yang Tidak Diaudit", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802030815-64113-0/FinancialStatement-2026-II-VISI.pdf", "fileName": "FinancialStatement-2026-II-VISI.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802030815-64113-0/2026TW2 VISI Laporan Keuangan.pdf", "fileName": "2026TW2 VISI Laporan Keuangan.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802030815-64113-0/FinancialStatement-2026-II-VISI.xlsx", "fileName": "FinancialStatement-2026-II-VISI.xlsx" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802030815-64113-0/I 1 Laporan Penilaian atas Properti VISI.pdf", "fileName": "I 1 Laporan Penilaian atas Properti VISI.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802030815-64113-0/I.2. Laporan Pendapat Kewajaran Short Form_FO VISI.pdf", "fileName": "I.2. Laporan Pendapat Kewajaran Short Form_FO VISI.pdf" } ], "publishedAt": "2026-08-02T02:55:56", "announcementNo": "18/SAVITRA/VII/2026" }, { "id": "20260802015716-JGI-_id-id", "code": "KAQI", "type": "STOCK", "title": "Penyampaian Laporan Keuangan Interim Yang Tidak Diaudit", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802021030-63811-0/FinancialStatement-2026-II-KAQI.pdf", "fileName": "FinancialStatement-2026-II-KAQI.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802021030-63811-0/FinancialStatement-2026-II-KAQI.xlsx", "fileName": "FinancialStatement-2026-II-KAQI.xlsx" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802021030-63811-0/inlineXBRL.zip", "fileName": "inlineXBRL.zip" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802021030-63811-0/instance.zip", "fileName": "instance.zip" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/20260802021030-63811-0/LK Triwulan 2 2026 - KAQI.pdf", "fileName": "LK Triwulan 2 2026 - KAQI.pdf" } ], "publishedAt": "2026-08-02T01:57:16", "announcementNo": "JGI-" }, { "id": "20260801160933-296/CORSEC-MPR/VIII/2026_id-id", "code": "MANG", "type": "STOCK", "title": "Penyampaian Bukti Iklan Informasi Laporan Keuangan Interim", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/0791062731_4460c064b2.pdf", "fileName": "0791062731_4460c064b2.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202608/31cce1a139_9bfa0daec2.pdf", "fileName": "31cce1a139_9bfa0daec2.pdf" } ], "publishedAt": "2026-08-01T16:09:33", "announcementNo": "296/CORSEC-MPR/VIII/2026" } ], "page": 1, "total": 249151, "length": 5, "locale": "id", "dataset": "announcements", "provider": "idx" } ``` --- ### Company Announcements Keterbukaan informasi satu emiten — riwayat aksi korporasi per kode saham, lengkap dengan lampiran PDF. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/company-announcements` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `code` | string | query | yes | Kode emiten, 4 huruf | | `length` | number | query | no | Jumlah pengumuman (default 20, maks 100) | | `start` | number | query | no | Offset baris (default 0) | | `locale` | enum(id|en) | query | no | Bahasa pengumuman (default id) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/company-announcements?code=BBCA&length=20&start=0&locale=id" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/company-announcements?code=BBCA&length=20&start=0&locale=id", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/company-announcements?code=BBCA&length=20&start=0&locale=id", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "code": "BBCA", "data": [ { "id": "20260731175614-0069/CVG/2026_id-id", "code": "BBCA", "type": "STOCK", "title": "Perubahan dalam pengendalian baik langsung maupun tidak langsung terhadap Emiten atau Perusahaan Publik", "formId": "11000", "subject": "Perubahan dalam pengendalian b", "createdAt": "2026-07-31T18:30:02", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/59c9d62180_96a02df66f.pdf", "fileName": "59c9d62180_96a02df66f.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/0b9ec31383_5b374efdf5.pdf", "fileName": "0b9ec31383_5b374efdf5.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/db24579a40_b573109a83.pdf", "fileName": "db24579a40_b573109a83.pdf" } ], "publishedAt": "2026-07-31T17:56:14", "announcementNo": "0069/CVG/2026" }, { "id": "20260728181934-0064/ESG/2026_id-id", "code": "BBCA", "type": "STOCK", "title": "Penyampaian Press Release terkait Informasi Ringkasan Kinerja Keuangan Kuartal II Tahun 2026 (unaudited) PT Bank Central Asia Tbk (\"Perseroan\")", "formId": "11000", "subject": "Penyampaian Press Release terk", "createdAt": "2026-07-28T18:30:02", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/9956e3a8ee_1a56c5de11.pdf", "fileName": "9956e3a8ee_1a56c5de11.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/7ce136cfc4_ec3dd6d7b3.pdf", "fileName": "7ce136cfc4_ec3dd6d7b3.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/baeecd07ff_9a67b3ef57.pdf", "fileName": "baeecd07ff_9a67b3ef57.pdf" } ], "publishedAt": "2026-07-28T18:19:34", "announcementNo": "0064/ESG/2026" }, { "id": "20260728162427-018/ATX/2026_id-id", "code": "BBCA", "type": "STOCK", "title": "Penyampaian Laporan Keuangan Interim Yang Tidak Diaudit", "formId": "11000", "createdAt": "2026-07-30T13:00:08", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/20260728163316-62836-0/FinancialStatement-2026-II-BBCA.pdf", "fileName": "FinancialStatement-2026-II-BBCA.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/20260728163316-62836-0/FinancialStatement-2026-II-BBCA.xlsx", "fileName": "FinancialStatement-2026-II-BBCA.xlsx" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/20260728163316-62836-0/inlineXBRL.zip", "fileName": "inlineXBRL.zip" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/20260728163316-62836-0/instance.zip", "fileName": "instance.zip" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/20260728163316-62836-0/Lapkeu BCA Jun26.pdf", "fileName": "Lapkeu BCA Jun26.pdf" } ], "publishedAt": "2026-07-28T16:24:27", "announcementNo": "018/ATX/2026" }, { "id": "20260710105147-00981/DIR/2026_id-id", "code": "BBCA", "type": "STOCK", "title": "Laporan Pengalihan Kembali Saham Hasil Buy Back", "formId": "11000", "subject": "Laporan Pengalihan Kembali Sah", "createdAt": "2026-07-10T11:00:02", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/cd76c6d811_d338ec9267.pdf", "fileName": "cd76c6d811_d338ec9267.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/7bb835fe3d_b356f2dad6.pdf", "fileName": "7bb835fe3d_b356f2dad6.pdf" } ], "publishedAt": "2026-07-10T10:51:47", "announcementNo": "00981/DIR/2026" }, { "id": "20260710105119-0981/DIR/2026_id-id", "code": "BBCA", "type": "STOCK", "title": "Laporan Pengalihan Kembali Saham Hasil Buy Back", "formId": "11000", "subject": "Laporan Pengalihan Kembali Sah", "createdAt": "2026-07-10T11:00:02", "attachments": [ { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/0cb6f181fc_a9f10cbeaf.pdf", "fileName": "0cb6f181fc_a9f10cbeaf.pdf" }, { "url": "https://www.idx.co.id/StaticData/NewsAndAnnouncement/ANNOUNCEMENTSTOCK/From_EREP/202607/55a68a68f2_56424250f3.pdf", "fileName": "55a68a68f2_56424250f3.pdf" } ], "publishedAt": "2026-07-10T10:51:19", "announcementNo": "0981/DIR/2026" } ], "start": 0, "total": 213, "length": 5, "locale": "id", "dataset": "company-announcements", "provider": "idx" } ``` --- ### Foreign Flow Beli/jual investor asing per saham per hari bursa. Satuannya LEMBAR SAHAM, bukan rupiah. Bisa diurutkan berdasar net, buy, sell, atau kode. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/foreign-flow` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `date` | string | query | no | Tanggal bursa (YYYYMMDD atau YYYY-MM-DD). Default: hari bursa terakhir | | `code` | string | query | no | Saring satu kode emiten saja (opsional) | | `sort` | enum(net|buy|sell|code) | query | no | Urutan: net (asing beli bersih terbesar), buy, sell, atau code. Default net | | `length` | number | query | no | Jumlah baris (default 50, maks 200) | | `start` | number | query | no | Offset baris (default 0) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/foreign-flow?date=2026-07-31&code=BBCA&sort=net&length=20&start=0" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/foreign-flow?date=2026-07-31&code=BBCA&sort=net&length=20&start=0", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/foreign-flow?date=2026-07-31&code=BBCA&sort=net&length=20&start=0", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "code": "IATA", "name": "Karya Pacific Energy Tbk.", "close": 76, "value": 116766853900, "volume": 1640828700, "foreignBuyShares": 243242400, "netForeignShares": 88222700, "foreignSellShares": 155019700 }, { "code": "MDIA", "name": "Intermedia Capital Tbk.", "close": 191, "value": 203053711800, "volume": 1136885000, "foreignBuyShares": 205545700, "netForeignShares": 81968300, "foreignSellShares": 123577400 }, { "code": "BBRI", "name": "Bank Rakyat Indonesia (Persero) Tbk.", "close": 3040, "value": 684938094000, "volume": 226634400, "foreignBuyShares": 153647100, "netForeignShares": 76995400, "foreignSellShares": 76651700 }, { "code": "DMAS", "name": "Puradelta Lestari Tbk.", "close": 148, "value": 23774851200, "volume": 161620100, "foreignBuyShares": 80222700, "netForeignShares": 72178500, "foreignSellShares": 8044200 }, { "code": "PACK", "name": "Abadi Nusantara Hijau Investama Tbk.", "close": 248, "value": 66056582800, "volume": 275994200, "foreignBuyShares": 83806000, "netForeignShares": 51360600, "foreignSellShares": 32445400 } ], "date": "2026-07-31T00:00:00", "sort": "net", "unit": "shares", "start": 0, "total": 963, "length": 5, "dataset": "foreign-flow", "provider": "idx" } ``` --- ### Margin Summary Ringkasan perdagangan efek margin. Terbit per periode margin, bukan harian — perhatikan tanggal pada respons. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/margin-summary` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `date` | string | query | no | Tanggal periode (YYYYMMDD atau YYYY-MM-DD). Default: periode terakhir | | `length` | number | query | no | Jumlah baris (default 50, maks 300) | | `start` | number | query | no | Offset baris (default 0) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/margin-summary?date=2026-07-14&length=50&start=0" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/margin-summary?date=2026-07-14&length=50&start=0", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/margin-summary?date=2026-07-14&length=50&start=0", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "low": 8350, "code": "AADI", "high": 8500, "close": 8400, "value": 4010085000, "change": 25, "volume": 474200, "frequency": 178 }, { "low": 6300, "code": "AALI", "high": 6375, "close": 6300, "value": 247640000, "change": 0, "volume": 39000, "frequency": 62 }, { "low": 2350, "code": "ABMM", "high": 2420, "close": 2370, "value": 17927000, "change": 60, "volume": 7600, "frequency": 12 }, { "low": 344, "code": "ACES", "high": 350, "close": 346, "value": 402922600, "change": -4, "volume": 1165000, "frequency": 101 }, { "low": 158, "code": "ADHI", "high": 163, "close": 161, "value": 30115900, "change": 3, "volume": 187300, "frequency": 37 } ], "date": "2026-07-14T00:00:00", "start": 0, "total": 220, "length": 5, "dataset": "margin-summary", "provider": "idx" } ``` --- ### Ownership Files Indeks publikasi Data Kepemilikan Saham dari KSEI: tanggal, kategori, dan tautan berkas. Berisi tautan, bukan isi berkasnya. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:idx/ownership-files` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `category` | enum(lima-persen|satu-persen|klasifikasi|tipe) | query | no | Saring satu kategori. Default: semua kategori | | `length` | number | query | no | Jumlah berkas (default 50, maks 200) | | `start` | number | query | no | Offset baris (default 0) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:idx/ownership-files?category=lima-persen&length=30&start=0" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:idx/ownership-files?category=lima-persen&length=30&start=0", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:idx/ownership-files?category=lima-persen&length=30&start=0", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "data": [ { "url": "https://www.idx.co.id/Media/cqiex5iv/peng-2026-07-30-00043-lima-persen.xlsx", "category": "lima-persen", "fileName": "peng-2026-07-30-00043-lima-persen.xlsx", "publishedAt": "2026-07-30", "categoryLabel": "Pemegang saham di atas 5%" }, { "url": "https://www.idx.co.id/Media/uznhesu0/peng-2026-07-29-00042-lima-persen.xlsx", "category": "lima-persen", "fileName": "peng-2026-07-29-00042-lima-persen.xlsx", "publishedAt": "2026-07-29", "categoryLabel": "Pemegang saham di atas 5%" }, { "url": "https://www.idx.co.id/Media/z1ymz1fw/peng-2026-07-28-00041-lima-persen.xlsx", "category": "lima-persen", "fileName": "peng-2026-07-28-00041-lima-persen.xlsx", "publishedAt": "2026-07-28", "categoryLabel": "Pemegang saham di atas 5%" }, { "url": "https://www.idx.co.id/Media/myaod41g/peng-2026-07-27-00040-lima-persen.xlsx", "category": "lima-persen", "fileName": "peng-2026-07-27-00040-lima-persen.xlsx", "publishedAt": "2026-07-27", "categoryLabel": "Pemegang saham di atas 5%" }, { "url": "https://www.idx.co.id/Media/oiyfshho/peng-2026-07-24-00039-lima-persen.xlsx", "category": "lima-persen", "fileName": "peng-2026-07-24-00039-lima-persen.xlsx", "publishedAt": "2026-07-24", "categoryLabel": "Pemegang saham di atas 5%" } ], "start": 0, "total": 61, "length": 5, "source": "KSEI", "dataset": "ownership-files", "provider": "idx" } ``` --- ## Indodax **Category:** finance · **Slug:** `indodax` **Detail page:** https://zpi.web.id/api/finance/indodax Indonesia's crypto exchange — prices in rupiah from the venue that actually trades them, with order book and tape. **Tags:** crypto, indonesia, idr, exchange, orderbook ### Ticker Price and 24h volume for one pair. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:indodax/ticker` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `pair` | string | query | yes | Trading pair. Accepts btc_idr, btcidr or BTC/IDR. Quote currency must be IDR or USDT | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:indodax/ticker?pair=btc_idr" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:indodax/ticker?pair=btc_idr", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:indodax/ticker?pair=btc_idr", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "buy": 1130001000, "low": 1120402000, "base": "BTC", "high": 1134103000, "last": 1132299000, "pair": "btc_idr", "sell": 1132299000, "quote": "IDR", "exchange": "indodax", "serverTime": 1785635619, "volumeBase": 9.10396787, "volumeQuote": 10285330671 } ``` --- ### Tickers Every traded pair in one call, filterable. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:indodax/tickers` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `quote` | enum(all|idr|usdt) | query | no | Restrict to pairs quoted in this currency. Default all | | `search` | string | query | no | Filter by base symbol or coin name | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:indodax/tickers?quote=idr&search=btc" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:indodax/tickers?quote=idr&search=btc", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:indodax/tickers?quote=idr&search=btc", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 7, "items": [ { "buy": 1130001000, "low": 1120402000, "base": "BTC", "high": 1134103000, "last": 1132299000, "name": "Bitcoin", "pair": "btc_idr", "sell": 1132299000, "quote": "IDR", "serverTime": 1785635622, "volumeBase": 9.10396787, "volumeQuote": 10285330671 }, { "buy": 1424, "low": 1390, "base": "ARB", "high": 1433, "last": 1433, "name": "Arbitrum", "pair": "arb_idr", "sell": 1434, "quote": "IDR", "serverTime": 1785635622, "volumeBase": 56217.30209444, "volumeQuote": 79597914 }, { "buy": 3712000, "low": 3712000, "base": "BCH", "high": 3849000, "last": 3739000, "name": "Bitcoin Cash", "pair": "bch_idr", "sell": 3735000, "quote": "IDR", "serverTime": 1785635622, "volumeBase": 7.14706105, "volumeQuote": 26663541 }, { "buy": 30112, "low": 28692, "base": "BGB", "high": 32000, "last": 28697, "name": "Bitget Token", "pair": "bgb_idr", "sell": 31589, "quote": "IDR", "serverTime": 1785635622, "volumeBase": 221.97298938, "volumeQuote": 6778437 }, { "buy": 1, "low": 1, "base": "WTEC", "high": 2, "last": 1, "name": "World Trade Exhibition Center", "pair": "wtec_idr", "sell": 2, "quote": "IDR", "serverTime": 1785635622, "volumeBase": 3677019.87385714, "volumeQuote": 6498208 }, { "buy": 222000, "low": 221000, "base": "BSV", "high": 230000, "last": 221000, "name": "Bitcoin SV", "pair": "bsv_idr", "sell": 230000, "quote": "IDR", "serverTime": 1785635622, "volumeBase": 3.23899177, "volumeQuote": 728009 }, { "buy": 1130787074, "low": 1130787023, "base": "WBTC", "high": 1174910999, "last": 1130787073, "name": "Wrapped Bitcoin", "pair": "wbtc_idr", "sell": 1167673999, "quote": "IDR", "serverTime": 1785635622, "volumeBase": 0.00031826, "volumeQuote": 363220 } ], "quote": "idr", "exchange": "indodax" } ``` --- ### Order book Resting bids and asks for one pair. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:indodax/depth` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `pair` | string | query | yes | Trading pair. Accepts btc_idr, btcidr or BTC/IDR. Quote currency must be IDR or USDT | | `limit` | number | query | no | Levels per side. Default all levels returned upstream, max 200 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:indodax/depth?pair=btc_idr&limit=50" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:indodax/depth?pair=btc_idr&limit=50", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:indodax/depth?pair=btc_idr&limit=50", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "asks": [ { "price": 1132299000, "amount": 0.79041731 }, { "price": 1132300000, "amount": 1.01178843 }, { "price": 1132301000, "amount": 0.01173894 }, { "price": 1133192000, "amount": 0.0000486 }, { "price": 1133196000, "amount": 0.01646691 } ], "base": "BTC", "bids": [ { "price": 1130001000, "amount": 0.39559325 }, { "price": 1130000000, "amount": 0.09472588 }, { "price": 1129966000, "amount": 0.63653 }, { "price": 1129474000, "amount": 0.10193588 }, { "price": 1129017000, "amount": 0.02878554 } ], "pair": "btc_idr", "quote": "IDR", "spread": 2298000, "askCount": 5, "bidCount": 5, "exchange": "indodax" } ``` --- ### Trades The recently executed tape for one pair. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:indodax/trades` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `pair` | string | query | yes | Trading pair. Accepts btc_idr, btcidr or BTC/IDR. Quote currency must be IDR or USDT | | `limit` | number | query | no | Number of recent trades. Default 50, max 200 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:indodax/trades?pair=btc_idr&limit=50" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:indodax/trades?pair=btc_idr&limit=50", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:indodax/trades?pair=btc_idr&limit=50", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "base": "BTC", "pair": "btc_idr", "count": 5, "items": [ { "side": "buy", "price": 1132299000, "amount": 0.00005778, "tradeId": "72057594145352606", "tradedAt": 1785635604 }, { "side": "buy", "price": 1132299000, "amount": 0.00008925, "tradeId": "72057594145352596", "tradedAt": 1785635595 }, { "side": "sell", "price": 1130001000, "amount": 0.00045589, "tradeId": "72057594145352584", "tradedAt": 1785635584 }, { "side": "buy", "price": 1132299000, "amount": 0.00109906, "tradeId": "72057594145352577", "tradedAt": 1785635581 }, { "side": "sell", "price": 1130000000, "amount": 0.00032057, "tradeId": "72057594145352535", "tradedAt": 1785635545 } ], "quote": "IDR", "exchange": "indodax" } ``` --- ### Pairs Tradable pairs with fees, precision and market status. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:indodax/pairs` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `quote` | enum(all|idr|usdt) | query | no | Restrict to pairs quoted in this currency. Default all | | `search` | string | query | no | Filter by base symbol | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:indodax/pairs?quote=idr&search=btc" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:indodax/pairs?quote=idr&search=btc", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:indodax/pairs?quote=idr&search=btc", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 2, "items": [ { "base": "BTC", "logo": "https://indodax.com/v2/logo/svg/color/btc.svg", "pair": "btc_idr", "quote": "IDR", "suspended": false, "coingeckoId": "bitcoin", "compactPair": "btcidr", "description": "BTC/IDR", "minOrderBase": 0.00000885, "minOrderQuote": 10000, "pricePrecision": 1000, "coinmarketcapId": 1, "depositDisabled": false, "makerFeePercent": 0.1, "takerFeePercent": 0.2, "volumePrecision": 0, "underMaintenance": false }, { "base": "WBTC", "logo": "https://indodax.com/v2/logo/svg/color/wbtc.svg", "pair": "wbtc_idr", "quote": "IDR", "suspended": false, "coingeckoId": "wrapped-bitcoin", "compactPair": "wbtcidr", "description": "WBTC/IDR", "minOrderBase": 0.00000884, "minOrderQuote": 10000, "pricePrecision": 1, "coinmarketcapId": 3717, "depositDisabled": false, "makerFeePercent": 0.1, "takerFeePercent": 0.2, "volumePrecision": 0, "underMaintenance": false } ], "quote": "idr", "exchange": "indodax" } ``` --- ## Investing **Category:** finance · **Slug:** `investing` **Detail page:** https://zpi.web.id/api/finance/investing Data pasar finansial lengkap — quote saham/forex/crypto/komoditas, teknikal, OHLCV historis, berita, analisis, dan kalender ekonomi. **Tags:** finance, stocks, forex, crypto, market, quotes, economic-calendar ### Search Cari instrumen (saham/forex/crypto/komoditas) + berita. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:investing/search` - **Cache TTL:** 120s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | yes | Kata kunci pencarian instrumen/berita | | `type` | enum(all|quotes|news|articles) | query | no | Bagian hasil yang dikembalikan (default all) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:investing/search?q=apple&type=all" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:investing/search?q=apple&type=all", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:investing/search?q=apple&type=all", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "news": [ { "id": 4741015, "url": "https://www.investing.com/news/stock-market-news/exclusivetatas-iphone-parts-factory-contaminated-farmland-water-india-pollution-body-alleges-4741015", "image": "https://i-invdn-com.investing.com/trkd-images/LYNXMPEM5C08U_L.jpg", "title": "Exclusive-Tata’s iPhone parts factory contaminated farmland water, India pollution body alleges" }, { "id": 4741023, "url": "https://www.investing.com/news/stock-market-news/mag-7-mangos-spacex-forces-name-rethink-on-wall-streets-techstock-moniker-4741023", "image": "https://i-invdn-com.investing.com/trkd-images/LYNXMPEM5C09W_L.jpg", "title": "Mag 7? MANGOS? SpaceX forces name rethink on Wall Street’s tech-stock moniker" }, { "id": 4739346, "url": "https://www.investing.com/news/economy-news/hedge-funds-sold-broader-tech-ahead-of-spacex-ipo-jpmorgan-data-shows-4739346", "image": "https://i-invdn-com.investing.com/trkd-images/LYNXMPEM5B0QU_L.jpg", "title": "Hedge funds sold broader tech ahead of SpaceX IPO, JPMorgan data shows" }, { "id": 4739803, "url": "https://www.investing.com/news/company-news/healthcare-triangle-closes-36m-convertible-note-offering-93CH-4739803", "image": "https://i-invdn-com.investing.com/news/LYNXNPEB6R0AQ_S.jpg", "title": "Healthcare Triangle closes $3.6M convertible note offering" }, { "id": 4741019, "url": "https://www.investing.com/news/company-news/tata-iphone-parts-plant-warned-over-wastewater-pollution--reuters-4741019", "image": "https://i-invdn-com.investing.com/news/moved_small-LYNXMPEK8O0ML_L.jpg", "title": "Tata iPhone parts plant warned over wastewater pollution - Reuters" } ], "query": "apple", "quotes": [ { "url": "https://www.investing.com/equities/apple-computer-inc", "name": "Apple Inc", "type": "Stock - NASDAQ", "pairId": 6408, "symbol": "AAPL", "country": "USA", "exchange": "NASDAQ" }, { "url": "https://www.investing.com/crypto/bunny/apple-usd", "name": "dog with apple in mouth US Dollar", "type": "FX - XT.COM", "pairId": 1225435, "symbol": "APPLE/USD", "country": "dog_with_apple_in_mouth", "exchange": "XT.COM" }, { "url": "https://www.investing.com/equities/apple-computer-inc?cid=986251", "name": "Apple Inc", "type": "Stock - Switzerland", "pairId": 986251, "symbol": "AAPLUSD", "country": "Switzerland", "exchange": "Switzerland" }, { "url": "https://www.investing.com/equities/apple-computer-inc?cid=963008", "name": "Apple Inc", "type": "Stock - Xetra", "pairId": 963008, "symbol": "AAPL", "country": "Germany", "exchange": "Xetra" }, { "url": "https://www.investing.com/equities/apple-computer-inc?cid=993325", "name": "Apple Inc", "type": "Stock - Switzerland", "pairId": 993325, "symbol": "AAPL", "country": "Switzerland", "exchange": "Switzerland" }, { "url": "https://www.investing.com/equities/apple-computer-inc?cid=1202722", "name": "Apple Inc", "type": "Stock - London", "pairId": 1202722, "symbol": "0R2V", "country": "UK", "exchange": "London" }, { "url": "https://www.investing.com/equities/apple-hospitality-reit-inc", "name": "Apple Hospitality REIT Inc", "type": "Stock - NYSE", "pairId": 959642, "symbol": "APLE", "country": "USA", "exchange": "NYSE" }, { "url": "https://www.investing.com/etfs/aapy", "name": "Kurv Yield Premium Strategy Apple ETF", "type": "ETF - NYSE", "pairId": 1215129, "symbol": "AAPY", "country": "USA", "exchange": "NYSE" } ], "articles": [ { "id": 200182160, "url": "https://www.investing.com/analysis/aapl-(apr-11)-200182160", "title": "Apple Consolidates" }, { "id": 200282090, "url": "https://www.investing.com/analysis/apple-confusion-200282090", "title": "Apple Confusion" }, { "id": 200412540, "url": "https://www.investing.com/analysis/adams-apple-200412540", "title": "Adam’s Apple" }, { "id": 200367514, "url": "https://www.investing.com/analysis/apple-technicals-200367514", "title": "Apple Technicals" }, { "id": 260813, "url": "https://www.investing.com/analysis/rotten-apple-260813", "title": "Rotten Apple?" } ] } ``` --- ### Quote Quote real-time instrumen (harga, perubahan, range, PE, EPS, dividen). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:investing/quote` - **Cache TTL:** 30s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | yes | Simbol atau nama instrumen (saham, index, crypto, forex, komoditas). Contoh: AAPL, bitcoin, EUR/USD | | `pairId` | number | query | no | Pair ID internal langsung (override pencarian). Kalau diisi, parameter `query` tidak dipakai untuk resolve. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:investing/quote?query=AAPL&pairId=6408" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:investing/quote?query=AAPL&pairId=6408", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:investing/quote?query=AAPL&pairId=6408", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "eps": 8.2491, "low": 289.62, "url": "https://www.investing.com/equities/apple-computer-inc", "beta": 1.06, "high": 297.14, "last": 291.13, "name": "Apple Inc", "open": 296.03, "type": "Stock - NASDAQ", "change": -4.5, "pairId": 6408, "symbol": "AAPL", "volume": 38784789, "peRatio": 35.22, "revenue": "451.44B", "dayRange": "289.62 - 297.14", "dividend": 1.08, "exchange": "NASDAQ", "provider": "investing", "avgVolume": 46507492, "marketCap": "4.28T", "week52Low": 195.07, "week52High": 317.4, "week52Range": "195.07 - 317.4", "changePercent": -1.52, "extendedHours": "After", "extendedPrice": 291.58, "lastTimestamp": 1781294399, "oneYearReturn": "48.2%", "previousClose": 295.63, "exchangeIsOpen": false, "extendedChange": 0.45, "nextEarningsDate": "2026-07-30", "technicalSummary": "Strong Sell", "dividendYieldPercent": 0.37 } ``` --- ### Technical Ringkasan analisis teknikal (MA, oscillator, pivot) per timeframe. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:investing/technical` - **Cache TTL:** 120s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | yes | Symbol / company name to resolve (stock, index, crypto, forex, commodity). | | `pairId` | number | query | no | Optional numeric pair id override. Skips symbol resolution when provided. | | `timeframe` | enum(5m|15m|1h|1d) | query | no | Analysis timeframe. One of: 5m, 15m, 1h, 1d. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:investing/technical?query=AAPL&pairId=6408&timeframe=1d" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:investing/technical?query=AAPL&pairId=6408&timeframe=1d", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:investing/technical?query=AAPL&pairId=6408&timeframe=1d", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "name": "Apple Inc", "pairId": 6408, "symbol": "AAPL", "summary": "SELL", "timeframe": "1d", "updatedAt": 1781294702, "indicators": [ { "name": "RSI(14)", "value": 44.049, "action": "Sell" }, { "name": "STOCH(9,6)", "value": 29.697, "action": "Sell" }, { "name": "STOCHRSI(14)", "value": 3.783, "action": "Oversold" }, { "name": "MACD(12,26)", "value": 2.68, "action": "Buy" }, { "name": "ATR(14)", "value": 7.5725, "action": "High Volatility" }, { "name": "ADX(14)", "value": 39.584, "action": "Sell" }, { "name": "CCI(14)", "value": -138.3806, "action": "Sell" }, { "name": "Highs/Lows(14)", "value": -10.8686, "action": "Sell" } ], "oscillators": { "buy": 1, "sell": 8, "signal": "red", "neutral": 2, "summary": "Strong Sell" }, "pivotPoints": [ { "level": "R3", "classic": 305.96, "fibonacci": 301.48 }, { "level": "R2", "classic": 301.48, "fibonacci": 298.65 }, { "level": "R1", "classic": 298.55, "fibonacci": 296.9 }, { "level": "Pivot Point", "classic": 294.07, "fibonacci": 294.07 }, { "level": "S1", "classic": 291.14, "fibonacci": 291.24 }, { "level": "S2", "classic": 286.66, "fibonacci": 289.49 }, { "level": "S3", "classic": 283.73, "fibonacci": 286.66 } ], "summaryText": "Sell", "movingAverages": { "buy": 6, "sell": 6, "signal": "black", "summary": "Neutral" }, "movingAverageDetails": [ { "name": "MA5", "simple": 294.09, "exponential": 295.69, "simpleAction": "Sell", "exponentialAction": "Sell" }, { "name": "MA10", "simple": 302.08, "exponential": 299.05, "simpleAction": "Sell", "exponentialAction": "Sell" }, { "name": "MA20", "simple": 303.88, "exponential": 298.84, "simpleAction": "Sell", "exponentialAction": "Sell" }, { "name": "MA50", "simple": 285.49, "exponential": 289.41, "simpleAction": "Buy", "exponentialAction": "Buy" }, { "name": "MA100", "simple": 272.84, "exponential": 278.98, "simpleAction": "Buy", "exponentialAction": "Buy" }, { "name": "MA200", "simple": 266.87, "exponential": 266.44, "simpleAction": "Buy", "exponentialAction": "Buy" } ] } ``` --- ### Historical Data OHLCV historis (interval & periode fleksibel). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:investing/historical` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | yes | Symbol or name of the instrument to resolve (stock ticker, index, commodity, FX pair, crypto). Resolved to an internal id. | | `pairId` | number | query | no | Optional internal instrument id override. When provided, symbol resolution is skipped. | | `interval` | enum(1m|5m|1h|1d|1w|1mo) | query | no | Candle interval: 1m, 5m, 1h (intraday) or 1d, 1w, 1mo. Default 1d | | `period` | enum(1d|1w|1mo|1y|5y|max) | query | no | Lookback range: 1d, 1w, 1mo, 1y, 5y, max. Default 1mo | | `pointscount` | number | query | no | Max number of candles to request. Default 120 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:investing/historical?query=AAPL&pairId=6408&interval=1d&period=1mo&pointscount=120" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:investing/historical?query=AAPL&pairId=6408&interval=1d&period=1mo&pointscount=120", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:investing/historical?query=AAPL&pairId=6408&interval=1d&period=1mo&pointscount=120", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 22, "pairId": 6408, "period": "1mo", "symbol": "AAPL", "candles": [ { "low": 293.5, "date": "2026-05-13T00:00:00.000Z", "high": 300.92, "open": 293.5, "close": 298.87, "volume": 52684260, "timestamp": 1778630400000 }, { "low": 295.38, "date": "2026-05-14T00:00:00.000Z", "high": 300.45, "open": 299.82, "close": 298.21, "volume": 35324920, "timestamp": 1778716800000 }, { "low": 296.52, "date": "2026-05-15T00:00:00.000Z", "high": 303.2, "open": 297.9, "close": 300.23, "volume": 54862836, "timestamp": 1778803200000 }, { "low": 294.91, "date": "2026-05-18T00:00:00.000Z", "high": 300.66, "open": 300.24, "close": 297.84, "volume": 34482960, "timestamp": 1779062400000 }, { "low": 296.35, "date": "2026-05-19T00:00:00.000Z", "high": 300.51, "open": 296.97, "close": 298.97, "volume": 42243560, "timestamp": 1779148800000 }, { "low": 298.08, "date": "2026-05-20T00:00:00.000Z", "high": 302.8, "open": 298.18, "close": 302.25, "volume": 38229844, "timestamp": 1779235200000 }, { "low": 300.4, "date": "2026-05-21T00:00:00.000Z", "high": 305.54, "open": 301.05, "close": 304.99, "volume": 42965128, "timestamp": 1779321600000 }, { "low": 305.84, "date": "2026-05-22T00:00:00.000Z", "high": 311.4, "open": 306.12, "close": 308.82, "volume": 43670224, "timestamp": 1779408000000 } ], "interval": "1d" } ``` --- ### News Berita pasar terbaru / per-instrumen. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:investing/news` - **Cache TTL:** 180s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | no | Simbol/kata kunci instrumen. Kosongkan untuk berita terbaru umum. | | `page` | number | query | no | Nomor halaman (default 1) | | `category` | string | query | no | Filter kategori berita (opsional, hanya untuk feed umum) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:investing/news?query=apple&page=1&category=economy" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:investing/news?query=apple&page=1&category=economy", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:investing/news?query=apple&page=1&category=economy", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 20, "items": [ { "id": 4741066, "url": "https://www.investing.com/news/economy-news/uk-intercepts-russian-oil-tanker-linked-to-shadow-fleet-in-english-channel-4741066", "image": "https://i-invdn-com.investing.com/news/Shipping_800x533_L_1618572654.jpg", "title": "UK intercepts Russian oil tanker linked to shadow fleet in English Channel", "source": "Investing.com", "excerpt": "Investing.com -- British forces intercepted a Russian shadow fleet oil tanker attempting to transit the English Channel on Sunday,...", "category": "ECONOMY", "publishedAt": "2026-06-14T07:05:22.000Z" }, { "id": 4741065, "url": "https://www.investing.com/news/economy-news/starmer-takaichi-to-discuss-fighter-jet-project-as-uk-funding-questions-persist-4741065", "image": "https://i-invdn-com.investing.com/news/moved_LYNXMPEK8O0VV_L.jpg", "title": "Starmer, Takaichi to discuss fighter jet project as UK funding questions persist", "source": "Investing.com", "excerpt": "Investing.com -- British Prime Minister Keir Starmer is set to meet Japanese Prime Minister Sanae Takaichi on Sunday as...", "category": "ECONOMY", "publishedAt": "2026-06-14T06:33:08.000Z" }, { "id": 4741064, "url": "https://www.investing.com/news/economy-news/south-korea-household-loans-surge-as-investors-pile-into-stocks-4741064", "image": "https://i-invdn-com.investing.com/news/SouthKorea_800x533_L_1606575512.jpg", "title": "South Korea household loans surge as investors pile into stocks", "source": "Investing.com", "excerpt": "Investing.com -- Citi said a sharp rally in South Korean equities is contributing to rising financial stability risks as household...", "category": "ECONOMY", "publishedAt": "2026-06-14T05:59:41.000Z" }, { "id": 4741063, "url": "https://www.investing.com/news/economy-news/rubio-defends-hormuz-blockade-after-india-protests-deaths-of-sailors-4741063", "image": "https://i-invdn-com.investing.com/news/moved_LYNXNPEL3912L_L.jpg", "title": "Rubio defends Hormuz blockade after India protests deaths of sailors", "source": "Investing.com", "excerpt": "Investing.com -- U.S. Secretary of State Marco Rubio defended Washington’s actions in the Strait of Hormuz after India protested...", "category": "ECONOMY", "publishedAt": "2026-06-14T05:33:40.000Z" }, { "id": 4741062, "url": "https://www.investing.com/news/economy-news/japan-moves-to-secure-rare-earth-supplies-with-greenland-visit--nikkei-4741062", "image": "https://i-invdn-com.investing.com/news/LYNXMPEB430M1_L.jpg", "title": "Japan moves to secure rare earth supplies with Greenland visit - Nikkei", "source": "Investing.com", "excerpt": "Investing.com -- Japan is preparing to send a delegation to Greenland this summer to evaluate possible rare earth extraction,...", "category": "ECONOMY", "publishedAt": "2026-06-14T05:06:10.000Z" }, { "id": 4741061, "url": "https://www.investing.com/news/economy-news/trump-says-iran-deal-could-be-signed-sunday-tehran-disputes-timing-4741061", "image": "https://i-invdn-com.investing.com/news/moved_LYNXMPEM3J0V1_1200_L.jpg", "title": "Trump says Iran deal could be signed Sunday, Tehran disputes timing", "source": "Investing.com", "excerpt": "Investing.com -- U.S. President Donald Trump said an agreement with Iran to halt the war could be signed as early as Sunday,...", "category": "ECONOMY", "publishedAt": "2026-06-14T04:10:00.000Z" }, { "id": 4741057, "url": "https://www.investing.com/news/economy-news/dollar-likely-to-find-support-as-long-as-strait-remains-mostly-closed-4741057", "image": "https://i-invdn-com.investing.com/news/LYNXNPEB960O0_L.jpg", "title": "Dollar likely to find support as long as Strait remains mostly closed", "source": "Investing.com", "excerpt": "Investing.com -- The U.S. dollar is likely to remain supported in the near term despite a recent pullback in oil prices, according...", "category": "ECONOMY", "publishedAt": "2026-06-14T03:01:52.000Z" }, { "id": 4741050, "url": "https://www.investing.com/news/economy-news/uk-japan-to-deepen-ties-with-18-billion-investment-agreement-4741050", "image": "https://i-invdn-com.investing.com/news/LYNXNPEC501G5_L.jpg", "title": "UK, Japan to deepen ties with £18 billion investment agreement", "source": "Investing.com", "excerpt": "Investing.com -- The UK and Japan are expected to sign an £18 billion ($24.1 billion) investment agreement focused on clean...", "category": "ECONOMY", "publishedAt": "2026-06-14T00:06:36.000Z" } ], "hasMore": true, "nextPage": 2 } ``` --- ### Article Isi artikel berita lengkap (input id dari news). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:investing/article` - **Cache TTL:** 1800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `id` | unknown | query | no | ID artikel berita. Wajib jika `url` kosong. | | `url` | string | query | no | URL artikel penuh (alternatif `id`). | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:investing/article?id=4741065&url=https%3A%2F%2Fwww.investing.com%2Fnews%2Feconomy-news%2Fsome-article-4741065" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:investing/article?id=4741065&url=https%3A%2F%2Fwww.investing.com%2Fnews%2Feconomy-news%2Fsome-article-4741065", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:investing/article?id=4741065&url=https%3A%2F%2Fwww.investing.com%2Fnews%2Feconomy-news%2Fsome-article-4741065", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "id": 4741066, "url": "https://www.investing.com/news/economy-news/uk-intercepts-russian-oil-tanker-linked-to-shadow-fleet-in-english-channel-4741066", "image": "https://i-invdn-com.investing.com/news/Shipping_800x533_L_1618572654.jpg", "title": "UK intercepts Russian oil tanker linked to shadow fleet in English Channel", "author": "Simon Mugo", "source": "Investing.com", "authorUrl": "https://www.investing.com/members/contributors/277000282", "updatedAt": "2026-06-14T07:05:22Z", "relatedIds": [ 8833 ], "contentText": "Investing.com -- British forces intercepted a Russian shadow fleet oil tanker attempting to transit the English Channel on Sunday, according to a statement from the UK Ministry of Defence.\n\nTrack geopolitical developments and energy markets with InvestingPro\n\nThe vessel, identified as the SMYRTOS, was boarded by Royal Marine Commandos and specially trained officers from the National Crime Agency.\n\nBritish authorities said the tanker has been detained and will remain under monitoring off the country’s southern coast while investigations continue.\n\nThe Ministry of Defence said the enforcement action was carried out within British territorial waters and in accordance with domestic and international law.\n\nNo details were immediately provided about the vessel’s cargo, destination, or ownership.\n\nThe interception marks the latest effort by Western governments to crack down on Russia’s so-called shadow fleet, a network of tankers used to transport Russian oil outside the scope of Western sanctions and price cap measures.\n\nThe fleet has become an increasing focus of sanctions enforcement since the start of the war in Ukraine, with European governments stepping up scrutiny of shipping activity in key maritime routes.\n\nBritish Prime Minister Keir Starmer said he personally authorized the operation.\n\n\"This successful operation delivers yet another blow to Russia and reminds those fueling Putin’s war in Ukraine that we will not let them hide,\" Starmer said in a post on X.\n\nThe English Channel is one of the world’s busiest shipping lanes and a critical route for energy and commercial trade between Europe and global markets.\n\nThe incident comes as Western nations continue to tighten enforcement measures aimed at restricting Russia’s ability to generate revenue from oil exports while maintaining support for Ukraine.", "publishedAt": "2026-06-14T07:05:22Z" } ``` --- ### Analysis Artikel analisis/opini per instrumen. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:investing/analysis` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | yes | Simbol/nama instrumen (mis. AAPL, Tesla) | | `pairId` | number | query | no | Override pair ID internal (lewati resolusi simbol) | | `page` | number | query | no | Nomor halaman (default 1) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:investing/analysis?query=AAPL&pairId=1&page=1" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:investing/analysis?query=AAPL&pairId=1&page=1", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:investing/analysis?query=AAPL&pairId=1&page=1", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 10, "items": [ { "url": "http://www.investing.com/analysis/spacex-guide-everything-you-need-to-know-about-the-biggest-ipo-in-history-200682043", "image": "https://d1-invdn-com.investing.com/company_logo/85038e5c6dc77e60512aa6c2ea4bd961.jpg", "title": "SpaceX Guide: Everything You Need to Know About the Biggest IPO in History", "author": "Thomas Monteiro", "excerpt": "SpaceX begins trading on Nasdaq today under the ticker SPCX, targeting a valuation of approximately $1.75 trillion and seeking to...", "articleId": 200682043, "publishedAt": "2026-06-12T18:02:17.000Z" }, { "url": "http://www.investing.com/analysis/week-ahead-central-bank-decisions-us-retail-sales-and-japan-inflation-in-focus-200682072", "image": "https://d1-invdn-com.investing.com/company_logo/202cdce0d0cd64f29fca913a2c714f3a.jpg", "title": "Week Ahead: Central Bank Decisions, US Retail Sales, and Japan Inflation in Focus", "author": "Ryan Anderson", "excerpt": "\nMON: G7 Summit (15-17 Jun), German Wholesale Prices (May), Indian WPI (May), EZ Industrial Production (Apr), US Industrial...", "articleId": 200682072, "publishedAt": "2026-06-12T14:57:49.000Z" }, { "url": "http://www.investing.com/analysis/the-largest-public-offering-in-history-spacex-ipo-comes-with-a-stratospheric-risk-200681913", "image": "https://d1-invdn-com.investing.com/company_logo/54f1b84dfaaf7a6d5075200b13f21246.jpg", "title": "The Largest Public Offering in History: SpaceX IPO Comes With a Stratospheric Risk", "author": "Arturo Gómez Gutiérrez", "excerpt": "When Saudi Aramco listed on the Tadawul exchange in December 2019, it set a benchmark that the financial world assumed would stand...", "articleId": 200681913, "publishedAt": "2026-06-10T18:36:50.000Z" }, { "url": "http://www.investing.com/analysis/apples-siri-ai-was-finally-announced--so-why-is-the-stock-tanking-200681818", "image": "https://d1-invdn-com.investing.com/company_logo/2ca976c96d700a6557ba4064971fc3ca.jpg", "title": "Apple’s Siri AI Was Finally Announced - So Why Is the Stock Tanking?", "author": "Sam Quirke ", "excerpt": "Apple Inc (NASDAQ:AAPL) started the week with an almost-perfect setup. Multiple quarters of solid results, a market that’s been...", "articleId": 200681818, "publishedAt": "2026-06-09T15:56:23.000Z" }, { "url": "http://www.investing.com/analysis/apple-intelligence-monetization-is-the-real-wwdc-story-200681775", "image": "https://d1-invdn-com.investing.com/company_logo/e65d0784b05fbedf064b2abd0dc70a29.jpg", "title": "Apple Intelligence Monetization Is the Real WWDC Story", "author": "Opeyemi Babalola", "excerpt": "Apple’s Siri AI launch signals a new iCloud+ revenue push, but a vague launch timeline sent AAPL down nearly 2% on June 8,...", "articleId": 200681775, "publishedAt": "2026-06-09T08:38:43.000Z" }, { "url": "http://www.investing.com/analysis/week-in-focus-us-cpi-opec-boc-ecb-uk-gdp-and-china-inflation-200681607", "image": "https://d1-invdn-com.investing.com/company_logo/202cdce0d0cd64f29fca913a2c714f3a.jpg", "title": "Week in Focus: US CPI, OPEC, BoC, ECB, UK GDP and China Inflation", "author": "Ryan Anderson", "excerpt": "\nSUN: OPEC/JMMC Meeting (Jun)\nMON: Japanese GDP (Q1), German Factory Orders (Apr), US Consumer Inflation Expectations\nTUE: EIA...", "articleId": 200681607, "publishedAt": "2026-06-05T13:32:04.000Z" }, { "url": "http://www.investing.com/analysis/what-exactly-is-agentic-ai-and-why-are-some-stocks-blowing-up-because-of-it-200681295", "image": "https://d1-invdn-com.investing.com/company_logo/2ca976c96d700a6557ba4064971fc3ca.jpg", "title": "What Exactly Is Agentic AI, and Why Are Some Stocks Blowing Up Because of It?", "author": "Sam Quirke ", "excerpt": "There is a new phrase dominating Wall Street right now, and if you have been paying attention to earnings calls, analyst notes, or...", "articleId": 200681295, "publishedAt": "2026-06-01T16:55:26.000Z" }, { "url": "http://www.investing.com/analysis/dell-takes-aim-at-apple-with-a-699-xps-13-200681259", "image": "https://d1-invdn-com.investing.com/company_logo/ad848e2ff2022b304416fb3bdd9194c4.jpg", "title": "Dell Takes Aim at Apple With a $699 XPS 13", "author": "Boluwatife Remy", "excerpt": "Apple (NASDAQ:AAPL) changed the conversation about laptop pricing earlier this year, and Dell (NYSE:DELL) just fired back in the...", "articleId": 200681259, "publishedAt": "2026-06-01T09:36:15.000Z" } ], "pairId": 6408, "symbol": "AAPL", "hasMore": true, "nextPage": 2 } ``` --- ### Calendar Kalender ekonomi (filter negara/importance/rentang). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:investing/calendar` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `country` | string | query | no | Kode negara (US, EU, GB, JP, CN, ID, ...). Kosong = basket negara major utama | | `importance` | enum(all|high|medium|low) | query | no | Tingkat dampak event. Default all (semua tingkat) | | `range` | enum(today|tomorrow|week) | query | no | Rentang waktu: today, tomorrow, atau week (default today) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:investing/calendar?country=US&importance=high&range=today" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:investing/calendar?country=US&importance=high&range=today", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:investing/calendar?country=US&importance=high&range=today", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 87, "range": "week", "events": [ { "date": "2026-06-15", "time": "08:30", "event": "NY Empire State Manufacturing Index (Jun)", "country": "United States", "currency": "USD", "datetime": "2026/06/15 08:30:00", "forecast": "13.20", "previous": "19.60", "importance": 2 }, { "date": "2026-06-15", "time": "09:15", "event": "Capacity Utilization Rate (May)", "country": "United States", "currency": "USD", "datetime": "2026/06/15 09:15:00", "forecast": "76.2%", "previous": "76.1%", "importance": 1 }, { "date": "2026-06-15", "time": "09:15", "event": "Industrial Production (YoY) (May)", "country": "United States", "currency": "USD", "datetime": "2026/06/15 09:15:00", "previous": "1.35%", "importance": 2 }, { "date": "2026-06-15", "time": "09:15", "event": "Industrial Production (MoM) (May)", "country": "United States", "currency": "USD", "datetime": "2026/06/15 09:15:00", "forecast": "0.3%", "previous": "0.7%", "importance": 2 }, { "date": "2026-06-15", "time": "09:15", "event": "Manufacturing Production (MoM) (May)", "country": "United States", "currency": "USD", "datetime": "2026/06/15 09:15:00", "previous": "0.6%", "importance": 1 }, { "date": "2026-06-15", "time": "10:00", "event": "NAHB Housing Market Index (Jun)", "country": "United States", "currency": "USD", "datetime": "2026/06/15 10:00:00", "forecast": "36", "previous": "37", "importance": 1 }, { "date": "2026-06-15", "time": "11:30", "event": "3-Month Bill Auction", "country": "United States", "currency": "USD", "datetime": "2026/06/15 11:30:00", "previous": "3.640%", "importance": 1 }, { "date": "2026-06-15", "time": "11:30", "event": "6-Month Bill Auction", "country": "United States", "currency": "USD", "datetime": "2026/06/15 11:30:00", "previous": "3.690%", "importance": 1 } ], "country": "US", "importance": "all" } ``` --- ## OJK **Category:** finance · **Slug:** `ojk` **Detail page:** https://zpi.web.id/api/finance/ojk Indonesian financial regulator data — assets under management across every regulated investment product class. **Tags:** indonesia, regulator, mutual-funds, aum, statistics ### Assets under management Industry AUM by product class, as the regulator publishes it. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:ojk/aum` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `product` | enum(all|KPD|Reksadana|DINFRA|RDPT|EBA|DIRE) | query | no | Restrict to one product type. Default all | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:ojk/aum?product=Reksadana" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:ojk/aum?product=Reksadana", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:ojk/aum?product=Reksadana", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 6, "items": [ { "aum": 309639542743730, "asOf": "2026-06", "product": "KPD", "reported": true, "description": "Discretionary fund management" }, { "aum": 56903632196214, "asOf": "2026-07", "product": "Reksadana", "reported": true, "description": "Mutual funds" }, { "aum": null, "asOf": null, "product": "DINFRA", "reported": false, "description": "Infrastructure investment fund" }, { "aum": null, "asOf": null, "product": "RDPT", "reported": false, "description": "Limited participation mutual fund" }, { "aum": 3664784131297, "asOf": "2026-06", "product": "EBA", "reported": true, "description": "Asset-backed securities" }, { "aum": 11254726500028, "asOf": "2026-06", "product": "DIRE", "reported": true, "description": "Real estate investment fund" } ], "source": "ojk", "product": "all", "currency": "IDR", "totalAum": 381462685571269, "latestPeriod": "2026-07" } ``` --- ## Pegadaian Gold **Category:** finance · **Slug:** `pegadaian` **Detail page:** https://zpi.web.id/api/finance/pegadaian Indonesian retail gold — the buy and sell price a state pawnbroker quotes, per gram, with daily history. **Tags:** gold, indonesia, idr, commodity, savings ### Gold price Today's buy and sell price per gram, and the spread. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:pegadaian/gold-price` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `x` | string | query | no | Unused — the current price takes no parameters | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:pegadaian/gold-price?x=" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:pegadaian/gold-price?x=", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:pegadaian/gold-price?x=", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "date": "2026-08-01", "metal": "gold", "source": "pegadaian", "currency": "IDR", "unitGram": 0.01, "buyPerGram": 2367000, "buyPerUnit": 23670, "sellPerGram": 2492000, "sellPerUnit": 24920, "spreadPerGram": 125000 } ``` --- ### Gold history Daily buy/sell history over 7 to 360 days. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:pegadaian/gold-history` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `days` | enum(7|30|90|180|360) | query | no | Window length in days. Default 30 | | `type` | enum(all|sell|buy) | query | no | Which side to return. Default all | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:pegadaian/gold-history?days=30&type=all" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:pegadaian/gold-history?days=30&type=all", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:pegadaian/gold-history?days=30&type=all", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "days": 30, "type": "all", "count": 30, "items": [ { "date": "2026-08-01", "buyPerGram": 2367000, "sellPerGram": 2492000, "spreadPerGram": 125000 }, { "date": "2026-07-31", "buyPerGram": 2392000, "sellPerGram": 2518000, "spreadPerGram": 126000 }, { "date": "2026-07-30", "buyPerGram": 2387000, "sellPerGram": 2513000, "spreadPerGram": 126000 }, { "date": "2026-07-29", "buyPerGram": 2367000, "sellPerGram": 2492000, "spreadPerGram": 125000 }, { "date": "2026-07-28", "buyPerGram": 2378000, "sellPerGram": 2504000, "spreadPerGram": 126000 }, { "date": "2026-07-27", "buyPerGram": 2394000, "sellPerGram": 2520000, "spreadPerGram": 126000 }, { "date": "2026-07-26", "buyPerGram": 2378000, "sellPerGram": 2504000, "spreadPerGram": 126000 }, { "date": "2026-07-25", "buyPerGram": 2378000, "sellPerGram": 2504000, "spreadPerGram": 126000 } ], "metal": "gold", "source": "pegadaian", "currency": "IDR" } ``` --- ## QRIS Static → Dynamic **Category:** finance · **Slug:** `qris` **Detail page:** https://zpi.web.id/api/finance/qris Convert QRIS Static ke Dynamic (set nominal + biaya layanan). Input via paste string atau upload gambar QR. EMVCo TLV + CRC16. **Tags:** qris, qr, qris dinamis, dynamic qris, pembayaran, payment, emvco, indonesia ### Convert Convert dari QRIS string (paste). - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:qris/convert` **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `qris` | string | query | yes | QRIS Static string (paste). Otomatis di-convert ke dynamic. | | `amount` | number | query | yes | Nominal transaksi (Rupiah, tanpa titik/desimal). | | `feeType` | enum(none|fixed|percent) | query | no | Biaya layanan: none (default), fixed (rupiah), percent (persen). | | `feeValue` | number | query | no | Nilai fee — rupiah kalau fixed, persen kalau percent. Wajib kalau feeType != none. | | `withImage` | enum(true|false) | query | no | Sertakan QR image (base64 data URL) di response. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:qris/convert?qris=00020101021126180014ID.CO.QRIS.WWW52045999530336054054000005802ID5910TOKO%20SAYUR6007JAKARTA6304ABCD&amount=15000&feeType=none&feeValue=1000&withImage=true" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:qris/convert?qris=00020101021126180014ID.CO.QRIS.WWW52045999530336054054000005802ID5910TOKO%20SAYUR6007JAKARTA6304ABCD&amount=15000&feeType=none&feeValue=1000&withImage=true", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:qris/convert?qris=00020101021126180014ID.CO.QRIS.WWW52045999530336054054000005802ID5910TOKO%20SAYUR6007JAKARTA6304ABCD&amount=15000&feeType=none&feeValue=1000&withImage=true", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "fee": null, "amount": 15000, "static": "00020101021126180014ID.CO.QRIS.WWW52045999530336054054000005802ID5910TOKO SAYUR6007JAKARTA6304ABCD", "dynamic": "00020101021226180014ID.CO.QRIS.WWW52045999530336054054000005405150005802ID5910TOKO SAYUR6007JAKARTA63044ABA", "qrImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS...(truncated base64 PNG)", "merchant": { "name": "TOKO SAYUR", "location": "JAKARTA" }, "inputType": "string" } ``` --- ### Scan Convert dari upload gambar QR. - **Method:** `POST` - **Endpoint:** `https://api.zpi.web.id/v1/finance:qris/scan` **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `image` | file | form | yes | Upload gambar QRIS Static (jpg/png/webp). Max 5MB. | | `amount` | number | form | yes | Nominal transaksi (Rupiah, tanpa titik/desimal). | | `feeType` | enum(none|fixed|percent) | form | no | Biaya layanan: none (default), fixed (rupiah), percent (persen). | | `feeValue` | number | form | no | Nilai fee — rupiah kalau fixed, persen kalau percent. Wajib kalau feeType != none. | | `withImage` | enum(true|false) | form | no | Sertakan QR image (base64 data URL) di response. | **cURL:** ```bash curl -X POST "https://api.zpi.web.id/v1/finance:qris/scan" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "image": "qris.png", "amount": "15000", "feeType": "none", "feeValue": "1000", "withImage": "true" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:qris/scan", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "image": "qris.png", "amount": "15000", "feeType": "none", "feeValue": "1000", "withImage": "true" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api.zpi.web.id/v1/finance:qris/scan", headers={"x-api-key": "YOUR_API_KEY"}, json={ "image": "qris.png", "amount": "15000", "feeType": "none", "feeValue": "1000", "withImage": "true" }) data = r.json() ``` **Example response:** ```json { "fee": null, "amount": 50000, "static": "00020101021126180014ID.CO.QRIS.WWW52045999530336054054000005802ID5910TOKO SAYUR6007JAKARTA6304ABCD", "dynamic": "00020101021226180014ID.CO.QRIS.WWW52045999530336054054000005405500005802ID5910TOKO SAYUR6007JAKARTA63047C4B", "qrImage": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS...(truncated base64 PNG)", "merchant": { "name": "TOKO SAYUR", "location": "JAKARTA" }, "inputType": "image" } ``` --- ## Saweria **Category:** finance · **Slug:** `saweria` **Detail page:** https://zpi.web.id/api/finance/saweria Donasi QRIS ke kreator Saweria — bikin tagihan, dapat QR siap-scan, dan cek status pembayaran secara real-time. Anonim, tanpa login. **Tags:** donation, qris, payment, saweria, indonesia ### Profil Kreator Info kreator Saweria: nama, avatar, deskripsi, nominal cepat, dan sosial media. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:saweria/profile/:username` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `username` | string | path | yes | Username Saweria kreator (boleh @username atau URL saweria.co/...) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:saweria/profile/:username" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:saweria/profile/:username", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:saweria/profile/:username", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "id": "0ed02b12-460e-4008-9dfc-501e320c986d", "plus": true, "avatar": "https://saweria-space.sgp1.cdn.digitaloceanspaces.com/prd/pp/0ed02b12-460e-4008-9dfc-501e320c986d-e2c0303a-2759-4b56-880a-8a5707e90c04.jpg", "socials": { "youtube": "zaadevofc", "instagram": "zaadevofc" }, "currency": "IDR", "provider": "saweria", "username": "zaadevofc", "verified": false, "profileUrl": "https://saweria.co/zaadevofc", "description": "thanks for support my work ^^", "hasWishlist": false, "minDonation": 10000, "quickAmounts": [ 5000, 25000, 50000, 100000 ] } ``` --- ### Buat Donasi QRIS Bikin tagihan donasi QRIS anonim ke kreator. Balikin QR string, gambar QR, link bayar, dan nominal yang harus dibayar. - **Method:** `POST` - **Endpoint:** `https://api.zpi.web.id/v1/finance:saweria/donate/:username` **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `username` | string | path | yes | Username Saweria yang mau didonasi (boleh @username atau URL) | | `amount` | number | body | yes | Nominal donasi dalam Rupiah (min 1.000, max 10.000.000) | | `message` | string | body | no | Pesan donasi (opsional, max 255 char) | | `name` | string | body | no | Nama donatur yang tampil (opsional, default Anonim) | | `email` | string | body | no | Email donatur buat kirim bukti (opsional) | **cURL:** ```bash curl -X POST "https://api.zpi.web.id/v1/finance:saweria/donate/:username" \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount": "10000", "message": "Semangat terus berkarya!", "name": "Anonim", "email": "donatur@example.com" }' ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:saweria/donate/:username", { method: "POST", headers: { "x-api-key": process.env.ZAPI_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ "amount": "10000", "message": "Semangat terus berkarya!", "name": "Anonim", "email": "donatur@example.com" }) }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.post("https://api.zpi.web.id/v1/finance:saweria/donate/:username", headers={"x-api-key": "YOUR_API_KEY"}, json={ "amount": "10000", "message": "Semangat terus berkarya!", "name": "Anonim", "email": "donatur@example.com" }) data = r.json() ``` **Example response:** ```json { "to": "zaadevofc", "from": "Anonim", "amount": 10000, "payUrl": "https://saweria.co/qris/snap/d5451d2c-3458-40f0-9478-567ef79354c9", "status": "pending", "message": "Semangat terus berkarya!", "qrImage": "https://api.qrserver.com/v1/create-qr-code/?size=320x320&data=00020101021226650013CO.XENDIT.WWW01189360084800000000020215WNtXtb6qmr4ZJBw0303UME51370014ID.CO.QRIS.WWW0215ID20253781998505204509953033605405100715802ID5922PT%20Harta%20Tahta%20Sukaria6013JAKARTA%20PUSAT61051034062290525N1IubOiVqCoMkRIWWFkTa8AgU630414E8", "currency": "IDR", "provider": "saweria", "qrString": "00020101021226650013CO.XENDIT.WWW01189360084800000000020215WNtXtb6qmr4ZJBw0303UME51370014ID.CO.QRIS.WWW0215ID20253781998505204509953033605405100715802ID5922PT Harta Tahta Sukaria6013JAKARTA PUSAT61051034062290525N1IubOiVqCoMkRIWWFkTa8AgU630414E8", "createdAt": "Fri, 12 Jun 2026 03:27:36 GMT", "donationId": "d5451d2c-3458-40f0-9478-567ef79354c9", "amountToPay": 10071, "paymentType": "qris" } ``` --- ### Cek Status Donasi Cek apakah donasi QRIS sudah dibayar (paid/pending/expired). Poll pakai donationId dari endpoint donate. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:saweria/status/:donationId` **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `donationId` | string | path | yes | ID tagihan donasi dari endpoint donate | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:saweria/status/:donationId" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:saweria/status/:donationId", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:saweria/status/:donationId", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "to": "zaadevofc", "amount": 10071, "isPaid": false, "status": "pending", "currency": "IDR", "provider": "saweria", "qrString": "00020101021226650013CO.XENDIT.WWW01189360084800000000020215WNtXtb6qmr4ZJBw0303UME51370014ID.CO.QRIS.WWW0215ID20253781998505204509953033605405100715802ID5922PT Harta Tahta Sukaria6013JAKARTA PUSAT61051034062290525P2Y5NROondzrK6Hwj5Jxlu92V6304D73C", "createdAt": "Fri, 12 Jun 2026 03:27:59 GMT", "donationId": "0dc802ff-19ac-4558-a3c8-9f7d88aa04d4", "amountToPay": 10071 } ``` --- ## SEC EDGAR **Category:** finance · **Slug:** `sec-edgar` **Detail page:** https://zpi.web.id/api/finance/sec-edgar US issuer filings and reported accounting figures — full-text search since 2001, company profiles, filing history and XBRL facts. **Tags:** filings, sec, fundamentals, xbrl, us-stocks ### Search filings Full-text search across every filing since 2001. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:sec-edgar/search` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | no | Phrase to search. Quote it for an exact match | | `company` | string | query | no | Restrict to an issuer by name or ticker | | `forms` | string | query | no | Comma-separated form types, e.g. 10-K,8-K | | `from` | string | query | no | Earliest filing date, YYYY-MM-DD | | `to` | string | query | no | Latest filing date, YYYY-MM-DD | | `page` | number | query | no | Page number, 100 results per page. Default 1, max 100 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:sec-edgar/search?q=%22supply%20chain%20risk%22&company=apple&forms=10-K&from=2025-01-01&to=2025-12-31&page=1" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:sec-edgar/search?q=%22supply%20chain%20risk%22&company=apple&forms=10-K&from=2025-01-01&to=2025-12-31&page=1", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:sec-edgar/search?q=%22supply%20chain%20risk%22&company=apple&forms=10-K&from=2025-01-01&to=2025-12-31&page=1", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 100, "items": [ { "cik": "0000815097", "sic": "4400", "url": "https://www.sec.gov/Archives/edgar/data/815097/000081509723000012/ccl-20221130.htm", "form": "10-K", "ticker": "CCL", "company": "CARNIVAL CORP", "filedAt": "2023-01-27", "document": "ccl-20221130.htm", "location": "Miami, FL", "periodEnding": "2022-11-30", "accessionNumber": "0000815097-23-000012" }, { "cik": "0001408198", "sic": "7389", "url": "https://www.sec.gov/Archives/edgar/data/1408198/000140819826000011/msci-20251231.htm", "form": "10-K", "ticker": "MSCI", "company": "MSCI Inc.", "filedAt": "2026-02-06", "document": "msci-20251231.htm", "location": "New York, NY", "periodEnding": "2025-12-31", "accessionNumber": "0001408198-26-000011" }, { "cik": "0001408198", "sic": "7389", "url": "https://www.sec.gov/Archives/edgar/data/1408198/000140819823000011/msci-20221231.htm", "form": "10-K", "ticker": "MSCI", "company": "MSCI Inc.", "filedAt": "2023-02-10", "document": "msci-20221231.htm", "location": "New York, NY", "periodEnding": "2022-12-31", "accessionNumber": "0001408198-23-000011" }, { "cik": "0001408198", "sic": "7389", "url": "https://www.sec.gov/Archives/edgar/data/1408198/000140819824000030/msci-20231231.htm", "form": "10-K", "ticker": "MSCI", "company": "MSCI Inc.", "filedAt": "2024-02-09", "document": "msci-20231231.htm", "location": "New York, NY", "periodEnding": "2023-12-31", "accessionNumber": "0001408198-24-000030" }, { "cik": "0001408198", "sic": "7389", "url": "https://www.sec.gov/Archives/edgar/data/1408198/000140819825000053/msci-20241231.htm", "form": "10-K", "ticker": "MSCI", "company": "MSCI Inc.", "filedAt": "2025-02-07", "document": "msci-20241231.htm", "location": "New York, NY", "periodEnding": "2024-12-31", "accessionNumber": "0001408198-25-000053" }, { "cik": "0001408198", "sic": "7389", "url": "https://www.sec.gov/Archives/edgar/data/1408198/000156459022004803/msci-10k_20211231.htm", "form": "10-K", "ticker": "MSCI", "company": "MSCI Inc.", "filedAt": "2022-02-11", "document": "msci-10k_20211231.htm", "location": "New York, NY", "periodEnding": "2021-12-31", "accessionNumber": "0001564590-22-004803" }, { "cik": "0000815097", "sic": "4400", "url": "https://www.sec.gov/Archives/edgar/data/815097/000081509724000011/ccl-20231130.htm", "form": "10-K", "ticker": "CCL", "company": "CARNIVAL CORP", "filedAt": "2024-01-26", "document": "ccl-20231130.htm", "location": "Miami, FL", "periodEnding": "2023-11-30", "accessionNumber": "0000815097-24-000011" }, { "cik": "0000067347", "sic": "3714", "url": "https://www.sec.gov/Archives/edgar/data/67347/000110465926066795/mod-20260331x10k.htm", "form": "10-K", "ticker": "MOD", "company": "MODINE MANUFACTURING CO", "filedAt": "2026-05-27", "document": "mod-20260331x10k.htm", "location": "Racine, WI", "periodEnding": "2026-03-31", "accessionNumber": "0001104659-26-066795" } ], "query": "climate risk", "total": 10000, "company": null, "hasMore": true, "nextPage": 2, "provider": "sec-edgar", "totalIsLowerBound": true } ``` --- ### Company Resolve a name or ticker to an issuer profile. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:sec-edgar/company` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `company` | string | query | no | Company name or ticker to resolve | | `cik` | string | query | no | Central Index Key, if already known | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:sec-edgar/company?company=apple&cik=320193" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:sec-edgar/company?company=apple&cik=320193", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:sec-edgar/company?company=apple&cik=320193", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "cik": "0000320193", "ein": "942404110", "sic": "3571", "city": "CUPERTINO", "name": "Apple Inc.", "phone": "(408) 996-1010", "state": "CA", "tickers": [ "AAPL" ], "category": "Large accelerated filer", "industry": "Electronic Computers", "provider": "sec-edgar", "exchanges": [ "Nasdaq" ], "entityType": "operating", "filingCount": 1000, "formerNames": [ { "to": "2019-08-05", "from": "2007-01-10", "name": "APPLE INC" }, { "to": "2007-01-04", "from": "1994-01-26", "name": "APPLE COMPUTER INC" }, { "to": "1997-07-28", "from": "1997-07-28", "name": "APPLE COMPUTER INC/ FA" } ], "alternatives": [ { "cik": "0001418121", "name": "Apple Hospitality REIT, Inc.", "ticker": "APLE" }, { "cik": "0000320193", "name": "Apple Inc.", "ticker": "AAPL" }, { "cik": "0001498864", "name": "Apple REIT Ten, Inc." }, { "cik": "0000320193", "name": "APPLE COMPUTER INC", "ticker": "AAPL" }, { "cik": "0001418121", "name": "Apple REIT Nine, Inc.", "ticker": "APLE" } ], "fiscalYearEnd": "0926", "stateOfIncorporation": "CA" } ``` --- ### Filings An issuer's recent filings, filterable by form type. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:sec-edgar/filings` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `company` | string | query | no | Company name or ticker | | `cik` | string | query | no | Central Index Key, if already known | | `form` | string | query | no | Restrict to one form type, e.g. 10-K, 8-K, 4 | | `page` | number | query | no | Page number. Default 1 | | `count` | number | query | no | Rows per page. Default 25, max 100 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:sec-edgar/filings?company=apple&cik=320193&form=10-K&page=1&count=25" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:sec-edgar/filings?company=apple&cik=320193&form=10-K&page=1&count=25", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:sec-edgar/filings?company=apple&cik=320193&form=10-K&page=1&count=25", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "cik": "0000320193", "form": "10-K", "page": 1, "count": 5, "items": [ { "url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm", "form": "10-K", "size": 9392337, "isXbrl": true, "filedAt": "2025-10-31", "acceptedAt": "2025-10-31T10:01:26.000Z", "fileNumber": "001-36743", "reportDate": "2025-09-27", "description": "10-K", "accessionNumber": "0000320193-25-000079" }, { "url": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm", "form": "10-K", "size": 9759333, "isXbrl": true, "filedAt": "2024-11-01", "acceptedAt": "2024-11-01T10:01:36.000Z", "fileNumber": "001-36743", "reportDate": "2024-09-28", "description": "10-K", "accessionNumber": "0000320193-24-000123" }, { "url": "https://www.sec.gov/Archives/edgar/data/320193/000032019323000106/aapl-20230930.htm", "form": "10-K", "size": 9569569, "isXbrl": true, "filedAt": "2023-11-03", "acceptedAt": "2023-11-02T22:08:27.000Z", "fileNumber": "001-36743", "reportDate": "2023-09-30", "description": "10-K", "accessionNumber": "0000320193-23-000106" }, { "url": "https://www.sec.gov/Archives/edgar/data/320193/000032019322000108/aapl-20220924.htm", "form": "10-K", "size": 10332356, "isXbrl": true, "filedAt": "2022-10-28", "acceptedAt": "2022-10-27T22:01:14.000Z", "fileNumber": "001-36743", "reportDate": "2022-09-24", "description": "10-K", "accessionNumber": "0000320193-22-000108" }, { "url": "https://www.sec.gov/Archives/edgar/data/320193/000032019321000105/aapl-20210925.htm", "form": "10-K", "size": 10502096, "isXbrl": true, "filedAt": "2021-10-29", "acceptedAt": "2021-10-28T22:04:28.000Z", "fileNumber": "001-36743", "reportDate": "2021-09-25", "description": "10-K", "accessionNumber": "0000320193-21-000105" } ], "total": 11, "company": "Apple Inc.", "hasMore": true, "tickers": [ "AAPL" ], "nextPage": 2, "provider": "sec-edgar" } ``` --- ### Concept One reported figure across every period an issuer filed. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:sec-edgar/concept` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `company` | string | query | no | Company name or ticker | | `cik` | string | query | no | Central Index Key, if already known | | `tag` | string | query | no | XBRL tag, e.g. Revenues, Assets, NetIncomeLoss | | `taxonomy` | enum(us-gaap|ifrs-full|dei|srt) | query | no | Reporting taxonomy. Default us-gaap | | `period` | enum(all|annual|quarterly) | query | no | Restrict by reporting length. Default all | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:sec-edgar/concept?company=apple&cik=320193&tag=Revenues&taxonomy=us-gaap&period=all" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:sec-edgar/concept?company=apple&cik=320193&tag=Revenues&taxonomy=us-gaap&period=all", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:sec-edgar/concept?company=apple&cik=320193&tag=Revenues&taxonomy=us-gaap&period=all", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "cik": "0000320193", "tag": "Revenues", "unit": "USD", "count": 3, "items": [ { "end": "2018-09-29", "form": "10-K", "frame": "CY2018", "start": "2017-10-01", "value": 265595000000, "filedAt": "2018-11-05", "fiscalYear": 2018, "periodType": "duration", "fiscalPeriod": "FY", "accessionNumber": "0000320193-18-000145" }, { "end": "2017-09-30", "form": "10-K", "frame": "CY2017", "start": "2016-09-25", "value": 229234000000, "filedAt": "2018-11-05", "fiscalYear": 2018, "periodType": "duration", "fiscalPeriod": "FY", "accessionNumber": "0000320193-18-000145" }, { "end": "2016-09-24", "form": "10-K", "frame": "CY2016", "start": "2015-09-27", "value": 215639000000, "filedAt": "2018-11-05", "fiscalYear": 2018, "periodType": "duration", "fiscalPeriod": "FY", "accessionNumber": "0000320193-18-000145" } ], "label": "Revenues", "period": "annual", "company": "Apple Inc.", "provider": "sec-edgar", "taxonomy": "us-gaap" } ``` --- ## Stockbit **Category:** finance · **Slug:** `stockbit` **Detail page:** https://zpi.web.id/api/finance/stockbit Data saham IDX dari Stockbit: harga, chart intraday, profil emiten, diskusi komunitas, dan kamus investasi. **Tags:** stockbit, saham, idx, indonesia, bursa, investasi ### Symbol Harga terkini satu saham IDX: last, previous close, perubahan, volume, dan bid/offer terbaik. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:stockbit/symbol` - **Cache TTL:** 60s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | IDX ticker, e.g. BBCA | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:stockbit/symbol?symbol=BBCA" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:stockbit/symbol?symbol=BBCA", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:stockbit/symbol?symbol=BBCA", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "last": 6325, "name": "Bank Central Asia Tbk.", "type": "Saham", "change": -125, "sector": "Keuangan", "symbol": "BBCA", "volume": 153174800, "bestBid": { "price": 6350, "volume": 2925000 }, "country": "ID", "iconUrl": "https://assets.stockbit.com/logos/companies/BBCA.png", "indexes": [ "TRADINGLIMIT", "IDXVESTA28", "ECONOMIC30", "DAYTRADE", "PRIMBANK10", "IDXLQ45LCL" ], "exchange": "IDX", "provider": "stockbit", "bestOffer": { "price": 6375, "volume": 548800 }, "followers": 3303290, "subSector": "Bank", "tradeable": true, "updatedAt": "2026-07-31T08:00:03+07:00", "tradingDate": "31 Jul 2026", "tradingTime": "Fri 16:14", "averageValue": 284796460, "marketStatus": "close", "changePercent": -1.94, "previousClose": 6450, "unusualMarketActivity": false } ``` --- ### Chart Deret harga intraday satu saham, satu titik per menit perdagangan. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:stockbit/chart` - **Cache TTL:** 60s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | IDX ticker, e.g. BBCA | | `count` | number | query | no | Keep only the last N points. Default: the whole session | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:stockbit/chart?symbol=BBCA&count=100" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:stockbit/chart?symbol=BBCA&count=100", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:stockbit/chart?symbol=BBCA&count=100", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 5, "items": [ { "time": "2026-07-31 16:09:00", "price": 6325, "change": -125, "changePercent": -1.94 }, { "time": "2026-07-31 16:10:00", "price": 6325, "change": -125, "changePercent": -1.94 }, { "time": "2026-07-31 16:11:00", "price": 6325, "change": -125, "changePercent": -1.94 }, { "time": "2026-07-31 16:12:00", "price": 6325, "change": -125, "changePercent": -1.94 }, { "time": "2026-07-31 16:14:00", "price": 6325, "change": -125, "changePercent": -1.94 } ], "change": -125, "symbol": "BBCA", "interval": "intraday", "provider": "stockbit", "timeframe": "today", "tradingDate": "31 Jul 2026", "changePercent": -1.94, "previousClose": 6450 } ``` --- ### Stream Postingan komunitas terbaru tentang satu saham. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:stockbit/stream` - **Cache TTL:** 120s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | IDX ticker, e.g. BBCA | | `count` | number | query | no | Cap the list. Default: every post the page carries | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:stockbit/stream?symbol=BBCA&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:stockbit/stream?symbol=BBCA&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:stockbit/stream?symbol=BBCA&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 5, "items": [ { "id": 34411610, "isPro": false, "likes": 0, "images": [ "https://stream-asset.stockbit.com/283bb801-4e10-4e88-aba7-d8b862a61c45_stream.jpg" ], "content": "$IHSG $BTC $BBCA", "replies": 0, "dislikes": 0, "fullName": "Ryusuf Ivan", "isPinned": false, "username": "RahardianYusufIvandyaz", "createdAt": "2026-08-02 17:45:44", "isOfficial": false }, { "id": 34411604, "isPro": false, "likes": 0, "images": [ "https://stream-asset.stockbit.com/9364d3c0-b966-4b65-830b-64d6390969a9_stream.jpg" ], "content": "@NurseTyaaa Artinya Indonesia cerah 🚀😂. \n\n\nRT $IHSG $BBCA $BBRI", "replies": 0, "dislikes": 0, "fullName": "Ovick", "isPinned": false, "username": "Taufik230295", "createdAt": "2026-08-02 17:45:05", "isOfficial": false }, { "id": 34411461, "isPro": false, "likes": 0, "images": [ "https://stream-asset.stockbit.com/6c824ce3-a4d8-4de9-b0ed-dbfe3c695c76_stream.jpg" ], "content": "Dengan FL portofolio sudah stabil di bawah 10%, strategi di bulan Agustus ini kemungkinan timbun cash dulu di deposito bank digital $BBSI , antisipasi koreksi harga $BBRI dan $BBCA atau untuk menghadapi volatilitas harga menjelang bulan November nanti", "replies": 0, "dislikes": 0, "fullName": "Yaih", "isPinned": false, "username": "herwindyowarihkusumo", "createdAt": "2026-08-02 17:28:02", "isOfficial": false }, { "id": 34411341, "isPro": false, "likes": 0, "images": [ "https://stream-asset.stockbit.com/0b190f1b-c369-435a-96f2-c98607643e87_stream.jpg", "https://stream-asset.stockbit.com/2d818ffe-0fd2-4842-a673-66b07f7f919c_stream.jpg", "https://stream-asset.stockbit.com/e7a1aa89-dbec-4887-a58e-97997e374146_stream.jpg" ], "content": "platform sebelah bagus juga ya ngasih summary ini , sama flow dll\n.\nsemoga stockbit bisa nyusul 🤣\n.\ncapek Gonta ganti apps buat validasi move investasi\n.\n$BMRI $BBCA $BBRI", "replies": 0, "dislikes": 0, "fullName": "Rama Abdurachman", "isPinned": false, "username": "ramaabd", "createdAt": "2026-08-02 17:16:19", "isOfficial": false }, { "id": 34411322, "isPro": false, "likes": 0, "content": "Gemes lihat orang2 nulisnya laporan Q2, padahal laporan bulan Juni itu disebutnya semester 1, atau TW2, bukan Q2. Gimana sih ya... kan beda triwulanan ama kuartalan. $BBRI $BMRI $BBCA", "replies": 0, "dislikes": 0, "fullName": "bunbun", "isPinned": false, "username": "bundagendis", "createdAt": "2026-08-02 17:10:35", "isOfficial": false } ], "symbol": "BBCA", "provider": "stockbit" } ``` --- ### Profile Profil emiten: deskripsi usaha, sektor, sub-sektor, dan indeks yang diikuti. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:stockbit/profile` - **Cache TTL:** 3600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | IDX ticker, e.g. BBCA | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:stockbit/profile?symbol=BBCA" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:stockbit/profile?symbol=BBCA", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:stockbit/profile?symbol=BBCA", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "name": "Bank Central Asia Tbk.", "type": "Saham", "sector": "Keuangan", "symbol": "BBCA", "country": "ID", "iconUrl": "https://assets.stockbit.com/logos/companies/BBCA.png", "indexes": [ "TRADINGLIMIT", "IDXVESTA28", "ECONOMIC30", "DAYTRADE", "PRIMBANK10", "IDXLQ45LCL" ], "exchange": "IDX", "provider": "stockbit", "followers": 3303290, "subSector": "Bank", "tradeable": true, "background": "PT Bank Central Asia Tbk. atau BBCA dalam bidang usaha bank umum. Anak perusahaan diantaranya: PT BCA Finance (Pembiayaan Konsumen, Sewa Guna Usaha dan Anjak Piutang), BCA Finance Limited (Money Lending- Jasa Pengiriman Uang), PT Bank BCA Syariah (Perbankan Syariah), PT BCA Sekuritas (Penjamin Emisi Efek dan Pialang Perdagangan Saham), dan PT Asuransi Umum BCA (Asuransi Umum atau Asuransi Kerugian).Pada 2017 BCA mendirikan PT Central Capital Ventura (CCV) guna mengikuti inovasi layanan keuangan berbasis digital. Produk dan layanan Perseroan yaitu: produk simpanan, layanan transaksi perbankan, perbankan elektronik, layanan cash management, kartu kredit, bancassurance, produk investasi, fasilitas kredit, Bank garansi, fasilitas ekspor impor dan fasilitas valuta asing. Pada 2017 Jumlah kantor wilayah ada 12 terdiri dari (146 kantor cabang utama, 856 kantor cabang pembantu dan 244 kantor kas) tersebar di seluruh Indonesia, kantor non wilayah (1 kantor cabang utama) dan satu kantor perwakilan di Jakarta pusat.", "listingStatus": "STATUS_ACTIVE" } ``` --- ### Glossary Kamus istilah investasi: definisi, rumus, dan penjelasan. Bisa disaring per huruf atau kata kunci. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:stockbit/glossary` - **Cache TTL:** 86400s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `letter` | enum(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) | query | no | Fetch one initial letter only. Default: every letter | | `q` | string | query | no | Keep only terms whose name or definition contains this | | `count` | number | query | no | Cap the list. Default: everything found | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:stockbit/glossary?letter=a&q=rasio&count=20" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:stockbit/glossary?letter=a&q=rasio&count=20", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:stockbit/glossary?letter=a&q=rasio&count=20", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 16, "items": [ { "id": 360, "slug": "absolute-valuation-", "term": "Absolute Valuation", "letter": "a", "definition": "Absolute valuation merupakan salah satu metode valuasi yang digunakan oleh investor untuk menaksir nilai intrinsik saham dengan menghitung akumulasi nilai aset ataupun potensi arus kas perusahaan. \n\nSebagai contoh jika kita ingin membeli ruko, kita bisa menaksir nilai intrinsik ruko dengan menghitung harga seluruh komponen ruko tersebut, mulai dari harga tanah, perabotan, serta komponen lainnya. \n\nSelain dengan menghitung total aset, kita juga bisa memperkirakan nilai intrinsik ruko tersebut dengan memproyeksikan kemampuannya dalam menghasilkan cash flow ke depannya. Cash flow bisa didapatkan dengan menyewakan ruko, menggunakannya sebagai tempat usaha atau modal kerja, dan lain-lain. \n\nDalam saham, metode yang paling sering digunakan dalam menghitung absolute valuation adalah discounted cash flow (DCF)." }, { "id": 176, "slug": "accrued-expenses", "term": "Accrued Expense", "letter": "a", "definition": "Accrued expenses adalah biaya yang telah dikeluarkan perusahaan, tetapi belum dibayar tunai. Biaya ini umumnya termasuk dalam kewajiban lancar dalam neraca perusahaan." }, { "id": 253, "slug": "agio-saham", "term": "Agio Saham", "letter": "a", "definition": "Selisih antara nilai nominal (par) saham dan harga yang dibayar investor untuk itu, biasanya akibat IPO atau rights issue." }, { "id": 321, "slug": "akuisisi", "term": "Akuisisi", "letter": "a", "definition": "Akuisisi adalah pengambilalihan kepemilikan perusahaan atau aset. Berbeda dengan pembelian saham biasa, akuisisi umumnya merujuk kepada aksi pembelian saham mayoritas atau lebih dari 50%. Ketika suatu entitas membeli lebih dari 50% saham suatu perusahaan, ia akan memiliki kontrol di perusahaan tersebut." }, { "id": 63, "slug": "altman-z-score-modified", "term": "Altman Z-Score (modified)", "letter": "a", "formula": "Altman Z-Score (Modified) dihitung menggunakan formula:\n\nZ-Score = 6.56A + 3.26B + 6.72C + 1.05D\n\nDimana:\n\nA = Working Capital / Total Assets\n\nB = Retained Earnings / Total Assets\n\nC = EBIT / Total Assets\n\nD = (Total Ekuitas - kepentingan non pengendali) / Total liabilities", "definition": "Altman Z-Score adalah model probabilistik yang digunakan untuk menentukan resiko kebangkrutan. Altman Z-Score (Modified) didesain agar dapat diterapkan pada perusahaan di emerging market (negara berkembang).\n\nAdapun kategori hasil Z-Score adalah sebagai berikut:\n\n Z-Score < 1.1 mengindikasikan kemungkinan perusahaan sedang menuju kebangkrutan.\n Z-Score antara 1.1 dan 2.6 mengindikasikan perusahaan masuk kedalam zona \"hati-hati.\"\n\nZ-Score diatas 2.6 mengindikasikan perusahaan berada dalam zona aman.", "explanation": "Z-Score Result:\n\nZ-Score < 1.1 mengindikasikan kemungkinan perusahaan sedang menuju kebangkrutan.\nZ-Score antara 1.1 dan 2.6 mengindikasikan perusahaan masuk kedalam zona \"hati-hati.\"\nZ-Score diatas 2.6 mengindikasikan perusahaan berada dalam zona aman." }, { "id": 66, "slug": "altman-z-score-original", "term": "Altman Z-Score (Original)", "letter": "a", "formula": "Altman Z-Score (Original) dihitung menggunakan formula:\n\nZ-Score = 1.2A + 1.4B + 3.3C + 0.6D + 1E\n\nDimana:\n\nA = Working Capital / Total Assets\n\nB = Retained Earnings / Total Assets\n\nC = EBIT / Total Assets\n\nD = Market value of equity / Total Liabilities\n\nE = Sales / Total Assets", "definition": "Altman Z-Score menggabungkan beberapa rasio penting dalam metrik tunggal yang menyediakan informasi berharga tentang kesehatan keuangan perusahaan. Secara khusus, Altman Z-Score adalah model probabilistik yang digunakan untuk menentukan resiko kebangkrutan perusahaan.\n\nAltman Z-Score (Original) ini didesain agar dapat digunakan pada perusahaan manufaktur.", "explanation": "Z-Score Result:\n\nZ-Score <1.81 mengindikasikan kemungkinan perusahaan sedang menuju kebangkrutan\nZ-Score antara 1.81 dan 2.99 mengindikasikan perusahaan masuk kedalam zona \"hati-hati\"\nZ-Score diatas 3.00 mengindikasikan perusahaan berada dalam zona aman" } ], "letter": "a", "provider": "stockbit", "lettersFetched": 1 } ``` --- ### User Profil publik anggota: nama, avatar, jumlah follower, following, dan ide. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:stockbit/user` - **Cache TTL:** 900s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `username` | string | query | yes | Member handle, without the @ | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:stockbit/user?username=ramaabd" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:stockbit/user?username=ramaabd", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:stockbit/user?username=ramaabd", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "ideas": 105, "fullName": "Rama Abdurachman", "joinedAt": "2023-02-20T13:16:45Z", "provider": "stockbit", "username": "ramaabd", "avatarUrl": "https://avatar.stockbit.com/1875309/2699292a-c1a3-4d7a-b366-85194701f22c-stockbit_image1768074830129.jpeg", "followers": 12, "following": 13, "isVerified": false, "avatarThumbnailUrl": "https://avatar.stockbit.com/thumb/1875309/2699292a-c1a3-4d7a-b366-85194701f22c-stockbit_image1768074830129.jpeg" } ``` --- ### Post Satu postingan berdasarkan id permalink-nya. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:stockbit/post` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `id` | string | query | yes | Numeric post id | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:stockbit/post?id=34411341" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:stockbit/post?id=34411341", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:stockbit/post?id=34411341", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "id": 34411341, "url": "https://stockbit.com/post/34411341", "isPro": false, "likes": 0, "images": [ "https://stream-asset.stockbit.com/0b190f1b-c369-435a-96f2-c98607643e87_stream.jpg", "https://stream-asset.stockbit.com/2d818ffe-0fd2-4842-a673-66b07f7f919c_stream.jpg", "https://stream-asset.stockbit.com/e7a1aa89-dbec-4887-a58e-97997e374146_stream.jpg" ], "content": "platform sebelah bagus juga ya ngasih summary ini , sama flow dll\n.\nsemoga stockbit bisa nyusul 🤣\n.\ncapek Gonta ganti apps buat validasi move investasi\n.\n$BMRI $BBCA $BBRI", "country": "ID", "replies": 0, "reposts": 0, "dislikes": 0, "fullName": "Rama Abdurachman", "provider": "stockbit", "username": "ramaabd", "createdAt": "2026-08-02 17:16:19", "isOfficial": false } ``` --- ## TradingView **Category:** finance · **Slug:** `tradingview` **Detail page:** https://zpi.web.id/api/finance/tradingview Screener, charts, technical indicators, fundamentals, news and the macro calendar across 16 markets — Indonesian equities, US equities, crypto, forex and futures. **Tags:** stocks, crypto, forex, screener, chart, technical-analysis ### Screener Filter and rank a whole exchange by price, market cap, sector and more. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/screener` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `market` | enum(indonesia|america|crypto|forex|malaysia|singapore|thailand|japan|hongkong|india|uk|germany|australia|futures|cfd|bond) | query | no | Market to scan. Default indonesia | | `search` | string | query | no | Filter by ticker or company name | | `sortBy` | string | query | no | Upstream column to sort on. Default market cap | | `sortOrder` | enum(desc|asc) | query | no | Sort direction. Defaults to desc, or asc when sorting forex by name | | `page` | number | query | no | Page number. Default 1 | | `count` | number | query | no | Rows per page. Default 50, max 200 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/screener?market=indonesia&search=bank&sortBy=market_cap_basic&sortOrder=desc&page=1&count=50" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/screener?market=indonesia&search=bank&sortBy=market_cap_basic&sortOrder=desc&page=1&count=50", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/screener?market=indonesia&search=bank&sortBy=market_cap_basic&sortOrder=desc&page=1&count=50", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 5, "items": [ { "last": 6325, "name": "PT Bank Central Asia Tbk", "change": -125, "sector": "Finance", "symbol": "IDX:BBCA", "ticker": "BBCA", "volume": 153174800, "peRatio": 13.405200751623779, "exchange": "IDX", "marketCap": 779714671484375, "changePercent": -1.937984496124031 }, { "last": 3040, "name": "PT Bank Rakyat Indonesia (Persero) Tbk Class B", "change": 50, "sector": "Finance", "symbol": "IDX:BBRI", "ticker": "BBRI", "volume": 226634400, "peRatio": 7.82939339714289, "exchange": "IDX", "marketCap": 459397912503040, "changePercent": 1.6722408026755853 }, { "last": 4190, "name": "PT Bank Mandiri (Persero) Tbk", "change": 30, "sector": "Finance", "symbol": "IDX:BMRI", "ticker": "BMRI", "volume": 97657300, "peRatio": 6.278753581998949, "exchange": "IDX", "marketCap": 392951904790270, "changePercent": 0.7211538461538461 }, { "last": 3530, "name": "PT Bank Negara Indonesia (Persero) Tbk Class B", "change": -20, "sector": "Finance", "symbol": "IDX:BBNI", "ticker": "BBNI", "volume": 48321300, "peRatio": 6.473911603413677, "exchange": "IDX", "marketCap": 131590388558217, "changePercent": -0.5633802816901409 }, { "last": 1820, "name": "PT Bank Syariah Indonesia (Persero) Tbk", "change": 35, "sector": "Finance", "symbol": "IDX:BRIS", "ticker": "BRIS", "volume": 7921400, "peRatio": 10.642303976947131, "exchange": "IDX", "marketCap": 83955256328125, "changePercent": 1.9607843137254901 } ], "query": "bank", "total": 49, "market": "indonesia", "hasMore": true, "nextPage": 2 } ``` --- ### Symbol One instrument with price and fundamentals, quoted in its own currency. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/symbol` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Ticker, with or without its exchange prefix (IDX:BBCA) | | `market` | enum(indonesia|america|crypto|forex|malaysia|singapore|thailand|japan|hongkong|india|uk|germany|australia|futures|cfd|bond) | query | no | Market the ticker belongs to. Default indonesia | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/symbol?symbol=BBCA&market=indonesia" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/symbol?symbol=BBCA&market=indonesia", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/symbol?symbol=BBCA&market=indonesia", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "eps": 471.8318, "low": 6325, "debt": 55359119000000, "high": 6450, "last": 6325, "name": "PT Bank Central Asia Tbk", "open": 6425, "change": -125, "market": "indonesia", "sector": "Finance", "symbol": "IDX:BBCA", "ticker": "BBCA", "volume": 153174800, "peRatio": 13.405200751623779, "revenue": 126869068000000, "currency": "IDR", "exchange": "IDX", "industry": "Major Banks", "monthLow": 5625, "provider": "tradingview", "marketCap": 779714671484375, "monthHigh": 6625, "week52Low": 4820, "week52High": 8975, "priceToBook": 2.873025943873964, "avgVolume10d": 163117410, "changePercent": -1.937984496124031, "dividendYieldPercent": 0 } ``` --- ### Markets Which markets can be scanned, and how many instruments each holds. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/markets` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `search` | string | query | no | Filter markets by id or label | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/markets?search=indo" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/markets?search=indo", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/markets?search=indo", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 16, "items": [ { "id": "indonesia", "label": "Indonesia Stock Exchange", "instrumentCount": 881 }, { "id": "america", "label": "United States", "instrumentCount": 19643 }, { "id": "crypto", "label": "Crypto", "instrumentCount": 55807 }, { "id": "forex", "label": "Forex", "instrumentCount": 6260 }, { "id": "malaysia", "label": "Malaysia", "instrumentCount": 1145 }, { "id": "singapore", "label": "Singapore", "instrumentCount": 645 }, { "id": "thailand", "label": "Thailand", "instrumentCount": 2248 }, { "id": "japan", "label": "Japan", "instrumentCount": 4393 } ], "provider": "tradingview" } ``` --- ### Chart OHLCV candles at 13 resolutions for any symbol the platform carries. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/chart` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Exchange-qualified symbol. A bare ticker uses the market's default exchange | | `market` | enum(indonesia|america|crypto|forex|malaysia|singapore|thailand|japan|hongkong|india|uk|germany|australia|futures|cfd|bond) | query | no | Market used to resolve a bare ticker. Default indonesia | | `resolution` | enum(1|3|5|15|30|45|60|120|180|240|1D|1W|1M) | query | no | Candle size in minutes, or 1D / 1W / 1M. Default 1D | | `count` | number | query | no | Number of candles. Default 200, max 1000 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/chart?symbol=IDX%3ABBCA&market=indonesia&resolution=1D&count=200" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/chart?symbol=IDX%3ABBCA&market=indonesia&resolution=1D&count=200", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/chart?symbol=IDX%3ABBCA&market=indonesia&resolution=1D&count=200", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "name": "PT Bank Central Asia Tbk", "count": 30, "market": "indonesia", "symbol": "IDX:BBCA", "candles": [ { "low": 6125, "date": "2026-06-22T02:00:00.000Z", "high": 6400, "open": 6400, "close": 6225, "volume": 193401600, "timestamp": 1782093600 }, { "low": 6075, "date": "2026-06-23T02:00:00.000Z", "high": 6200, "open": 6150, "close": 6125, "volume": 144561900, "timestamp": 1782180000 }, { "low": 5925, "date": "2026-06-24T02:00:00.000Z", "high": 6200, "open": 6125, "close": 5925, "volume": 144928800, "timestamp": 1782266400 }, { "low": 5900, "date": "2026-06-25T02:00:00.000Z", "high": 6175, "open": 5900, "close": 6025, "volume": 197935000, "timestamp": 1782352800 }, { "low": 6025, "date": "2026-06-26T02:00:00.000Z", "high": 6175, "open": 6050, "close": 6175, "volume": 163378700, "timestamp": 1782439200 }, { "low": 5925, "date": "2026-06-29T02:00:00.000Z", "high": 6200, "open": 6175, "close": 5925, "volume": 189886600, "timestamp": 1782698400 }, { "low": 5550, "date": "2026-06-30T02:00:00.000Z", "high": 5825, "open": 5775, "close": 5550, "volume": 440738300, "timestamp": 1782784800 }, { "low": 5550, "date": "2026-07-01T02:00:00.000Z", "high": 5750, "open": 5550, "close": 5600, "volume": 124123800, "timestamp": 1782871200 } ], "currency": "IDR", "exchange": "IDX", "provider": "tradingview", "timezone": "Asia/Bangkok", "resolution": "1D" } ``` --- ### Technicals 31 indicators plus buy/sell verdicts, on 10 timeframes. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/technicals` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Ticker, with or without its exchange prefix | | `market` | enum(indonesia|america|crypto|forex|malaysia|singapore|thailand|japan|hongkong|india|uk|germany|australia|futures|cfd|bond) | query | no | Market the ticker belongs to. Default indonesia | | `timeframe` | enum(1m|5m|15m|30m|1h|2h|4h|1d|1w|1M) | query | no | Timeframe the indicators are computed on. Default 1d | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/technicals?symbol=BBCA&market=indonesia&timeframe=1d" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/technicals?symbol=BBCA&market=indonesia&timeframe=1d", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/technicals?symbol=BBCA&market=indonesia&timeframe=1d", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "adx": 13.301554083059738, "atr": 188.06943171881582, "rsi": 53.67932744764375, "last": 6325, "macd": 84.52113457980977, "vwma": 6303.151581141213, "cci20": 57.43019716819662, "ema10": 6321.799747446807, "ema20": 6260.688031551343, "ema50": 6195.480231487916, "sma10": 6362.5, "sma20": 6288.75, "sma50": 6018, "ema100": 6416.569054506186, "ema200": 6963.967952901217, "market": "indonesia", "sma100": 6283.5, "sma200": 7124.375, "stochD": 43.91743522178303, "stochK": 50, "symbol": "IDX:BBCA", "ticker": "BBCA", "summary": "neutral", "momentum": -150, "provider": "tradingview", "ratingAll": 0.08787878787878788, "timeframe": "1d", "williamsR": -54.54545454545454, "macdSignal": 92.23224289033081, "bollingerLower": 6034.056556817809, "bollingerUpper": 6543.443443182191, "pivotClassicR1": 6460, "pivotClassicS1": 4730, "awesomeOscillator": 107.64705882352973, "ratingOscillators": -0.09090909090909091, "oscillatorsSummary": "neutral", "pivotClassicMiddle": 5640, "ratingMovingAverages": 0.26666666666666666, "movingAveragesSummary": "buy" } ``` --- ### Performance Trailing returns, volatility, beta and 52-week range. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/performance` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Ticker, with or without its exchange prefix | | `market` | enum(indonesia|america|crypto|forex|malaysia|singapore|thailand|japan|hongkong|india|uk|germany|australia|futures|cfd|bond) | query | no | Market the ticker belongs to. Default indonesia | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/performance?symbol=BBCA&market=indonesia" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/performance?symbol=BBCA&market=indonesia", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/performance?symbol=BBCA&market=indonesia", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "last": 6325, "name": "PT Bank Central Asia Tbk", "market": "indonesia", "symbol": "IDX:BBCA", "ticker": "BBCA", "currency": "IDR", "exchange": "IDX", "provider": "tradingview", "beta1Year": 0.677129, "week52Low": 4820, "gapPercent": -0.3875968992248062, "week52High": 8975, "ytdPercent": -21.671826625387, "avgVolume10d": 163117410, "avgVolume30d": 176751580, "week1Percent": 2.0161290322580645, "year1Percent": -24.251497005988025, "year5Percent": 4.718543046357616, "month1Percent": 13.963963963963964, "month3Percent": 6.302521008403361, "month6Percent": -12.152777777777779, "allTimePercent": 17971.428571428572, "relativeVolume10d": 0.8523013641402308, "volatilityDayPercent": 1.976284584980237, "volatilityWeekPercent": 2.415757086242275, "volatilityMonthPercent": 2.913881882241015 } ``` --- ### Financials Income, balance sheet, cash flow and the next earnings date. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/financials` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Ticker, with or without its exchange prefix | | `market` | enum(indonesia|america|malaysia|singapore|thailand|japan|hongkong|india|uk|germany|australia) | query | no | Market the ticker belongs to. Default indonesia | | `period` | enum(quarter|annual|ttm) | query | no | Reporting period. Default quarter | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/financials?symbol=BBCA&market=indonesia&period=quarter" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/financials?symbol=BBCA&market=indonesia&period=quarter", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/financials?symbol=BBCA&market=indonesia&period=quarter", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "name": "PT Bank Central Asia Tbk", "market": "indonesia", "period": "quarter", "symbol": "IDX:BBCA", "ticker": "BBCA", "revenue": 32698735000000, "currency": "IDR", "provider": "tradingview", "employees": 27937, "netIncome": 14850323000000, "totalDebt": 55359119000000, "totalAssets": 1660579336000000, "totalEquity": 270667746000000, "currentRatio": 0.125086448946293, "debtToEquity": 0.20470204833949399, "freeCashFlow": 8287156000000, "operatingIncome": 18388677000000, "lastEarningsDate": 1785231300, "nextEarningsDate": 1792065600, "totalLiabilities": 1389911590000000, "dividendYieldPercent": 0, "returnOnAssetsPercent": 3.66893228325801, "returnOnEquityPercent": 21.8239508306063, "epsForecastNextQuarter": 122.338, "dividendPayoutRatioPercent": 0 } ``` --- ### News Wire headlines attached to one instrument. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/news` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Exchange-qualified symbol. A bare ticker uses the market's default exchange | | `market` | enum(indonesia|america|crypto|forex|malaysia|singapore|thailand|japan|hongkong|india|uk|germany|australia) | query | no | Market used to resolve a bare ticker. Default indonesia | | `lang` | enum(en|id) | query | no | Headline language. Default en | | `count` | number | query | no | Maximum headlines. Default 25, max 50 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/news?symbol=IDX%3ABBCA&market=indonesia&lang=en&count=25" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/news?symbol=IDX%3ABBCA&market=indonesia&lang=en&count=25", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/news?symbol=IDX%3ABBCA&market=indonesia&lang=en&count=25", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "lang": "en", "count": 5, "items": [ { "id": "tag:reuters.com,2026:newsml_FWN43U0KR:0", "url": "https://www.tradingview.com/news/reuters.com,2026:newsml_FWN43U0KR:0-bank-central-asia-posts-half-year-profit-attributable-of-29-534-trillion-rupiah/", "title": "Bank Central Asia Posts Half-Year Profit Attributable Of 29.534 Trillion Rupiah", "source": "Reuters", "urgency": 2, "publishedAt": 1785234099, "headlineOnly": true, "publishedAtIso": "2026-07-28T10:21:39.000Z", "relatedSymbols": [ "IDX:BBCA" ] }, { "id": "tag:reuters.com,2026:newsml_FWN43U023:0", "url": "https://www.tradingview.com/news/reuters.com,2026:newsml_FWN43U023:0-bank-central-asia-posts-gross-npl-ratio-of-1-86-as-at-june-30/", "title": "Bank Central Asia Posts Gross NPL Ratio of 1.86% As At June 30", "source": "Reuters", "urgency": 2, "publishedAt": 1785232512, "headlineOnly": true, "publishedAtIso": "2026-07-28T09:55:12.000Z", "relatedSymbols": [ "IDX:BBCA" ] }, { "id": "urn:summary_document_slides:quartr.com:3910873:0", "url": "https://www.tradingview.com/news/urn:summary_document_slides:quartr.com:3910873:0-bbca-strong-asset-and-loan-growth-digital-dominance-and-resilient-asset-quality-in-1h26/", "title": "BBCA: Strong asset and loan growth, digital dominance, and resilient asset quality in 1H26", "source": "Quartr", "urgency": 2, "publishedAt": 1785231802, "headlineOnly": false, "publishedAtIso": "2026-07-28T09:43:22.000Z", "relatedSymbols": [ "IDX:BBCA" ] }, { "id": "urn:summary_document_report:quartr.com:3686476:0", "url": "https://www.tradingview.com/news/urn:summary_document_report:quartr.com:3686476:0-bbca-net-profit-rose-2-year-over-year-with-strong-capital-and-improved-asset-quality/", "title": "BBCA: Net profit rose 2% year-over-year, with strong capital and improved asset quality", "source": "Quartr", "urgency": 2, "publishedAt": 1785231791, "headlineOnly": false, "publishedAtIso": "2026-07-28T09:43:11.000Z", "relatedSymbols": [ "IDX:BBCA" ] }, { "id": "tag:reuters.com,2026:newsml_L4N43G12X:0", "url": "https://www.tradingview.com/news/reuters.com,2026:newsml_L4N43G12X:0-beaten-down-indonesian-stocks-feel-the-love-as-ai-rally-cools/", "title": "Beaten-down Indonesian stocks feel the love as AI rally cools", "source": "Reuters", "urgency": 2, "publishedAt": 1784588400, "headlineOnly": true, "publishedAtIso": "2026-07-20T23:00:00.000Z", "relatedSymbols": [ "IDX:COMPOSITE", "KRX:KOSPI", "IDX:INDF", "IDX:BBCA", "IDX:INCO", "IDX:ADMR", "IDX:AMMN" ] } ], "symbol": "IDX:BBCA", "provider": "tradingview" } ``` --- ### Search Resolve free text to instruments, with ISIN and listing currency. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/search` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | yes | Ticker, company name or ISIN | | `exchange` | string | query | no | Restrict to one exchange | | `type` | enum(all|stock|futures|forex|index|crypto|bond|economic|fund) | query | no | Instrument type. Default all | | `count` | number | query | no | Maximum results. Default 20, max 50 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/search?q=bank%20central%20asia&exchange=IDX&type=all&count=20" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/search?q=bank%20central%20asia&exchange=IDX&type=all&count=20", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/search?q=bank%20central%20asia&exchange=IDX&type=all&count=20", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 5, "items": [ { "isin": "ID1000109507", "name": "PT Bank Central Asia Tbk", "type": "stock", "ipoAt": 959738400, "symbol": "IDX:BBCA", "ticker": "BBCA", "country": "ID", "subType": "common", "currency": "IDR", "exchange": "IDX" }, { "isin": "ID1000109507", "name": "PT Bank Central Asia Tbk", "type": "stock", "symbol": "GETTEX:BZG2", "ticker": "BZG2", "country": "DE", "subType": "common", "currency": "EUR", "exchange": "GETTEX" }, { "isin": "ID1000109507", "name": "PT Bank Central Asia Tbk", "type": "stock", "symbol": "LSX:A0NBWE", "ticker": "A0NBWE", "country": "DE", "subType": "common", "currency": "EUR", "exchange": "LSX" }, { "isin": "ID1000109507", "name": "PT Bank Central Asia Tbk", "type": "stock", "symbol": "LS:A0NBWE", "ticker": "A0NBWE", "country": "DE", "subType": "common", "currency": "EUR", "exchange": "LS" }, { "isin": "ID1000109507", "name": "PT Bank Central Asia Tbk", "type": "stock", "symbol": "FWB:BZG2", "ticker": "BZG2", "country": "DE", "subType": "common", "currency": "EUR", "exchange": "FWB" } ], "query": "bank central asia", "provider": "tradingview" } ``` --- ### Economic calendar Macro releases with actual, forecast and previous values. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:tradingview/calendar` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `countries` | string | query | no | Comma-separated ISO country codes. Default ID | | `from` | string | query | no | Window start, YYYY-MM-DD. Defaults to today | | `to` | string | query | no | Window end, YYYY-MM-DD. Defaults to 7 days after the start | | `importance` | enum(all|high|medium|low) | query | no | Minimum release importance. Default all | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:tradingview/calendar?countries=ID%2CUS&from=2026-08-01&to=2026-08-08&importance=all" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:tradingview/calendar?countries=ID%2CUS&from=2026-08-01&to=2026-08-08&importance=all", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:tradingview/calendar?countries=ID%2CUS&from=2026-08-01&to=2026-08-08&importance=all", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "to": "2026-08-09", "from": "2026-08-02", "count": 94, "items": [ { "id": "396409", "date": "2026-08-03T00:30:00.000Z", "title": "S&P Global Manufacturing PMI", "period": "Jul", "source": "S&P Global", "country": "ID", "currency": "IDR", "previous": 46.9, "indicator": "Manufacturing PMI", "importance": "low", "description": "The S&P Global Indonesia Manufacturing Purchasing Managers’ Index measures the performance of the manufacturing sector and is derived from a survey of 400 manufacturing companies. The Manufacturing Purchasing Managers Index is based on five individual indexes with the following weights: New Orders (30 percent), Output (25 percent), Employment (20 percent), Suppliers’ Delivery Times (15 percent) and Stock of Items Purchased (10 percent), with the Delivery Times index inverted so that it moves in a comparable direction. A reading above 50 indicates an expansion of the manufacturing sector compared to the previous month; below 50 represents a contraction; while 50 indicates no change. This is only a limited sample of PMI headline data displayed on the Customer’s service, under licence from S&P Global. Full historic PMI headline data and all other PMI sub-index data and histories are available on subscription from S&P Global. Contact economics@spglobal.com for more details." }, { "id": "403951", "date": "2026-08-03T04:00:00.000Z", "unit": "%", "title": "Exports YoY", "period": "Jun", "source": "Statistics Indonesia", "country": "ID", "currency": "IDR", "forecast": 0.25, "previous": -5.73, "indicator": "Exports YoY", "importance": "low", "description": "Exports have been an engine of economic growth in Indonesia. However, after reaching a peak in 2012, it have been in a steady decline due to lower commodity prices and dwindling global demand. Major exports are: oil and gas (12.4 percent of the total exports, of those gas 6.9 percent, crude oil 4.3 percent and oil products 1.2 percent); animal and vegetable fats and oils (14 percent); and electrical equipment and machinery (10.45 percent). Other exports include: footwear, part of such articles (3.4 percent); garments not knitted (3 percent) and ores, slag and ash (2.5 percent). Major export partners are: the United States (11.6 percent), China (10 percent of the total exports), Japan (9.9 percent), India (8.8 percent) and Singapore (7 percent)." }, { "id": "404148", "date": "2026-08-03T04:00:00.000Z", "unit": "%", "title": "Inflation Rate MoM", "period": "Jul", "source": "Statistics Indonesia", "country": "ID", "currency": "IDR", "forecast": 0.1, "previous": 0.44, "indicator": "Inflation Rate Mom", "importance": "low", "description": "In Indonesia, the consumer price index (CPI) is a measure of change over a specified period of time in the general level of prices of goods and services that a given population acquires, uses or pays for consumption. The CPI covers the urban population in the 44 provincial capital cities and regency capital cities in the country. The most important categories in Indonesia's CPI are Food, drinks and tobacco (25 percent of the total weight), Housing, water, electricity and household fuel (20.4 percent), Transportation (12.4 percent), and Food and beverage providers/Restaurant (8.7 percent). The index also includes: Household equipment, tools and routine maintenance (6 percent); Personal care and other services (5.9 percent); Information, communication and financial services (5.8 percent); Education (5.6 percent); and Clothing and footwear (5.4 percent). Health and Recreation, sports and culture account for the remaining 4.7 percent." }, { "id": "407218", "date": "2026-08-03T04:00:00.000Z", "unit": "%", "title": "Core Inflation Rate YoY", "period": "Jul", "source": "Statistics Indonesia", "country": "ID", "currency": "IDR", "forecast": 2.8, "previous": 2.76, "indicator": "Core Inflation Rate", "importance": "low", "description": "In Indonesia, the core inflation rate tracks changes in prices that consumers pay for a basket of goods which excludes some volatile price items." }, { "id": "409373", "date": "2026-08-03T04:00:00.000Z", "unit": "%", "title": "Imports YoY", "period": "Jun", "source": "Statistics Indonesia", "country": "ID", "currency": "IDR", "forecast": 25.3, "previous": 22.16, "indicator": "Imports YoY", "importance": "low", "description": "From 2004 to 2012, imports to Indonesia tripled, as large portion of the population entered middle-class and propelled higher purchases of oil and consumption goods. However, starting in mid-2013, imports have been declining due to low commodity prices and weak domestic consumption and investment. Main imports products are: oil and gas (around 17 percent of total imports), nuclear reactions, boilers, mechanical appliances (19 percent); iron and steel (5.4 percent), organic chemical materials (4.8 percent) and vehicles (4.5 percent). Main import partners are: China (25 percent of the total imports), Japan (11 percent), Singapore (7.6 percent), Thailand (6.8 percent) and the United States (6.4 percent)." }, { "id": "410705", "date": "2026-08-03T04:00:00.000Z", "unit": "$", "scale": "B", "title": "Balance of Trade", "period": "Jun", "source": "Statistics Indonesia", "country": "ID", "currency": "IDR", "forecast": -0.79, "previous": -1.61, "indicator": "Balance of Trade", "importance": "medium", "description": "Since the 1970’s Indonesia has been recording consistent trade surpluses due to robust exports growth. However, from 2012 to 2014 the country started recording trade deficits, as exports shrank due to slowdown in the global economy and fall in commodity prices. In 2015, trade balance swang again to surplus due to almost 20 percent fall in imports. In recent years, the biggest trade deficits were recorded with China, Thailand, Japan, Germany and South Korea. Indonesia records trade surpluses mainly with India, United States, and Malaysia." }, { "id": "414341", "date": "2026-08-03T04:00:00.000Z", "unit": "%", "title": "Inflation Rate YoY", "period": "Jul", "source": "Statistics Indonesia", "country": "ID", "currency": "IDR", "forecast": 3.2, "previous": 3.34, "indicator": "Inflation Rate", "importance": "medium", "description": "In Indonesia, the consumer price index (CPI) is a measure of change over a specified period of time in the general level of prices of goods and services that a given population acquires, uses or pays for consumption. The CPI covers the urban population in the 44 provincial capital cities and regency capital cities in the country. The most important categories in Indonesia's CPI are Food, drinks and tobacco (25 percent of the total weight), Housing, water, electricity and household fuel (20.4 percent), Transportation (12.4 percent), and Food and beverage providers/Restaurant (8.7 percent). The index also includes: Household equipment, tools and routine maintenance (6 percent); Personal care and other services (5.9 percent); Information, communication and financial services (5.8 percent); Education (5.6 percent); and Clothing and footwear (5.4 percent). Health and Recreation, sports and culture account for the remaining 4.7 percent." }, { "id": "414584", "date": "2026-08-03T05:00:00.000Z", "title": "Tourist Arrivals YoY", "period": "Jun", "source": "Statistics Indonesia", "country": "ID", "currency": "IDR", "previous": 5.83, "indicator": "Tourist Arrivals", "importance": "low", "description": "In Indonesia, Tourist Arrivals refers to the number of foreign tourists visiting the country." } ], "provider": "tradingview", "countries": [ "ID", "US" ] } ``` --- ## Yahoo Finance **Category:** finance · **Slug:** `yahoo-finance` **Detail page:** https://zpi.web.id/api/finance/yahoo-finance Global quotes, fundamentals, statements, options, earnings, ownership and analyst coverage. Jakarta listings via the .JK suffix. **Tags:** stocks, quotes, fundamentals, options, earnings, analysts ### Quote Live quotes for up to 20 symbols at once. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/quote` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbols` | string | query | yes | Comma-separated symbols, max 20. Jakarta listings use the .JK suffix | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/quote?symbols=BBCA.JK%2CAAPL" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/quote?symbols=BBCA.JK%2CAAPL", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/quote?symbols=BBCA.JK%2CAAPL", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 2, "items": [ { "ask": 6350, "bid": 6325, "eps": 471.84, "low": 6325, "high": 6450, "last": 6325, "name": "PT Bank Central Asia Tbk", "open": 6425, "type": "EQUITY", "change": -125, "symbol": "BBCA.JK", "volume": 153174800, "peRatio": 13.404968, "currency": "IDR", "exchange": "Jakarta", "avgVolume": 266815186, "bookValue": 2108.889, "marketCap": 776974079361024, "week52Low": 4820, "week52High": 8975, "marketState": "CLOSED", "changePercent": -1.9379845, "lastTimestamp": 1785489296, "previousClose": 6450, "fiftyDayAverage": 6018.5, "sharesOutstanding": 122841751300, "dividendYieldPercent": 5.63, "twoHundredDayAverage": 7081.25 }, { "ask": 310.96, "bid": 306.17, "eps": 8.71, "low": 300, "high": 310.69, "last": 308.91, "name": "Apple Inc.", "open": 304.81, "type": "EQUITY", "change": -24.52, "symbol": "AAPL", "volume": 127398021, "peRatio": 35.46613, "currency": "USD", "exchange": "NasdaqGS", "avgVolume": 56470782, "bookValue": 7.26, "marketCap": 4537070911488, "week52Low": 201.68, "week52High": 344.57, "marketState": "CLOSED", "changePercent": -7.35386, "lastTimestamp": 1785528001, "previousClose": 333.43, "fiftyDayAverage": 309.4994, "sharesOutstanding": 14687356000, "dividendYieldPercent": 0.35, "twoHundredDayAverage": 277.9605 } ], "provider": "yahoo" } ``` --- ### Summary Valuation, margins, balance sheet and dividends for one instrument. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/summary` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Instrument symbol. Jakarta listings use the .JK suffix | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/summary?symbol=BBCA.JK" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/summary?symbol=BBCA.JK", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/summary?symbol=BBCA.JK", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "eps": 471.84, "low": 6325, "beta": 0, "high": 6450, "last": 6325, "name": "PT Bank Central Asia Tbk", "open": 6425, "type": "EQUITY", "change": -125, "sector": "Financial Services", "symbol": "BBCA.JK", "volume": 153174800, "country": "Indonesia", "peRatio": 13.404968, "revenue": 109295182020608, "website": "https://www.bca.co.id", "currency": "IDR", "exchange": "Jakarta", "industry": "Banks - Regional", "provider": "yahoo", "avgVolume": 266815186, "employees": 27728, "forwardPe": 13.109351, "marketCap": 776974079361024, "totalCash": 78018609414144, "totalDebt": 52021302394880, "week52Low": 4820, "week52High": 8975, "priceToBook": 2.9992096, "dividendRate": 356, "changePercent": -1.937984, "previousClose": 6450, "exDividendDate": 1781654400, "enterpriseValue": 751206959939584, "targetMeanPrice": 8074.84, "sharesOutstanding": 122841751300, "grossMarginPercent": 0, "payoutRatioPercent": 75.42, "recommendationMean": 1.38462, "profitMarginPercent": 53.118, "dividendYieldPercent": 5.63, "revenueGrowthPercent": 2.5, "returnOnEquityPercent": 21.818, "operatingMarginPercent": 66.751 } ``` --- ### Historical Candles from one minute to one month, up to max range. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/historical` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Instrument symbol. Jakarta listings use the .JK suffix | | `range` | enum(1d|5d|1mo|3mo|6mo|1y|2y|5y|10y|ytd|max) | query | no | Look-back window. Default 1mo | | `interval` | enum(1m|2m|5m|15m|30m|60m|90m|1h|1d|5d|1wk|1mo|3mo) | query | no | Candle size. Default 1d. Intraday sizes only cover recent ranges | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/historical?symbol=BBCA.JK&range=1mo&interval=1d" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/historical?symbol=BBCA.JK&range=1mo&interval=1d", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/historical?symbol=BBCA.JK&range=1mo&interval=1d", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "name": "PT Bank Central Asia Tbk", "count": 24, "range": "1mo", "symbol": "BBCA.JK", "candles": [ { "low": 5550, "date": "2026-06-30", "high": 5825, "open": 5775, "close": 5550, "volume": 440738300, "adjClose": 5550, "timestamp": 1782784800 }, { "low": 5550, "date": "2026-07-01", "high": 5750, "open": 5550, "close": 5600, "volume": 124123800, "adjClose": 5600, "timestamp": 1782871200 }, { "low": 5625, "date": "2026-07-02", "high": 5875, "open": 5650, "close": 5800, "volume": 145119400, "adjClose": 5800, "timestamp": 1782957600 }, { "low": 5900, "date": "2026-07-03", "high": 6150, "open": 5925, "close": 6050, "volume": 200465200, "adjClose": 6050, "timestamp": 1783044000 }, { "low": 5975, "date": "2026-07-06", "high": 6175, "open": 6050, "close": 6125, "volume": 148684900, "adjClose": 6125, "timestamp": 1783303200 }, { "low": 6150, "date": "2026-07-07", "high": 6300, "open": 6200, "close": 6300, "volume": 183472100, "adjClose": 6300, "timestamp": 1783389600 }, { "low": 6175, "date": "2026-07-08", "high": 6325, "open": 6300, "close": 6175, "volume": 181123400, "adjClose": 6175, "timestamp": 1783476000 }, { "low": 6050, "date": "2026-07-09", "high": 6200, "open": 6100, "close": 6200, "volume": 181155800, "adjClose": 6200, "timestamp": 1783562400 } ], "currency": "IDR", "exchange": "Jakarta", "interval": "1d", "provider": "yahoo", "timezone": "Asia/Jakarta" } ``` --- ### Search Resolve a name or ticker to instruments, with related headlines. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/search` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `q` | string | query | yes | Company name or ticker | | `type` | enum(all|quotes|news) | query | no | Which sections to return. Default all | | `count` | number | query | no | Results per section. Default 10, max 20 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/search?q=bank%20central%20asia&type=all&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/search?q=bank%20central%20asia&type=all&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/search?q=bank%20central%20asia&type=all&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "news": [], "query": "bank central asia", "quotes": [ { "name": "PT Bank Central Asia Tbk", "type": "EQUITY", "sector": "Financial Services", "symbol": "BBCA.JK", "exchange": "Jakarta", "industry": "Banks—Regional" }, { "name": "PT Bank Central Asia Tbk", "type": "EQUITY", "sector": "Financial Services", "symbol": "BZG.F", "exchange": "Frankfurt", "industry": "Banks—Regional" }, { "name": "PT Bank Central Asia Tbk", "type": "EQUITY", "sector": "Financial Services", "symbol": "BZG2.SG", "exchange": "Stuttgart", "industry": "Banks—Regional" }, { "name": "PT Bank Central Asia Tbk", "type": "EQUITY", "sector": "Financial Services", "symbol": "PBCRY", "exchange": "OTC Markets", "industry": "Banks—Regional" }, { "name": "PT Bank Central Asia Tbk", "type": "EQUITY", "sector": "Financial Services", "symbol": "BZG2.MU", "exchange": "Munich", "industry": "Banks—Regional" } ], "provider": "yahoo" } ``` --- ### Screener Prebuilt market screens — gainers, losers, most active and more. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/screener` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `screen` | enum(day_gainers|day_losers|most_actives|growth_technology_stocks|undervalued_growth_stocks|undervalued_large_caps|aggressive_small_caps|small_cap_gainers|most_shorted_stocks|portfolio_anchors|solid_large_growth_funds|solid_midcap_growth_funds|conservative_foreign_funds|high_yield_bond) | query | no | Which prebuilt screen to read. Default day_gainers | | `page` | number | query | no | Page number. Default 1 | | `count` | number | query | no | Rows per page. Default 25, max 100 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/screener?screen=day_gainers&page=1&count=25" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/screener?screen=day_gainers&page=1&count=25", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/screener?screen=day_gainers&page=1&count=25", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 5, "items": [ { "last": 744.54, "name": "IES Holdings, Inc.", "type": "EQUITY", "change": 173, "symbol": "IESC", "volume": 485145, "peRatio": 33.10538, "currency": "USD", "exchange": "NasdaqGM", "marketCap": 14834130944, "changePercent": 30.2691 }, { "last": 60.43, "name": "AXT, Inc.", "type": "EQUITY", "change": 13.49, "symbol": "AXTI", "volume": 29509839, "peRatio": 2014.3334, "currency": "USD", "exchange": "NasdaqGS", "marketCap": 3953522944, "changePercent": 28.7388 }, { "last": 121.21, "name": "Integer Holdings Corporation", "type": "EQUITY", "change": 20.35, "symbol": "ITGR", "volume": 2355408, "peRatio": 30.151741, "currency": "USD", "exchange": "NYSE", "marketCap": 4115666176, "changePercent": 20.1765 }, { "last": 86, "name": "Ambarella, Inc.", "type": "EQUITY", "change": 11.91, "symbol": "AMBA", "volume": 9037920, "currency": "USD", "exchange": "NasdaqGS", "marketCap": 3772663808, "changePercent": 16.075 }, { "last": 271.58, "name": "Amazon.com, Inc.", "type": "EQUITY", "change": 36.08, "symbol": "AMZN", "volume": 125921078, "peRatio": 21.83119, "currency": "USD", "exchange": "NasdaqGS", "marketCap": 2921415835648, "changePercent": 15.3206 } ], "title": "Day Gainers", "total": 146, "screen": "day_gainers", "hasMore": true, "nextPage": 2, "provider": "yahoo" } ``` --- ### News Headlines for one instrument. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/news` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Instrument symbol. Jakarta listings use the .JK suffix | | `count` | number | query | no | Maximum headlines. Default 20, max 50 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/news?symbol=BBCA.JK&count=20" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/news?symbol=BBCA.JK&count=20", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/news?symbol=BBCA.JK&count=20", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 5, "items": [ { "url": "https://www.thestreet.com/investing/apples-record-iphone-boom-just-became-a-wall-street-trap?.tsrc=rss", "title": "Apple’s record iPhone boom just became a Wall Street trap", "description": "Apple (AAPL) reported the type of quarter that should have sent its stock price skyrocketing. Revenue rose 16% from a year earlier to $109 billion, while profit increased 26% to $29 billion. iPhone sales jumped 22%, Mac revenue climbed 25%, and the iPhone 17 produced the biggest product launch in ...", "publishedAt": 1785632580, "publishedAtIso": "2026-08-02T01:03:00.000Z" }, { "url": "https://finance.yahoo.com/technology/articles/us-schools-ditching-chromebooks-macbooks-233015401.html?.tsrc=rss", "title": "US Schools Are Ditching Chromebooks for MacBooks by the Thousands— Apple Just Named Names", "description": "Apple‘s latest earnings call revealed a wave of K-12 districts abandoning Chromebooks and Windows machines in favor of the company’s new MacBook Neo, with Chief Financial Officer Kevan Parekh naming specific schools driving the shift. Districts Go All-In on MacBook...", "publishedAt": 1785627015, "publishedAtIso": "2026-08-01T23:30:15.000Z" }, { "url": "https://www.thestreet.com/technology/apple-tim-cook-admits-ai-raises-price-products?.tsrc=rss", "title": "Apple CEO sends strong warning on AI and price of Apple products", "description": "Tim Cook spent part of July 30 thanking Apple shareholders at the end of what he confirmed would be his last earnings call as CEO. John Ternus takes over Sept. 1, and Cook moves to executive chairman. The farewell was warm. The statement that followed was not. Cook described Apple's memory cost ...", "publishedAt": 1785614820, "publishedAtIso": "2026-08-01T20:07:00.000Z" }, { "url": "https://finance.yahoo.com/markets/stocks/articles/apples-services-slowdown-weird-culprit-193027566.html?.tsrc=rss", "title": "Apple's Services Slowdown Has a Weird Culprit: No F1 Movie This Year", "description": "Apple Inc. said its red-hot Services division lost some momentum in the fiscal third quarter, with CFO Kevan Parekh pointing to an unusual culprit: there was no blockbuster “F1“ movie release this year to boost Apple TV+ revenue. Apple’s fiscal...", "publishedAt": 1785612627, "publishedAtIso": "2026-08-01T19:30:27.000Z" }, { "url": "https://finance.yahoo.com/technology/articles/still-buy-next-smartphone-subscribe-184727955.html?.tsrc=rss", "title": "Should you still buy your next smartphone — or subscribe to it instead?", "description": "Apple's new Upgrade program is the latest sign that smartphone ownership is changing.", "publishedAt": 1785610047, "publishedAtIso": "2026-08-01T18:47:27.000Z" } ], "symbol": "AAPL", "provider": "yahoo" } ``` --- ### Options Full option chain with implied volatility and open interest. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/options` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Underlying symbol | | `expiration` | number | query | no | Expiry as a unix timestamp. Defaults to the nearest expiry | | `side` | enum(all|calls|puts) | query | no | Which side of the chain to return. Default all | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/options?symbol=AAPL&expiration=1785715200&side=all" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/options?symbol=AAPL&expiration=1785715200&side=all", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/options?symbol=AAPL&expiration=1785715200&side=all", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "last": 308.91, "puts": [ { "ask": 0.18, "bid": 0, "change": 0, "strike": 235, "volume": 2, "contract": "AAPL260803P00235000", "currency": "USD", "lastPrice": 0.01, "expiration": 1785715200, "inTheMoney": false, "lastTradeAt": 1785339591, "openInterest": 1, "changePercent": 0, "impliedVolatility": 1.5546897265624997 }, { "ask": 0.04, "bid": 0, "change": -0.02, "strike": 260, "volume": 308, "contract": "AAPL260803P00260000", "currency": "USD", "lastPrice": 0.02, "expiration": 1785715200, "inTheMoney": false, "lastTradeAt": 1785520604, "openInterest": 28, "changePercent": -50, "impliedVolatility": 0.867188828125 }, { "ask": 0.04, "bid": 0, "change": -0.05, "strike": 270, "volume": 155, "contract": "AAPL260803P00270000", "currency": "USD", "lastPrice": 0.02, "expiration": 1785715200, "inTheMoney": false, "lastTradeAt": 1785526032, "openInterest": 78, "changePercent": -71.42857, "impliedVolatility": 0.6953155468750001 }, { "ask": 0.04, "bid": 0, "change": -0.05, "strike": 275, "volume": 412, "contract": "AAPL260803P00275000", "currency": "USD", "lastPrice": 0.02, "expiration": 1785715200, "inTheMoney": false, "lastTradeAt": 1785527121, "openInterest": 7, "changePercent": -71.42857, "impliedVolatility": 0.6093789062500001 }, { "ask": 0.05, "bid": 0.02, "change": -0.06, "strike": 280, "volume": 2776, "contract": "AAPL260803P00280000", "currency": "USD", "lastPrice": 0.02, "expiration": 1785715200, "inTheMoney": false, "lastTradeAt": 1785527977, "openInterest": 152, "changePercent": -75, "impliedVolatility": 0.5585981640625001 }, { "ask": 0.06, "bid": 0.02, "change": -0.07000001, "strike": 282.5, "volume": 482, "contract": "AAPL260803P00282500", "currency": "USD", "lastPrice": 0.02, "expiration": 1785715200, "inTheMoney": false, "lastTradeAt": 1785527891, "openInterest": 41, "changePercent": -77.77779, "impliedVolatility": 0.5214891601562499 }, { "ask": 0.07, "bid": 0.03, "change": -0.089999996, "strike": 285, "volume": 4531, "contract": "AAPL260803P00285000", "currency": "USD", "lastPrice": 0.03, "expiration": 1785715200, "inTheMoney": false, "lastTradeAt": 1785527880, "openInterest": 63, "changePercent": -75, "impliedVolatility": 0.5136767382812499 }, { "ask": 0.07, "bid": 0.03, "change": -0.06, "strike": 287.5, "volume": 3724, "contract": "AAPL260803P00287500", "currency": "USD", "lastPrice": 0.06, "expiration": 1785715200, "inTheMoney": false, "lastTradeAt": 1785527995, "openInterest": 364, "changePercent": -50, "impliedVolatility": 0.46680220703125 } ], "calls": [ { "ask": 80.8, "bid": 77, "change": 0, "strike": 230, "contract": "AAPL260803C00230000", "currency": "USD", "lastPrice": 98.35, "expiration": 1785715200, "inTheMoney": true, "lastTradeAt": 1784902378, "openInterest": 1, "changePercent": 0, "impliedVolatility": 2.7900420874023437 }, { "ask": 56.05, "bid": 52.25, "change": 0, "strike": 255, "volume": 1, "contract": "AAPL260803C00255000", "currency": "USD", "lastPrice": 82.85, "expiration": 1785715200, "inTheMoney": true, "lastTradeAt": 1785247209, "openInterest": 1, "changePercent": 0, "impliedVolatility": 1.3056675341796873 }, { "ask": 33.55, "bid": 29.55, "change": -38.83, "strike": 277.5, "volume": 7, "contract": "AAPL260803C00277500", "currency": "USD", "lastPrice": 23.47, "expiration": 1785715200, "inTheMoney": true, "lastTradeAt": 1785520620, "openInterest": 2, "changePercent": -62.32745, "impliedVolatility": 0.7304714453125 }, { "ask": 30.6, "bid": 27.15, "change": -31.699999, "strike": 280, "volume": 147, "contract": "AAPL260803C00280000", "currency": "USD", "lastPrice": 22.1, "expiration": 1785715200, "inTheMoney": true, "lastTradeAt": 1785521658, "openInterest": 4, "changePercent": -58.921932, "impliedVolatility": 1.1828654138183592 }, { "ask": 20.6, "bid": 17.35, "change": -33.51, "strike": 290, "volume": 142, "contract": "AAPL260803C00290000", "currency": "USD", "lastPrice": 18.25, "expiration": 1785715200, "inTheMoney": true, "lastTradeAt": 1785526217, "openInterest": 12, "changePercent": -64.74111, "impliedVolatility": 0.8745129736328124 }, { "ask": 15.15, "bid": 13.15, "change": -24.970001, "strike": 295, "volume": 1824, "contract": "AAPL260803C00295000", "currency": "USD", "lastPrice": 14, "expiration": 1785715200, "inTheMoney": true, "lastTradeAt": 1785527826, "openInterest": 34, "changePercent": -64.074936, "impliedVolatility": 0.6372106591796876 }, { "ask": 12.75, "bid": 10.75, "change": -22.819998, "strike": 297.5, "volume": 1067, "contract": "AAPL260803C00297500", "currency": "USD", "lastPrice": 13.6, "expiration": 1785715200, "inTheMoney": true, "lastTradeAt": 1785527988, "openInterest": 21, "changePercent": -62.657875, "impliedVolatility": 0.57617611328125 }, { "ask": 10.4, "bid": 9.1, "change": -24.779999, "strike": 300, "volume": 14427, "contract": "AAPL260803C00300000", "currency": "USD", "lastPrice": 9.43, "expiration": 1785715200, "inTheMoney": true, "lastTradeAt": 1785527995, "openInterest": 38, "changePercent": -72.43496, "impliedVolatility": 0.5170946728515625 } ], "count": 82, "symbol": "AAPL", "currency": "USD", "provider": "yahoo", "expiration": 1785715200, "expirations": [ 1785715200, 1785888000, 1786060800, 1786665600, 1787270400, 1787875200, 1788480000, 1789689600 ], "strikeCount": 50 } ``` --- ### Insights Third-party technical outlooks, valuation standing and developments. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/insights` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Instrument symbol. Jakarta listings use the .JK suffix | | `count` | number | query | no | Significant developments to return. Default 10, max 30 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/insights?symbol=AAPL&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/insights?symbol=AAPL&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/insights?symbol=AAPL&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 1, "items": [ { "date": "2026-07-29", "headline": "Qualcomm CEO - Our Two Near Term, Custom Silicon Wins Will Be Revenue Generating In The December Quarter - Conf Call" } ], "sector": "Technology", "symbol": "AAPL", "support": 230.4, "provider": "yahoo", "stopLoss": 281.086598, "resistance": 311.4, "companyHiring": 0.9512999999999999, "longTermOutlook": { "score": 1, "summary": "There is one bullish event.", "direction": "Bullish", "indexDirection": "Bullish", "sectorDirection": "Bullish", "scoreDescription": "Weak Bullish Evidence" }, "researchProvider": "Trading Central", "shortTermOutlook": { "score": 4, "summary": "Recent bearish events outweigh bullish events.", "direction": "Bearish", "indexDirection": "Bullish", "sectorDirection": "Bearish", "scoreDescription": "Very Strong Bearish Evidence" }, "valuationDiscount": "-8%", "valuationDescription": "Overvalued", "companyInnovativeness": 0.9981, "companySustainability": 0.16519999999999999, "companyEarningsReports": 0.8412000000000001, "valuationRelativeValue": "Premium", "companyInsiderSentiment": 0.355, "intermediateTermOutlook": { "score": 1, "summary": "Recent bearish events outweigh bullish events.", "direction": "Bearish", "indexDirection": "Neutral", "sectorDirection": "Bearish", "scoreDescription": "Weak Bearish Evidence" } } ``` --- ### Holders Insider and institutional ownership, plus insider transactions. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/holders` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Instrument symbol. Jakarta listings use the .JK suffix | | `count` | number | query | no | Rows per list. Default 10, max 50 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/holders?symbol=AAPL&count=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/holders?symbol=AAPL&count=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/holders?symbol=AAPL&count=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 5, "funds": [ { "value": 144017368370, "shares": 466211410, "reportDate": 1774915200, "heldPercent": 3.17, "organization": "VANGUARD INDEX FUNDS-Vanguard Total Stock Market Index Fund", "changePercent": 0.4 }, { "value": 115247571447, "shares": 373078146, "reportDate": 1774915200, "heldPercent": 2.54, "organization": "VANGUARD INDEX FUNDS-Vanguard 500 Index Fund", "changePercent": 0.12 }, { "value": 62606587179, "shares": 202669342, "reportDate": 1782777600, "heldPercent": 1.38, "organization": "iShares Trust-iShares Core S&P 500 ETF", "changePercent": 4.78 }, { "value": 58202930816, "shares": 188413875, "reportDate": 1782777600, "heldPercent": 1.28, "organization": "Fidelity Concord Street Trust-Fidelity 500 Index Fund", "changePercent": 0.29 }, { "value": 54825648946, "shares": 177480976, "reportDate": 1782777600, "heldPercent": 1.21, "organization": "SPDR S&P 500 ETF TRUST-State Street SPDR S&P 500 ETF Trust", "changePercent": 0.24 } ], "items": [ { "value": 353607867928, "shares": 1144695425, "reportDate": 1774915200, "heldPercent": 7.79, "organization": "Blackrock Inc.", "changePercent": -0.86 }, { "value": 294653080436, "shares": 953847648, "reportDate": 1774915200, "heldPercent": 6.49, "organization": "Vanguard Capital Management LLC", "changePercent": 100 }, { "value": 186069286860, "shares": 602341409, "reportDate": 1774915200, "heldPercent": 4.1, "organization": "State Street Corporation", "changePercent": -0.28 }, { "value": 113869464610, "shares": 368616954, "reportDate": 1774915200, "heldPercent": 2.51, "organization": "Geode Capital Management, LLC", "changePercent": 2.96 }, { "value": 102384221873, "shares": 331437055, "reportDate": 1774915200, "heldPercent": 2.26, "organization": "Vanguard Portfolio Management LLC", "changePercent": 100 } ], "symbol": "AAPL", "provider": "yahoo", "insiderTrades": [ { "at": 1781568000, "name": "BORDERS BEN", "value": 34236, "shares": 116, "relation": "Officer", "transaction": "Sale at price 295.14 per share." }, { "at": 1781481600, "name": "NEWSTEAD JENNIFER", "shares": 30104, "relation": "General Counsel" }, { "at": 1781481600, "name": "BORDERS BEN", "shares": 240, "relation": "Officer" }, { "at": 1779840000, "name": "LEVINSON ARTHUR D", "value": 15551000, "shares": 50000, "relation": "Director", "transaction": "Sale at price 311.02 per share." }, { "at": 1779840000, "name": "LEVINSON ARTHUR D", "value": 0, "shares": 65000, "relation": "Director", "transaction": "Stock Gift at price 0.00 per share." } ], "institutionsCount": 7659, "insidersHeldPercent": 1.637, "institutionsHeldPercent": 65.734, "institutionsFloatHeldPercent": 66.828 } ``` --- ### Earnings Reported vs consensus EPS, surprise, and forward estimates. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/earnings` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Instrument symbol. Jakarta listings use the .JK suffix | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/earnings?symbol=AAPL" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/earnings?symbol=AAPL", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/earnings?symbol=AAPL", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 4, "items": [ { "period": "-4q", "currency": "USD", "epsActual": 1.85, "quarterEnd": 1759190400, "epsEstimate": 1.76993, "epsDifference": 0.08, "surprisePercent": 4.52 }, { "period": "-3q", "currency": "USD", "epsActual": 2.84, "quarterEnd": 1767139200, "epsEstimate": 2.6708, "epsDifference": 0.17, "surprisePercent": 6.34 }, { "period": "-2q", "currency": "USD", "epsActual": 2.01, "quarterEnd": 1774915200, "epsEstimate": 1.94275, "epsDifference": 0.07, "surprisePercent": 3.46 }, { "period": "-1q", "currency": "USD", "epsActual": 2.02, "quarterEnd": 1782777600, "epsEstimate": 1.89243, "epsDifference": 0.13, "surprisePercent": 6.74 } ], "annual": [ { "year": 2022, "revenue": 394328000000, "earnings": 99803000000 }, { "year": 2023, "revenue": 383285000000, "earnings": 96995000000 }, { "year": 2024, "revenue": 391035000000, "earnings": 93736000000 }, { "year": 2025, "revenue": 416161000000, "earnings": 112010000000 } ], "symbol": "AAPL", "currency": "USD", "provider": "yahoo", "estimates": [ { "epsLow": 1.95, "period": "0q", "endDate": "2026-09-30", "epsHigh": 2.04, "epsAverage": 1.97898, "epsAnalysts": 26, "growthPercent": 7.03, "revenueAverage": 113259618670, "revenueAnalysts": 26 }, { "epsLow": 2.51, "period": "+1q", "endDate": "2026-12-31", "epsHigh": 3.42, "epsAverage": 2.90908, "epsAnalysts": 23, "growthPercent": 1.61, "revenueAverage": 153920295200, "revenueAnalysts": 21 }, { "epsLow": 8.57, "period": "0y", "endDate": "2026-09-30", "epsHigh": 8.92, "epsAverage": 8.81411, "epsAnalysts": 37, "growthPercent": 18.030001, "revenueAverage": 477391182150, "revenueAnalysts": 28 }, { "epsLow": 8.24, "period": "+1y", "endDate": "2027-09-30", "epsHigh": 10.96, "epsAverage": 9.58609, "epsAnalysts": 41, "growthPercent": 8.01, "revenueAverage": 523865758660, "revenueAnalysts": 40 } ], "nextEarningsDate": 1793304000, "nextEarningsDateEstimated": false } ``` --- ### Analysts Rating distribution, price targets and the upgrade/downgrade tape. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/analysts` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Instrument symbol. Jakarta listings use the .JK suffix | | `count` | number | query | no | Rating changes to return. Default 25, max 100 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/analysts?symbol=AAPL&count=25" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/analysts?symbol=AAPL&count=25", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/analysts?symbol=AAPL&count=25", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 5, "items": [ { "at": 1785521260, "firm": "JP Morgan", "action": "main", "toGrade": "Overweight", "fromGrade": "Overweight", "priceTarget": 340, "priorPriceTarget": 345, "priceTargetAction": "Lowers" }, { "at": 1785513830, "firm": "TD Cowen", "action": "main", "toGrade": "Buy", "fromGrade": "Buy", "priceTarget": 400, "priorPriceTarget": 350, "priceTargetAction": "Raises" }, { "at": 1785510306, "firm": "DA Davidson", "action": "main", "toGrade": "Neutral", "fromGrade": "Neutral", "priceTarget": 270, "priorPriceTarget": 270, "priceTargetAction": "Maintains" }, { "at": 1785510107, "firm": "Wells Fargo", "action": "main", "toGrade": "Overweight", "fromGrade": "Overweight", "priceTarget": 350, "priorPriceTarget": 310, "priceTargetAction": "Raises" }, { "at": 1785500656, "firm": "Needham", "action": "reit", "toGrade": "Hold", "fromGrade": "Hold", "priceTarget": 0, "priorPriceTarget": 0 } ], "trend": [ { "buy": 22, "hold": 14, "sell": 2, "period": "0m", "strongBuy": 6, "strongSell": 2 }, { "buy": 22, "hold": 16, "sell": 1, "period": "-1m", "strongBuy": 6, "strongSell": 2 }, { "buy": 23, "hold": 15, "sell": 1, "period": "-2m", "strongBuy": 7, "strongSell": 2 } ], "symbol": "AAPL", "provider": "yahoo", "consensus": "buy", "targetLow": 215, "targetHigh": 400, "targetMean": 323.28195, "analystCount": 41, "targetMedian": 330, "consensusScore": 2.04348 } ``` --- ### Financials Income, balance sheet or cash flow as a period-by-period series. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/financials` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `symbol` | string | query | yes | Instrument symbol. Jakarta listings use the .JK suffix | | `statement` | enum(income|balance|cashflow) | query | no | Which statement to return. Default income | | `period` | enum(annual|quarterly|trailing) | query | no | Reporting period. Default annual | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/financials?symbol=AAPL&statement=income&period=annual" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/financials?symbol=AAPL&statement=income&period=annual", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/financials?symbol=AAPL&statement=income&period=annual", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 4, "items": [ { "date": "2025-09-30", "ebitda": 144748000000, "revenue": 416161000000, "epsBasic": 7.49, "netIncome": 112010000000, "epsDiluted": 7.46, "periodType": "12M", "grossProfit": 195201000000, "costOfRevenue": 220960000000, "operatingIncome": 133050000000, "operatingExpense": 62151000000 }, { "date": "2024-09-30", "ebitda": 134661000000, "revenue": 391035000000, "epsBasic": 6.11, "netIncome": 93736000000, "epsDiluted": 6.08, "periodType": "12M", "grossProfit": 180683000000, "costOfRevenue": 210352000000, "operatingIncome": 123216000000, "operatingExpense": 57467000000 }, { "date": "2023-09-30", "ebitda": 125820000000, "revenue": 383285000000, "epsBasic": 6.16, "netIncome": 96995000000, "epsDiluted": 6.13, "periodType": "12M", "grossProfit": 169148000000, "costOfRevenue": 214137000000, "operatingIncome": 114301000000, "operatingExpense": 54847000000 }, { "date": "2022-09-30", "ebitda": 130541000000, "revenue": 394328000000, "epsBasic": 6.15, "netIncome": 99803000000, "epsDiluted": 6.11, "periodType": "12M", "grossProfit": 170782000000, "costOfRevenue": 223546000000, "operatingIncome": 119437000000, "operatingExpense": 51345000000 } ], "period": "annual", "symbol": "AAPL", "currency": "USD", "provider": "yahoo", "statement": "income" } ``` --- ### Market summary Index, futures and rate levels for a region. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:yahoo-finance/market-summary` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `region` | enum(US|ID|GB|DE|JP|HK|SG|IN|AU) | query | no | Region whose summary strip to return. Default US | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:yahoo-finance/market-summary?region=US" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:yahoo-finance/market-summary?region=US", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:yahoo-finance/market-summary?region=US", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 15, "items": [ { "last": 7489.72, "name": "S&P 500", "type": "INDEX", "change": 52.090332, "symbol": "^GSPC", "exchange": "SNP", "marketState": "CLOSED", "changePercent": 0.70036197, "lastTimestamp": 1785532932, "previousClose": 7437.63 }, { "last": 52485.03, "name": "Dow 30", "type": "INDEX", "change": 276.97266, "symbol": "^DJI", "exchange": "DJI", "marketState": "CLOSED", "changePercent": 0.53051704, "lastTimestamp": 1785532938, "previousClose": 52208.06 }, { "last": 25373.854, "name": "Nasdaq", "type": "INDEX", "change": 251.67578, "symbol": "^IXIC", "exchange": "Nasdaq GIDS", "marketState": "CLOSED", "changePercent": 1.0018072, "lastTimestamp": 1785532559, "previousClose": 25122.178 }, { "last": 2931.339, "name": "Russell 2000", "type": "INDEX", "change": -14.761963, "symbol": "^RUT", "exchange": "Chicago Options", "marketState": "CLOSED", "changePercent": -0.50106776, "lastTimestamp": 1785529812, "previousClose": 2946.101 }, { "last": 84.67, "name": "Crude Oil", "type": "FUTURE", "change": 1.0800018, "symbol": "CL=F", "exchange": "NY Mercantile", "marketState": "CLOSED", "changePercent": 1.2920228, "lastTimestamp": 1785531599, "previousClose": 83.59 }, { "last": 4107, "name": "Gold", "type": "FUTURE", "change": -53.600098, "symbol": "GC=F", "exchange": "COMEX", "marketState": "CLOSED", "changePercent": -1.288278, "lastTimestamp": 1785531594, "previousClose": 4160.6 }, { "last": 57.786, "name": "Silver", "type": "FUTURE", "change": -1.230999, "symbol": "SI=F", "exchange": "COMEX", "marketState": "CLOSED", "changePercent": -2.085838, "lastTimestamp": 1785531588, "previousClose": 59.017 }, { "last": 1.1527377, "name": "EUR/USD", "type": "CURRENCY", "change": -0.00013291836, "symbol": "EURUSD=X", "currency": "USD", "exchange": "CCY", "marketState": "CLOSED", "changePercent": -0.011529291, "lastTimestamp": 1785533393, "previousClose": 1.1528707 } ], "region": "US", "provider": "yahoo" } ``` ---