Yahoo Finance Scraper - Quotes, History, Options, Financials avatar

Yahoo Finance Scraper - Quotes, History, Options, Financials

Pricing

from $0.60 / 1,000 data rows

Go to Apify Store
Yahoo Finance Scraper - Quotes, History, Options, Financials

Yahoo Finance Scraper - Quotes, History, Options, Financials

Yahoo Finance quotes, price history with dividends and splits, financial statements, key stats, analyst targets, options chains, news and ticker search. Stocks, ETFs, indices, crypto, FX, futures, Saudi and Gulf markets. Status per symbol; failed symbols are free.

Pricing

from $0.60 / 1,000 data rows

Rating

0.0

(0)

Developer

Dottti

Dottti

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Yahoo Finance Scraper: Quotes, History, Options, Financials

Get Yahoo Finance data for any symbol in one run. You get quotes, price history, financial statements, key statistics, analyst targets, options chains, news headlines and ticker search. A watchlist mode tells you which prices moved since the last run.

It works for every kind of Yahoo symbol:

  • US stocks and ETFs: AAPL, MSFT, SPY, QQQ
  • Indices: ^GSPC (S&P 500), ^DJI, ^IXIC, ^TASI.SR (Tadawul All Share)
  • Crypto: BTC-USD, ETH-USD
  • Currencies: EURUSD=X, USDSAR=X
  • Futures: GC=F (gold), CL=F (crude oil)
  • Saudi Exchange: 2222.SR (Aramco), 1120.SR (Al Rajhi), 2010.SR (SABIC)
  • UAE: EMAAR.AE, DIB.AE, EMIRATESNBD.AE
  • Qatar: QNBK.QA, IQCD.QA
  • Any other exchange Yahoo covers, with its own suffix

You can also paste a Yahoo quote page URL, such as https://finance.yahoo.com/quote/2222.SR.

Who uses it

  • Analysts who need statements and ratios for a list of companies in a spreadsheet.
  • Traders doing research who want daily history, dividends and option chains for backtests.
  • Fintech builders who need a daily price feed for an app or a dashboard.
  • AI agents that look up a ticker, then read its price, fundamentals and latest headlines.

What you get

Every row has a type field. Every row with a price or an amount also has currency. Every row has exchangeTimezone, except search results and news.

ModeRow typesOne row is
quotesquoteOne symbol: price, change, volume, market cap, 52-week range, P/E, EPS, dividend, bid/ask
historybar, dividend, splitOne bar (open, high, low, close, adjusted close, volume), one dividend, or one split
fundamentalsstatementOne statement period: income, balance sheet or cash flow; annual, quarterly or trailing 12 months
fundamentalskeyStatisticsValuation, margins, growth, debt, share counts, short interest, dividend dates
fundamentalsanalyst, recommendationTrendPrice targets, consensus, buy/hold/sell counts for the last 4 months
fundamentalsearningsCalendar, earningsHistoryNext earnings date with estimates; last 4 quarters of EPS actual versus estimate
fundamentalsratingChangeOptional: recent upgrades and downgrades by firm
optionsoptionOne call or put contract: strike, expiry, bid/ask, volume, open interest, implied volatility
newsnewsOne headline with publisher, link, time and related tickers
searchsearchResultOne matching symbol with exchange, type, sector and industry
watchlistwatchA quote, plus the saved price, the move in percent and an alert flag

Status per symbol

A bad symbol never stops the run. When a symbol returns nothing for a mode, you get one free status row:

{"type": "status", "symbol": "NOPE123XYZ", "mode": "quotes", "status": "not_found", "error": "Yahoo returned no quote for this symbol", "charged": false}

Status values:

  • not_found: Yahoo does not know the symbol.
  • no_data: the symbol exists, but Yahoo has nothing for this mode. Example: options for 2222.SR.
  • blocked: Yahoo refused every retry and every proxy tier.
  • bad_request: Yahoo rejected the request and says why. Example: 1-minute bars for a full year.
  • skipped_cost_limit or cut_by_cost_limit: your maximum cost for the run was reached.

The RUN_SUMMARY record in the key-value store lists the status of every symbol and mode. It also lists the requests made, the bytes moved, the retries and the proxy tier used.

Examples from real runs (21 October 2026)

Quote for Saudi Aramco (fields shortened):

{
"type": "quote", "symbol": "2222.SR", "name": "Saudi Arabian Oil Company",
"quoteType": "EQUITY", "exchange": "SAU", "exchangeName": "Saudi",
"currency": "SAR", "exchangeTimezone": "Asia/Riyadh", "marketState": "POSTPOST",
"price": 25.58, "change": 0.10000038, "changePercent": 0.3924662,
"volume": 7499149, "marketCap": 6187991433216,
"fiftyTwoWeekLow": 23.29, "fiftyTwoWeekHigh": 27.96,
"trailingPE": 15.136094, "forwardPE": 15.317366,
"dividendRate": 1.36, "dividendYieldPercent": 5.33,
"earningsDate": "2026-11-03T12:00:00.000Z",
"quoteTime": "2026-10-21T12:19:48.000Z", "dataDelayMinutes": 15, "quoteSource": "Delayed Quote"
}

