Yahoo Finance Scraper – Quotes, Financials & Price History
Pricing
from $0.50 / 1,000 symbol data rows
Yahoo Finance Scraper – Quotes, Financials & Price History
Scrape Yahoo Finance data for stocks, ETFs, indices, crypto and FX. Search by name or pass tickers. Each row: price, change, volume, market cap, day and 52-week range, P/E, the full quote object, plus optional company summary, financials and price history. No API key needed.
Yahoo Finance Scraper — Quotes, Financials & Price History for Stocks, ETFs, Indices, Crypto & FX
Yahoo Finance Scraper — Scrape Yahoo Finance data for stocks, ETFs, indices, crypto and FX. Search by name ('apple', 'bitcoin') or pass tickers straight in. Each row carries price, change, volume, market cap, day and 52-week range, P/E and the full quote object, plus optional company summary, financials and price history. It reads Yahoo Finance's own mobile API directly, so it's fast, reliable and complete — no API key, no flaky HTML parsing, no headless browser. Export to JSON, CSV, Excel, or an API.
Why use this Yahoo Finance Scraper?
- No code required — set your input, click Start, download your data.
- Fast & accurate — reads Yahoo Finance's own private API and returns structured JSON, not scraped HTML.
- Rich, structured data — every field below, clean and ready to use.
- Full pagination — collects results to your
maxItemscap. - Transparent pay-per-result pricing — pay only for the rows you get.
- Export anywhere — JSON, CSV, Excel, XML, or pull it live via the Apify API.
What can you do with Yahoo Finance data?
- Watchlist snapshots — one row per ticker with price, change, volume and ranges, on a schedule.
- Fundamental screening — pull P/E, market cap, margins and statements for a list of symbols and rank them in a spreadsheet.
- Backtests and charts — export OHLCV candles for each symbol at the interval you need.
- Portfolio and dashboard feeds — read the dataset from your own code or a BI tool instead of maintaining a Yahoo client.
Which symbols and markets can I scrape?
Anything Yahoo Finance itself lists — the actor forwards your symbol to Yahoo and keeps whatever Yahoo returns, so it has no universe of its own. The quoteType field tells you which class Yahoo assigned a row.
| Asset class | quoteType | Search term that resolves it | Tickers you can pass directly |
|---|---|---|---|
| Stocks | EQUITY | apple, tesla, siemens | AAPL, TSLA, MSFT, NVDA, SIE.DE |
| ETFs | ETF | s&p 500 etf, nasdaq etf | SPY, QQQ, VTI, IWM |
| Indices | INDEX | s&p 500, nasdaq, ftse | ^GSPC, ^DJI, ^IXIC, ^FTSE, ^N225 |
| Crypto | CRYPTOCURRENCY | bitcoin, ethereum, solana | BTC-USD, ETH-USD, SOL-USD |
| FX pairs | CURRENCY | euro dollar, yen | EURUSD=X, GBPUSD=X, JPY=X |
| Futures | FUTURE | crude oil, gold | CL=F, GC=F, ES=F |
| Mutual funds | MUTUALFUND | vanguard 500 | VFIAX, FXAIX |
Non-US listings work through their Yahoo suffix (SIE.DE, RY.TO, BP.L), and region / lang set the market context Yahoo answers in.
What data does the Yahoo Finance Scraper extract?
Each row includes: symbol, shortName, quoteType, exchange, currency, regularMarketPrice, regularMarketChange, regularMarketChangePercent, regularMarketVolume, marketCap, regularMarketDayRange, fiftyTwoWeekRange, trailingPE, quote …and more. See the full field list below.
How do I scrape Yahoo Finance? (3 steps)
- Set your input — provide
queryorsymbols(see the table below; defaults work out of the box). - Pick options — filters, a
proxyConfiguration, and amaxItemscap. - Run & export — click Start, then download the dataset as JSON/CSV/Excel or fetch it via the API.
What inputs does it take?
| Field | Type | Default | Description |
|---|---|---|---|
query | string | apple | A human-friendly search string (e.g. 'apple', 'tesla', 'S&P 500', 'bitcoin'). Resolved to the best-matching symbol via Yahoo's own mobile search endpoint. |
symbols | array of string | – | Optional explicit ticker symbols (e.g. AAPL, MSFT, BTC-USD). Advanced: bypasses search resolution. |
resultsPerQuery | integer | 1 | How many matching symbols to keep from each search term. |
includeSummary | boolean | true | Fetch the full company summary/financials detail (33 quoteSummary modules) for each symbol. |
includeHistory | boolean | false | Fetch a price-history time series (chart) for each symbol. |
historyRange | enum | 1mo | Range for price history when enabled. — one of 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max |
historyInterval | enum | 1d | Candle interval for price history. — one of 1m, 5m, 15m, 30m, 1h, 1d, 1wk, 1mo |
region | string | US | Market region code (e.g. US, GB, DE). |
lang | string | en-US | Language code (e.g. en-US). |
maxItems | integer | 0 | 0 = all resolved symbols. |
proxyConfiguration | object | Apify Proxy | Route requests through a proxy (Apify Proxy by default). |
Example input
{"query": "apple","resultsPerQuery": 1,"includeSummary": true,"includeHistory": false,"historyRange": "1mo","historyInterval": "1d","region": "US","lang": "en-US","maxItems": 0,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
What does a result row look like?
Each result is a JSON object like this:
{"symbol": "TSLA","shortName": "Tesla, Inc.","quoteType": "EQUITY","exchange": "NMS","currency": "USD","regularMarketPrice": 394.045,"regularMarketChange": -8.85498,"regularMarketChangePercent": -2.1978111,"regularMarketVolume": 19107152,"marketCap": 1479924252672,"regularMarketDayRange": "390.96 - 399.63","fiftyTwoWeekRange": "293.55 - 498.83","trailingPE": 361.5092,"quote": {"…": "80 fields"},"summary": {"…": "one key per quoteSummary module Yahoo returned"},"chart": {"meta": {"…": "25 fields"},"timestamp": [1780925400,1781011800,"…+19 more"],"indicators": {"quote": [{"…": "5 fields"}],"adjclose": [{"…": "1 fields"}]}},"searchMatch": {"…": "15 fields"}}
Which fields does each row contain?
| Field | Type | Description |
|---|---|---|
symbol | text | Symbol |
shortName | text | Name |
quoteType | text | Type |
exchange | text | Exchange |
currency | text | Currency |
regularMarketPrice | number | Price |
regularMarketChange | number | Change |
regularMarketChangePercent | number | Change % |
regularMarketVolume | number | Volume |
marketCap | number | Market cap |
regularMarketDayRange | text | Day range |
fiftyTwoWeekRange | text | 52-week range |
trailingPE | number | Trailing P/E |
quote | object | Full quote |
summary | object | Summary & financials |
chart | object | Price history |
searchMatch | object | Search match |
The table mirrors the dataset overview. The row also promotes these quote scalars to the top level whenever Yahoo returns them, so you rarely need to dig into quote:
longName, displayName, typeDisp, fullExchangeName, financialCurrency, market, marketState, region, language, regularMarketOpen, regularMarketDayHigh, regularMarketDayLow, regularMarketPreviousClose, regularMarketTime, preMarketPrice, preMarketChangePercent, postMarketPrice, postMarketChangePercent, bid, ask, bidSize, askSize, sharesOutstanding, bookValue, priceToBook, forwardPE, epsTrailingTwelveMonths, epsForward, fiftyDayAverage, twoHundredDayAverage, fiftyTwoWeekHigh, fiftyTwoWeekLow, fiftyTwoWeekChangePercent, averageDailyVolume3Month, averageDailyVolume10Day, trailingAnnualDividendRate, trailingAnnualDividendYield, dividendDate, earningsTimestamp, averageAnalystRating, firstTradeDateMilliseconds.
What is in quote, summary, chart and searchMatch?
The top-level fields (regularMarketPrice, marketCap, trailingPE …) are the most useful scalars lifted out of the quote so the dataset table stays readable. The four nested objects keep everything Yahoo returned:
quote— the full quote object, ~80 fields:marketState,preMarketPrice/postMarketPrice,bid/askand sizes,fiftyDayAverage,twoHundredDayAverage,averageDailyVolume3Month,trailingAnnualDividendYield,earningsTimestamp,averageAnalystRatingand the rest.summary— one key per quoteSummary module Yahoo returned, present when Include summary & financials is on (the default). The actor asks for all 33 modules:
| Group | Modules |
|---|---|
| Company profile | assetProfile, summaryProfile, summaryDetail, price, quoteType, defaultKeyStatistics, financialData, calendarEvents, secFilings |
| Analyst & earnings | recommendationTrend, upgradeDowngradeHistory, earnings, earningsHistory, earningsTrend, industryTrend, indexTrend, sectorTrend |
| Financial statements | incomeStatementHistory, incomeStatementHistoryQuarterly, balanceSheetHistory, balanceSheetHistoryQuarterly, cashflowStatementHistory, cashflowStatementHistoryQuarterly |
| Ownership & insiders | institutionOwnership, fundOwnership, majorDirectHolders, majorHoldersBreakdown, insiderTransactions, insiderHolders, netSharePurchaseActivity |
| Funds & ETFs | topHoldings, fundProfile, fundPerformance |
Yahoo only answers with the modules that apply to the symbol, so an equity row has no topHoldings and an ETF row has no insiderTransactions.
chart— the price-history response, present when Include price history is on:meta, atimestamparray andindicators.quote(open/high/low/close/volume arrays) plusindicators.adjclose.searchMatch— the search hit that resolved a term to this symbol, so you can see whyapplebecameAAPL. It isnullfor symbols you passed in yourself.
Terms in the data: marketState is Yahoo's session flag (PRE, REGULAR, POST, CLOSED); regularMarketTime is the Unix timestamp of the quoted price; trailingPE uses the last twelve months of earnings while forwardPE uses the analyst estimate; regularMarketDayRange and fiftyTwoWeekRange are pre-formatted low - high strings.
How much does it cost?
This actor uses pay-per-event pricing: you pay only for the symbols it actually delivers, layered by what you enable.
| Event | When it's charged | Price |
|---|---|---|
| Symbol data row | Per symbol returned (quote fields, promoted scalars, full quote object) | $0.50 per 1,000 rows |
| Summary & financials add-on | Per symbol, when Include summary & financials is on — it is on by default | +$0.50 per 1,000 rows |
| Price history add-on | Per symbol, when Include price history is on | +$0.50 per 1,000 rows |
One symbol with the defaults (summary on, history off) costs $1.00 per 1,000 symbols; all three together cost $1.50 per 1,000. Turn Include summary & financials off for a quotes-only run at the base $0.50 per 1,000.
How do I run it from my own code?
Run it programmatically with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/yahoofinance-api-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"query": "apple","resultsPerQuery": 1,"includeSummary": true,"includeHistory": false,"historyRange": "1mo","historyInterval": "1d","region": "US","lang": "en-US","maxItems": 0,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}'
Or with the Apify CLI: apify call yahoofinance-api-scraper -i input.json -o.
FAQ
Do I need a Yahoo Finance account or API key?
No. The actor signs its own requests to Yahoo's mobile API the way the Yahoo Finance app does — no login, no Yahoo developer key, no quota to manage. You only need an Apify account.
Should I use a search term or a ticker?
Either. query takes what a person would type (apple, bitcoin, s&p 500) and resolves it through Yahoo's own search, keeping the top resultsPerQuery matches — raise that from 1 if you want every match for a name. symbols skips search entirely and is the right choice when you already know the ticker, including suffixed foreign listings like BP.L.
Is the data real-time?
It is the same quote the Yahoo Finance app shows, including marketState, pre-market and post-market prices. Whether a given exchange is live or delayed is Yahoo's decision, not this actor's — read regularMarketTime, the Unix timestamp of the price you were given, if that matters to you.
Can I get income statements, balance sheets and cash flow?
Yes, with Include summary & financials (on by default). summary.incomeStatementHistory, balanceSheetHistory and cashflowStatementHistory carry the annual statements and the …Quarterly variants the quarterly ones, alongside earnings history, analyst trends and ownership. See the module table above.
Can I get intraday price history?
Yes. Enable Include price history and set historyInterval as fine as 1m with historyRange from 1d to max. Yahoo decides how much it serves for a given combination, so a very fine interval over a long range can come back with fewer candles than the range suggests.
What am I charged for?
One symbol row per resolved symbol, plus one add-on event per symbol for the summary and for the price history when those options are on. Because Include summary & financials defaults to on, a default run bills two events per symbol. maxItems caps the symbols, and with maxItems: 0 the cap is simply how many symbols your terms and tickers resolved to.
Can I run it on a schedule?
Yes. Put it on an Apify schedule with a fixed list of symbols and you get one snapshot row per symbol per run — a simple way to build your own price or fundamentals history in a dataset.
What happens if a term or ticker doesn't resolve?
A search term that matches nothing is logged as a warning and produces no row. A ticker you passed in that Yahoo has no quote for still produces a row carrying the symbol with empty fields, so a failed input is visible in the output rather than silently missing. A summary or history call that fails logs a warning and leaves that one object null — the quote row is still delivered.
How does it work?
The actor impersonates Yahoo Finance's official app/site and calls its private API the same way the app does, then normalises each response into the flat record above. No browser, no HTML scraping — just clean, structured data.
Good to know
- Scrape only public record data and respect Yahoo Finance.com's Terms of Service and robots policy.
- For personal data, comply with GDPR/CCPA and applicable law — you are the data controller.
- Fields can be
nullwhen Yahoo Finance doesn't expose them for a given record. - Requests go through Apify Proxy by default; residential IPs are the safest choice for long or scheduled runs.
Found this useful?
Give the Yahoo Finance Scraper a star on Apify and check out my other apify-*-api-scraper actors.
Finance & markets toolkit
Part of the Finance & markets toolkit — market data and currency conversion for financial research and trading tools:
- Finviz Ticker Scraper — Scrapes stock, ETF, index, forex, crypto, and futures pages from Finviz.
- Wise Currency Converter Helper — Currency conversion quotes from Wise's public gateway API.
Did you find this useful?
Rate this actor on Apify! Your feedback helps other users find it and helps us keep improving it.