# Yahoo Finance — Zapi reference > Global quotes, fundamentals, statements, options, earnings, ownership and analyst coverage. Jakarta listings via the .JK suffix. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a free key at https://zpi.web.id/dashboard/keys. **Response envelope:** `{ status, message, content }` **Rate limit:** 60 req/min on free tier. **Related:** - Detail page: https://zpi.web.id/api/finance/yahoo-finance - Endpoint catalog: https://zpi.web.id/category/finance - Concise index: https://zpi.web.id/llms.txt - Full reference: https://zpi.web.id/llms-full.txt --- ## 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" } ``` --- _Generated: 2026-08-02T14:30:05.199Z_