Daily bar. date is the trading day at the exchange. timestamp is UTC:

{"type": "bar", "symbol": "2222.SR", "currency": "SAR", "exchange": "SAU", "exchangeTimezone": "Asia/Riyadh", "interval": "1d", "timestamp": "2025-10-21T07:00:00.000Z", "date": "2025-10-21", "open": 25.06, "high": 25.08, "low": 24.95, "close": 25.04, "adjClose": 23.79937, "volume": 7062839}

Dividend:

{"type": "dividend", "symbol": "AAPL", "currency": "USD", "exchangeTimezone": "America/New_York", "timestamp": "2025-11-10T14:30:00.000Z", "date": "2025-11-10", "amount": 0.26}

Income statement period (line items shortened). Values are in the reporting currency:

{"type": "statement", "symbol": "2222.SR", "statement": "income", "frequency": "annual", "periodEnd": "2025-12-31", "periodType": "12M", "currency": "SAR", "operatingRevenue": 1671204000000, "ebit": 713951000000, "netIncome": 348042000000, "dilutedEPS": 1.44}

Analyst targets:

{"type": "analyst", "symbol": "AAPL", "currency": "USD", "currentPrice": 339.5, "targetHighPrice": 405, "targetLowPrice": 215, "targetMeanPrice": 328.35025, "targetMedianPrice": 335, "recommendationMean": 2.25, "recommendationKey": "buy", "numberOfAnalystOpinions": 39, "strongBuy": 6, "buy": 18, "hold": 14, "sell": 3, "strongSell": 3}

Earnings calendar:

{"type": "earningsCalendar", "symbol": "2222.SR", "currency": "SAR", "earningsDate": ["2026-11-03"], "isEarningsDateEstimate": false, "epsEstimateAverage": 0.392, "epsEstimateLow": 0.35, "epsEstimateHigh": 0.434, "exDividendDate": "2026-08-20"}

Option contract:

{"type": "option", "symbol": "AAPL", "contractSymbol": "AAPL261021C00250000", "optionType": "call", "expiration": "2026-10-21", "strike": 250, "currency": "USD", "lastPrice": 90.22, "bid": 85.9, "ask": 90.85, "volume": 34, "openInterest": 23, "impliedVolatility": 3.68847734131, "inTheMoney": true, "underlyingPrice": 339.5, "exchangeTimezone": "America/New_York"}

News headline:

{"type": "news", "symbol": "AAPL", "title": "Apple vs. Broadcom: Which Tech Stock Is a Better Buy in 2026?", "publisher": "Motley Fool", "link": "https://finance.yahoo.com/markets/stocks/articles/apple-vs-broadcom-tech-stock-125202039.html", "publishedAt": "2026-10-21T12:52:02.000Z", "relatedTickers": ["AAPL", "AVGO"], "mentionsSymbol": true}

Search result for "aramco":

{"type": "searchResult", "query": "aramco", "rank": 1, "symbol": "2222.SR", "name": "Saudi Arabian Oil Company", "quoteType": "EQUITY", "exchange": "SAU", "exchangeDisplay": "Saudi Stock Exchange", "sector": "Energy", "industry": "Oil & Gas Integrated"}

How to read the numbers

  • Values are copied from Yahoo. A value Yahoo does not have is null or left out. The actor never fills a gap.
  • dividendYieldPercent in quote rows is a percent (5.33 means 5.33%).
  • Ratios in keyStatistics are fractions, as Yahoo sends them (0.0533 means 5.33%).
  • currency is the trading currency. financialCurrency is the currency of the financial statements. They can differ for companies listed abroad.
  • History prices keep 7 significant digits. Yahoo stores them as 32-bit numbers, which hold about that much.
  • Statements come from the same data as the Financials tab on Yahoo Finance. Line items a company does not report are left out.
  • Yahoo does not publish option greeks. Implied volatility is included.

Input examples

Daily snapshot of quotes and one month of history (the default example):

{ "symbols": ["AAPL", "2222.SR", "BTC-USD"], "modes": ["quotes", "history"], "historyRange": "1mo", "historyInterval": "1d" }

Fundamentals for Gulf banks:

{ "symbols": ["1120.SR", "EMIRATESNBD.AE", "QNBK.QA"], "modes": ["fundamentals"], "statements": ["income", "balance"], "statementFrequencies": ["annual"] }

Weekly history for a fixed period:

{ "symbols": ["^GSPC", "^TASI.SR"], "modes": ["history"], "historyStartDate": "2020-01-01", "historyEndDate": "2020-12-31", "historyInterval": "1wk" }

Option chain, next 3 expiries, puts only, at most 500 contracts:

{ "symbols": ["SPY"], "modes": ["options"], "optionsExpirations": 3, "optionsType": "puts", "maxOptionContractsPerSymbol": 500 }

