Yahoo Finance Scraper
Get Yahoo Finance data without an API key: search tickers, real-time quotes, and OHLCV price history for stocks, ETFs, FX and crypto as JSON.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
mode,query,symbols(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Inputs
| Field | What it does | Type |
|---|---|---|
mode | What to fetch. "search" = find ticker symbols by name (uses Query). "quote" = current price snapshot for each Symbol. "history" = OHLCV price history for each Symbol over Range/Interval. | string |
query | Company or asset name to search ticker symbols for, e.g. "apple", "vanguard s&p 500", "bitcoin". Only used when Mode is "search". | string |
symbols | One or more ticker symbols to fetch, e.g. AAPL, MSFT, ^GSPC (S&P 500 index), EURUSD=X (FX), BTC-USD (crypto). Used by "quote" and "history" modes. | array |
range | How far back the price history goes (history mode). Longer ranges return more rows. | string |
interval | The candle size / sampling interval for history. Intraday intervals (1m, 5m) only work with short ranges (about 1d-1mo). | string |
maxItems | Maximum number of result rows to return and charge for (caps history bars and search results). Quotes return one row per symbol. | integer |
notionConnector | Optional. Write each item as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default) — results are always saved to the dataset regardless. | string |
notionParentId | Optional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead. | string |
What you get
A structured dataset — each result includes fields like:
changePctclosecurrencydateexchangefiftyTwoWeekHighfiftyTwoWeekLowhighindustrylowmarketTimenameopenpreviousCloseExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
3 ready-to-run use cases
Yahoo Finance Ticker Symbol Lookup by Company Name
Don't know the ticker? Search any company, fund, or ETF by name on Yahoo Finance and get back matching stock symbols, exchange, and quote type.
AAPL Live Stock Quote from Yahoo Finance API
Real-time AAPL quote with current price, currency, daily change, and 52-week high/low in a single row. Re-run any time for a fresh Apple stock snapshot.
TSLA Historical Daily Price Data, 1 Year OHLCV
One year of daily open, high, low, close, and volume bars for Tesla (TSLA), ready to drop into a backtest, chart, or quant model from Yahoo Finance.
Yahoo Finance Scraper
Scrape Yahoo Finance with no API key and no login. Three modes:
- search — find ticker symbols by name (e.g. "apple" → AAPL).
- quote — current price snapshot for one or more symbols.
- history — OHLCV price history (candles) over a range/interval.
Works for stocks, ETFs, indices (^GSPC), FX (EURUSD=X) and crypto (BTC-USD).
It calls Yahoo's public JSON endpoints directly (query1/query2.finance.yahoo.com) — no HTML parsing, no scraping fragility.
Input
| Field | Type | Default | Notes | ||
|---|---|---|---|---|---|
mode | string | quote | search \ | quote \ | history |
query | string | — | Search text (search mode), e.g. apple | ||
symbols | array | — | Tickers (quote/history mode), e.g. ["AAPL","MSFT","BTC-USD"] | ||
range | string | 1mo | 1d,5d,1mo,3mo,6mo,1y,5y,max (history) | ||
interval | string | 1d | 1m,5m,1d,1wk,1mo (history; intraday needs short range) | ||
maxItems | integer | 100 | Caps history rows / search results | ||
proxyConfiguration | object | { "useApifyProxy": false } | Optional; only needed if Yahoo rate-limits your IP (429) |
Examples
{ "mode": "search", "query": "apple", "maxItems": 20 }
{ "mode": "quote", "symbols": ["AAPL", "MSFT", "BTC-USD"] }
{ "mode": "history", "symbols": ["AAPL"], "range": "1mo", "interval": "1d" }
Output
search rows:
{ "symbol": "AAPL", "name": "Apple Inc.", "exchange": "NASDAQ", "quoteType": "EQUITY", "sector": "Technology", "industry": "Consumer Electronics" }
quote rows:
{ "symbol": "AAPL", "price": 201.0, "currency": "USD", "exchange": "NMS", "previousClose": 198.0, "changePct": 1.52, "fiftyTwoWeekHigh": 260.1, "fiftyTwoWeekLow": 169.2, "marketTime": "2026-06-11T20:00:00.000Z" }
history rows (one per bar):
{ "symbol": "AAPL", "date": "2026-05-12T13:30:00.000Z", "open": 210.9, "high": 211.3, "low": 206.7, "close": 207.0, "volume": 51000000 }
Every successful row has ok: true. Failures and empty results come back as ok: false rows with an errorCode (RATE_LIMITED, NOT_FOUND, NO_RESULTS, BAD_INPUT, NETWORK, …) and are never charged.
Pricing
Pay-per-result: one charge per successful row (item). Diagnostic, empty, and rate-limited rows are not charged.
Notes
- Yahoo rejects generic User-Agents — the actor always sends a browser-like UA and rotates it per retry.
- Yahoo rate-limits aggressively. On HTTP 429 the actor backs off and retries; persistent limits surface as
RATE_LIMITEDrows. Enable Apify Proxy if you hit this under high volume. - Invalid symbols surface as
NOT_FOUNDrows (other symbols in the batch still return data).