# Yahoo Finance Market Data API

> Yahoo Finance market data via REST: chart series with dividend and split events, index overlays, option chains, holders, insider trades and analyst trends.

- URL: https://everydata.io/yahoo-finance-market-data-api
- Updated: 2026-09-20
- Publisher: everydata.io (https://everydata.io)

Market data is more than a price series. A trader's chart needs the meta block with the 52-week band and exchange name, timestamps aligned with the exchange calendar, dividend and split markers, and often a benchmark index overlay. Analysts also want the option chain, who holds the stock, what insiders are doing and where consensus sits. everydata.io serves each of those Yahoo Finance views as a GET endpoint under /yho, in Yahoo's own JSON shape, refreshed at request time.

## Key facts

- Platform: [Yahoo Finance Data API](https://everydata.io/apis/yahoo-finance) (live)
- Main endpoint: `GET /yho/stock-v3-get-chart`
- Quota: A call to the Yahoo Finance API counts as 1 request against the monthly quota.
- Pricing: 100 free requests a month; paid plans from €30 a month for 5,000 requests (€1.00–€6.00 per 1,000 requests). One quota is shared across all 31 platforms; failed requests (5xx, blocked pages) are not counted.

## What you get

The chart endpoint is the workhorse. /stock-v3-get-chart requires symbol, range and interval and returns chart.result[0] with three parts: meta (currency, exchangeName, fullExchangeName, regularMarketPrice, regularMarketChangePercent, fiftyTwoWeekHigh, fiftyTwoWeekLow, regularMarketVolume, chartPreviousClose, dataGranularity, validRanges), a timestamp[] array in epoch seconds, and indicators.quote[] with parallel open/high/low/close/volume arrays plus indicators.adjclose[]. Add events=div,split,earn to receive dividend, split and earnings markers, comparisons=^GDAXI,^FCHI to overlay indices, and includePrePost=true for extended-hours bars.

Five sibling endpoints complete the market picture. /stock-v3-get-options returns optionChain.result[] with expirationDates, strikes and per-expiry straddles alongside a quote block; /stock-v3-get-holders lists institutional and fund holders; /stock-v2-get-insider-transactions gives recent insider buys and sells; /stock-v2-get-analysis carries recommendationTrend and earningsTrend; /stock-v3-get-insights adds Yahoo's technical and fundamental read on the symbol.

- Chart meta: regularMarketPrice, fiftyTwoWeekHigh/Low, regularMarketDayHigh/Low, exchangeName, timezone, dataGranularity
- timestamp[] plus indicators.quote[] OHLCV arrays and indicators.adjclose[] for any range/interval pair
- Event markers via events=div,split,earn and overlays via comparisons (e.g. ^GDAXI,^FCHI)
- Pre- and post-market bars with includePrePost=true where the exchange supports them
- Option chains with expirationDates, strikes and straddle rows per expiry
- Institutional and fund holders, insider transactions, recommendation and earnings trends, Yahoo insights
- Region parameter (US, DE, GB, HK, IN and eight more) to select the Yahoo edition

## How it works

Unlike the historical-data endpoint, range and interval are mandatory here because they define the granularity of the series. Combine them as Yahoo does: 1d with 1m or 5m for an intraday view, 1mo with 1d for a month of daily bars, 5y with 1wk for a long-term chart. Check meta.validRanges in the response to learn which ranges the instrument supports.

```bash
curl -s "https://api.everydata.io/yho/stock-v3-get-chart?symbol=AAPL&range=1mo&interval=1d&region=US&events=div%2Csplit" \
  -H "x-api-key: YOUR_API_KEY"
```

Response (shortened):

```json
{
  "chart": {
    "result": [
      {
        "meta": {
          "currency": "USD",
          "symbol": "AAPL",
          "exchangeName": "NMS",
          "fullExchangeName": "NasdaqGS",
          "instrumentType": "EQUITY",
          "regularMarketTime": 1789761602,
          "timezone": "EDT",
          "regularMarketPrice": 336.13,
          "regularMarketChangePercent": -0.258,
          "fiftyTwoWeekHigh": 344.57,
          "fiftyTwoWeekLow": 243.42,
          "regularMarketDayHigh": 338.49,
          "regularMarketDayLow": 332.53,
          "regularMarketVolume": 86241049,
          "longName": "Apple Inc.",
          "chartPreviousClose": 310.03,
          "dataGranularity": "1d",
          "range": "1mo",
          "validRanges": [
            "1d",
            "5d",
            "1mo",
            "3mo",
            "6mo",
            "1y",
            "2y",
            "5y",
            "10y",
            "ytd",
            "max"
          ]
        },
        "timestamp": [
          1787146200,
          1787232600
        ],
        "indicators": {
          "quote": [
            {
              "open": [
                332.1,
                334.77
              ],
              "high": [
                335.2,
                338.34
              ],
              "low": [
                329.9,
                330.18
              ],
              "close": [
                333.4,
                337
              ],
              "volume": [
                41230100,
                36700200
              ]
            }
          ],
          "adjclose": [
            {
              "adjclose": [
                333.4,
                337
              ]
            }
          ]
        }
      }
    ]
  }
}
```

Read the series column-wise: timestamp[i] belongs to indicators.quote[0].close[i]. Yahoo leaves null for intervals without a trade, so filter nulls before charting. With events requested, an events object keyed by timestamp appears next to meta; with comparisons set, each extra symbol arrives in a comparisons array on the same timestamp grid, ready for a relative-performance overlay.

Option chains are large. optionChain.result[0].expirationDates lists every expiry as epoch seconds and options[] holds one entry per expiry with straddles rows pairing the call and put at each strike. Holders, insider transactions and analysis return the corresponding quoteSummary modules – institutionOwnership, insiderTransactions, recommendationTrend, earningsTrend – with the usual {raw, fmt} values.

Two honest limits. Four catalogue endpoints – market-get-watchlist-detail, market-get-watchlist-performance, conversations-count and conversations-v2-list – answer with HTTP 501 because Yahoo retired its public watchlist and conversation (Canvass) services; the routes stay so clients fail cleanly. And this is the market data Yahoo shows publicly: realtime or delayed depending on the exchange, built for research, dashboards and screeners, not as a licensed feed for executing orders.

## What teams build with this

### Interactive price charts

Render candlesticks from indicators.quote[] with dividend and split markers from events, and let users toggle an index overlay via comparisons – the same data Yahoo's own chart draws.

### Options analytics

Pull the full chain for a symbol, compute implied-volatility skews and open-interest walls per expiry, and refresh the front months intraday within your rate limit.

### Ownership and insider monitoring

Track changes in institutional holders and recent insider transactions across a coverage list, alerting when a director sells or a fund position jumps.

### Sell-side consensus tracking

Store recommendationTrend and earningsTrend snapshots each week to show how strongBuy/hold/sell counts and EPS estimates drift into earnings season.

## Pricing

A chart call with events and two comparison indices is still one request, as is a full option chain. Intraday dashboards that refresh 20 symbols every five minutes during a 7-hour session need roughly 1,700 requests a day – the Production plan (50,000 requests, €80, 100 per minute) covers that comfortably; Business (300,000, €300, 250 per minute) scales it to a small trading desk. Requests that fail on Yahoo's side with a 5xx are not counted.

## FAQ

### Which range and interval combinations are valid?

range accepts 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd and max; interval accepts 1m, 2m, 5m, 15m, 30m, 60m, 1d, 1wk and 1mo. Minute intervals only work with short ranges (1m for up to 7 days). meta.validRanges in every response lists what the instrument supports.

### Can I get pre-market and after-hours prices?

Yes. Add includePrePost=true to the chart request for symbols where meta.hasPrePostMarketData is true. Extended-hours bars appear in the same arrays and currentTradingPeriod tells you the pre, regular and post session boundaries.

### How do I add dividend and split markers to a chart?

Pass events=div,split (add earn for earnings dates). The response gains an events object keyed by timestamp with the amount for dividends and the numerator/denominator for splits.

### Why do some endpoints return HTTP 501?

market-get-watchlist-detail, market-get-watchlist-performance, conversations-count and conversations-v2-list depend on Yahoo services that no longer exist publicly. They return 501 with an explanatory message instead of fabricated data, and they are never billed.

### Is the data suitable for live trading?

It is the publicly displayed Yahoo Finance data, realtime for some exchanges and delayed 15 to 20 minutes for others. It is well suited to research, analytics and dashboards; for order execution use a licensed exchange feed.

## Related use cases

- [Yahoo Finance Stock Data API](https://everydata.io/yahoo-finance-stock-data-api)

## More

- [All platforms](https://everydata.io/apis) · [Pricing](https://everydata.io/pricing) · [API reference](https://everydata.io/docs) · [Getting started](https://everydata.io/docs/getting-started) · [MCP server](https://everydata.io/docs/mcp) · [Status](https://everydata.io/status)
- Machine-readable: [llms.txt](https://everydata.io/llms.txt), [llms-full.txt](https://everydata.io/llms-full.txt), [OpenAPI](https://api.everydata.io/openapi.json)