Find symbols first:

{ "modes": ["search"], "searchQueries": ["emaar", "qatar national bank"] }

Daily snapshots with a schedule

  1. Save your input as a task in Apify Console.
  2. Open Schedules and create a schedule for the task. Example: every weekday at 17:00 Asia/Riyadh, after the Saudi market closes.
  3. Connect the dataset to Google Sheets, a webhook or the API. Each run is a dated snapshot.

For price alerts, use the watchlist mode on a schedule:

{ "symbols": ["2222.SR", "1120.SR", "BTC-USD", "GC=F"], "modes": ["watchlist"], "watchlistThresholdPercent": 3, "watchlistOnlyChanged": true, "watchlistName": "my-alerts" }
  • The first run outputs every symbol with alert: "baseline" and saves its price.
  • Later runs output only symbols whose price moved more than the threshold. These rows have alert: "moved_up" or alert: "moved_down".
  • The saved price updates only when an alert fires. Slow moves add up across runs until they cross the threshold.
  • Prices are saved in the named key-value store yahoo-finance-watchlist. Use a different watchlistName for each list.

Pricing

You pay per data row: $0.60 per 1,000 rows ($0.0006 per row).

  • One quote, one bar, one statement period, one option contract or one headline is one row.
  • status rows are free. Symbols that fail are never charged.
  • Set a maximum cost per run in Apify. The actor stops cleanly at that limit and marks the rest as skipped_cost_limit.

Typical costs:

JobRowsCost
Quotes for 50 symbols50$0.03
1 year of daily bars for one symbolabout 250$0.15
Full fundamentals for one companyabout 40-55$0.024-0.033
Nearest option expiry for AAPLabout 90$0.054
10 headlines10$0.006

To keep costs low, choose only the modes you need. Use maxBarsPerSymbol, maxOptionContractsPerSymbol and the statement filters.

Speed

Measured on a local machine, without a proxy, on 21 October 2026:

  • The default example (3 symbols, quotes and 1 month of history) finished in 4-6 seconds.
  • 52 symbols with quotes, 1 year of daily history and news: 13,505 rows in 28 seconds.
  • 20 companies with full fundamentals: 1,063 rows in 23 seconds.

Reliability

  • The actor calls the same JSON endpoints the Yahoo Finance website uses. It sets up the cookie and crumb the site needs.
  • A stale crumb (HTTP 401) gets a new crumb, then a new session.
  • Rate limits (HTTP 429 or 403) get growing waits and a fresh session.
  • If Yahoo keeps refusing, the actor moves to Apify datacenter proxy, then residential proxy. You can turn residential off, or set your own proxy.
  • Requests are spaced out. By default 3 symbols run in parallel.

Limits

  • Data is delayed. Most exchanges are 15-20 minutes behind. Each quote row shows dataDelayMinutes and quoteSource.
  • This data is for research. Do not use it for live trading or order decisions.
  • Yahoo keeps 1-minute bars for about 8 days, 2-90 minute bars for about 60 days and hourly bars for about 2 years. Older requests return a bad_request status with Yahoo's message.
  • Yahoo has few or no English headlines for many Gulf symbols. Those return no_data for news.
  • Statements exist for companies only. Indices, currencies, crypto, futures and funds return key statistics only.
  • Yahoo can change its endpoints at any time. A change can break a mode until the actor is updated.
  • Respect Yahoo's terms of service. You are responsible for how you use and share the data.

Input reference

FieldDefaultWhat it does
symbolsYahoo symbols or quote URLs
modes["quotes"]quotes, history, fundamentals, options, news, search, watchlist
searchQueriesWords to search, for the search mode
historyRange1mo1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
historyInterval1d1m to 3mo
historyStartDate, historyEndDateYYYY-MM-DD, overrides the range
includeDividendsSplitstrueAdds dividend and split rows
includePrePostfalsePre- and after-market bars, intraday only
maxBarsPerSymbol00 means no limit; keeps the latest bars
statementsall threeincome, balance, cashflow
statementFrequenciesall threeannual, quarterly, trailing
includeKeyStatistics, includeAnalyst, includeEarningstrueParts of the fundamentals mode
maxRatingChanges0Recent upgrades and downgrades per symbol
optionsExpirations1Expiries per symbol, nearest first; 0 means all
optionsDatesExact expiry dates, YYYY-MM-DD
optionsTypebothboth, calls, puts
maxOptionContractsPerSymbol00 means no limit
newsPerSymbol10Up to 100
searchResultsPerQuery10Up to 25
watchlistThresholdPercent2Alert threshold
watchlistOnlyChangedtrueOutput only alerts
watchlistNamedefaultKeeps separate saved prices per list
proxyConfigurationYour own proxy; turns off the automatic fallback
autoProxyFallbacktrueNo proxy first, then datacenter, then residential
allowResidentialFallbacktrueAllow the residential step
maxConcurrency3Symbols in parallel, 1-8
maxRetries5Retries per request