Yahoo Finance Scraper - Stock Quotes, Statistics & History
Pricing
from $1.00 / 1,000 ticker quotes
Yahoo Finance Scraper - Stock Quotes, Statistics & History
Scrape Yahoo Finance for any stock, ETF, index, crypto or FX ticker: live (delayed) quotes, P/E, EPS, dividends, earnings dates, key statistics and daily/weekly/monthly price history with dividends and splits. Raw numbers, cheap per-row pricing.
Pricing
from $1.00 / 1,000 ticker quotes
Rating
0.0
(0)
Developer
rj
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Features
Share
Yahoo Finance Scraper - Stock Quotes, Key Statistics & Price History
Scrape Yahoo Finance for any ticker - US and international stocks, ETFs, indices (^GSPC), crypto (BTC-USD), currencies (EURUSD=X) and futures (GC=F). Get quotes (price, change, day and 52-week range, volume, market cap, beta, P/E, EPS, dividend, ex-dividend and earnings dates, analyst target), optional key statistics (valuation measures with 5 quarters of history, margins, returns, balance sheet, cash flow, short interest) and price history (daily, weekly or monthly OHLC, adjusted close, volume, dividends and splits). Every value is a raw number, not a "4.84T" string. Quotes, statistics and history all come from one Actor, and history is priced per row at $0.0002: a year of daily bars costs about $0.05, where per-item scrapers charge about $0.25. An incremental sinceDate option lets daily schedules append only new rows.
What data can you get?
| Data | Mode | Fields |
|---|---|---|
| Quote | quote | price, change, changePercent, previousClose, open, dayLow/dayHigh, fiftyTwoWeekLow/High, volume, avgVolume3Month/10Day, bid/ask, pre/post-market price, marketCap, sharesOutstanding, beta, peTrailing/peForward, epsTrailing/epsForward, dividendRate, dividendYield, exDividendDate, dividendDate, earningsDate, targetMean/High/LowPrice, recommendation, analystCount, 50/200-day averages, all-time high/low |
| Company / instrument | quote | name, quoteType, exchange, currency, marketState, delayMinutes, sector, industry, website, country, employees |
| Fund / crypto / FX extras | quote | netAssets, navPrice, expenseRatio, ytdReturn, fundFamily, fundCategory, circulatingSupply, volume24Hr, fromCurrency/toCurrency |
| Key statistics (stocks) | quote + includeStatistics | enterpriseValue, trailing/forward P/E, PEG, price/sales, price/book, EV/revenue, EV/EBITDA, valuationHistory (5 quarters), profit/operating/gross/EBITDA margins, ROA, ROE, revenue, revenue per share, quarterly revenue and earnings growth, gross profit, EBITDA, net income, total cash/debt, debt/equity, current/quick ratio, book value per share, operating and free cash flow, 52-week change vs S&P 500, float, insider/institutional holdings, shares short, short ratio, short % of float, dividend yields, payout ratio, last split |
| Price history | history | date, open, high, low, close, adjClose, volume, dividend, splitRatio, isDividend, isSplit, isComplete |
Use cases
- Portfolio and watchlist tracking - pull prices, daily change and valuation for your holdings into Google Sheets every morning.
- Stock screening and fundamental research - compare P/E, PEG, margins, ROE, debt and short interest across a sector.
- Backtesting and charting - download 1, 5 or 10+ years of daily/weekly/monthly OHLC with adjusted closes, dividends and splits.
- Dividend tracking - dividend rate, yield, ex-dividend dates and the full dividend history per ticker.
- Crypto and FX monitoring - BTC-USD, ETH-USD, EURUSD=X and friends on a schedule.
- Earnings calendars - next earnings date and analyst targets for a list of tickers.
- AI agents and dashboards - clean, flat JSON with numbers as numbers.
How to use
- Enter your tickers exactly as Yahoo shows them (AAPL, BRK-B, ^GSPC, BTC-USD, EURUSD=X, 7203.T, VOD.L). Quote page URLs work too.
- Pick Quotes or Price history.
- Click Start. Download the results as JSON, CSV or Excel, or use the API.
Quotes for a watchlist:
{ "tickers": ["AAPL", "MSFT", "NVDA", "TSLA", "SPY"], "mode": "quote" }
Quotes with key statistics (stocks):
{ "tickers": ["AAPL", "MSFT", "NVDA", "GOOGL", "AMZN", "META", "TSLA"], "mode": "quote", "includeStatistics": true }
One year of daily price history:
{ "tickers": ["SPY", "QQQ"], "mode": "history", "historyRange": "1y", "historyInterval": "daily" }
Daily schedule that appends only new, finished bars:
{ "tickers": ["AAPL", "BTC-USD"], "mode": "history", "historyRange": "1mo", "historyInterval": "daily", "sinceDate": "3 days" }
With sinceDate, only bars dated after that day are output and the still-forming bar of today (or this week/month) is left out, so every row you get is final. A relative value such as "3 days" works on a schedule; overlapping days come back with the same id (AAPL:1d:2026-11-03), so de-duplicate on id when you append.
Output example
A quote with merged key statistics (trimmed), from a real run:
{"type": "quote","id": "AAPL","ticker": "AAPL","symbol": "AAPL","fundamentalsAvailable": true,"name": "Apple Inc.","quoteType": "EQUITY","exchange": "NMS","exchangeName": "NasdaqGS","currency": "USD","marketState": "PRE","delayMinutes": 15,"regularMarketTime": "2026-11-03T21:00:01.000Z","price": 331.9,"change": -6.42001,"changePercent": -1.89762,"previousClose": 338.32,"open": 325.58,"dayLow": 325.33,"dayHigh": 334.5,"fiftyTwoWeekLow": 243.42,"fiftyTwoWeekHigh": 351.73,"volume": 61365001,"avgVolume3Month": 41614187,"preMarketPrice": 335.47,"postMarketPrice": 329.8248,"marketCap": 4843808227328,"sharesOutstanding": 14594180000,"beta": 1.089,"peTrailing": 36.95991,"peForward": 31.169645,"epsTrailing": 8.98,"epsForward": 10.64818,"dividendRate": 1.08,"dividendYield": 0.0033000002,"trailingAnnualDividendRate": 1.06,"trailingAnnualDividendYield": 0.0031331282,"exDividendDate": "2026-08-10","dividendDate": "2026-08-13","earningsDate": "2027-01-28T21:00:00.000Z","earningsDateIsEstimate": true,"targetMeanPrice": 333.28052,"recommendation": "buy","analystCount": 38,"fiftyDayAverage": 334.0514,"twoHundredDayAverage": 297.33844,"allTimeHigh": 351.73,"sector": "Technology","industry": "Consumer Electronics","statisticsStatus": "ok","statistics": {"marketCap": 4843808227328,"enterpriseValue": 4846645673984,"trailingPE": 36.95991,"forwardPE": 31.169645,"pegRatio": 2.66,"priceToSales": 10.11584,"priceToBook": 43.031246,"enterpriseToRevenue": 10.122,"enterpriseToEbitda": 28.263,"fiscalYearEnd": "2026-09-26","mostRecentQuarter": "2026-09-26","profitMargin": 0.27604,"operatingMargin": 0.31125,"grossMargin": 0.48786,"valuationHistory": [{"date": "2026-06-30","marketCap": 4249933332160,"enterpriseValue": 4266137332160,"trailingPE": 35.031477,"forwardPE": 30.394958,"pegRatio": 2.680994,"priceToSales": 9.510049,"priceToBook": 39.85541,"enterpriseToRevenue": 9.450023,"enterpriseToEbitda": 26.616779}]},"url": "https://finance.yahoo.com/quote/AAPL/","scrapedAt": "2026-11-04T12:30:03.300Z"}
A price-history bar with a dividend:
{"type": "bar","id": "SPY:1d:2025-12-19","ticker": "SPY","interval": "1d","currency": "USD","exchange": "PCX","date": "2025-12-19","timestamp": "2025-12-19T14:30:00.000Z","open": 676.59,"high": 681.09,"low": 676.47,"close": 680.59,"adjClose": 675.3154,"volume": 103599500,"dividend": 1.993,"splitRatio": null,"isDividend": true,"isSplit": false,"isComplete": true,"url": "https://finance.yahoo.com/quote/SPY/history/","scrapedAt": "2026-11-04T12:29:45.527Z"}
Missing values are null (keys are never omitted). If Yahoo ever serves a quote page without its fundamentals block, the item has fundamentalsAvailable: false and the run summary warns, instead of silently returning nulls. Ratios such as dividendYield, profitMargin and heldPercentInstitutions are fractions (0.0033 = 0.33%); changePercent is in percent (-1.9 = -1.9%). Dates are ISO (2026-08-10), times are ISO UTC. Bar date is the trading day in the exchange's time zone.
Pricing
Pay per event - you only pay for what you get:
| Event | Price | When |
|---|---|---|
quote | $0.001 | each ticker quote |
statistics | $0.0005 | each stock whose key statistics were merged (only with includeStatistics) |
history-bar | $0.0002 | each price-history row |
Examples: 1,000 quotes ≈ $1.00; 1,000 quotes with key statistics ≈ $1.50; 1 year of daily history for one ticker (~251 rows) ≈ $0.05; 1,000 history rows ≈ $0.20. Set Maximum cost per run in the run options: the Actor stops cleanly at your budget and never charges past it.
Tips and limits
- Data is delayed exactly as on Yahoo's site (usually 15 minutes for US stocks, see
delayMinutes). This is not a real-time feed. - Key statistics exist for stocks only. ETFs, indices, crypto and currencies have no Key Statistics page; those tickers get
statistics: null,statisticsStatus: "not-applicable"and nostatisticscharge. Fund facts (net assets, NAV, expense ratio, yield) are in the quote item. - Yahoo's monthly history for some indices starts in 1985 even with
max; daily history usually goes back further. isComplete: falsemarks today's (or this week's/month's) bar while the market is still trading. Its values will change.- Unknown tickers are reported in the run log and
RUN_SUMMARY(statusnot-found) and the run carries on. - Requests are paced at about 1 per second (2 in parallel) to stay polite, so 100 tickers take about 2 minutes (double with key statistics).
- If you run from an EU IP or with an EU proxy, Yahoo may show a cookie-consent page. The Actor does not click through it: it reports it (status
consent) and asks you to use a US/non-EU datacenter proxy.
FAQ
Is it legal to scrape Yahoo Finance? The Actor reads only public quote pages that anyone can open without logging in, and collects market data, not personal data. Yahoo's data is for research and personal use; you are responsible for complying with Yahoo's terms of service and the laws that apply to you, especially before redistributing data commercially.
Does it use Yahoo's API?
No. It reads the public HTML pages under finance.yahoo.com/quote/... and the data embedded in them, the same pages your browser loads. It does not call the query1/query2 API hosts.
Do I need a proxy? Usually not. If Yahoo rate-limits the run (HTTP 429) or shows a consent page, enable Apify Proxy (datacenter). Residential proxies are not supported: if you select the RESIDENTIAL group, the Actor logs a warning and uses Apify datacenter proxy instead.
Why is a field null? Yahoo does not publish it for that instrument (e.g. no P/E for a loss-making company, no dividend for non-payers, no sector for an index).
Can I get intraday (1-minute/hourly) bars or options chains? Not in this version - daily, weekly and monthly bars only. Open an issue if you need them.
Are the numbers adjusted for splits?
open/high/low/close are split-adjusted as Yahoo shows them; adjClose is also adjusted for dividends.
Integrations
-
API. Start runs and fetch results with the Apify API, or the JavaScript and Python clients:
curl -X POST "https://api.apify.com/v2/acts/rjmacarthy~yahoo-finance-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"tickers":["AAPL","MSFT"],"mode":"quote"}' -
Schedules + webhooks. Run every trading day and trigger your pipeline when it finishes.
-
Zapier, Make, n8n. Push prices into Google Sheets, Airtable, Slack or e-mail with no code.
-
Google Sheets, Airbyte, Keboola and more through Apify integrations.
-
AI agents. Use the Actor as a tool through the Apify MCP server.
Changelog
- 0.1 (November 2026) - First release: quotes, key statistics with valuation history, daily/weekly/monthly price history with dividends and splits, incremental
sinceDate.
Ready-to-run examples
- Get Magnificent 7 stock quotes and key statistics
- Download 1 month of daily SPY and QQQ price history
More scrapers by the same developer
- Apple App Store Scraper: Apps, Search & Reviews
- ESPN Scraper - Scores, Odds, Standings & Tennis
- Google Play Scraper: Apps, Search & Reviews
- PDF to Markdown & Text Converter for LLMs and RAG
- Roblox Games Scraper - Players, Visits, Charts & Stats
- Telegram Channel Scraper
Browse all my Actors on my Apify Store profile.
Support
Found a ticker that doesn't work, or need an extra field? Open an issue on the Issues tab with your input. Fixes are usually quick.