Yahoo Finance Scraper — Stock, ETF & Crypto Data avatar

Yahoo Finance Scraper — Stock, ETF & Crypto Data

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Yahoo Finance Scraper — Stock, ETF & Crypto Data

Yahoo Finance Scraper — Stock, ETF & Crypto Data

Scrape Yahoo Finance by ticker symbol or search query. Extract OHLCV historical prices, live quotes, and symbol lookup. Covers stocks, ETFs, indices, forex, and crypto. No API key, no login.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Categories

Share

Yahoo Finance Scraper — Stock, ETF & Crypto OHLCV + Live Quotes

Extract historical price data, live quotes, and symbol search results from Yahoo Finance — covering stocks, ETFs, indices, forex pairs, and cryptocurrencies. No API key required, no login, no external subscription.

What does Yahoo Finance Scraper do?

Yahoo Finance Scraper connects directly to Yahoo Finance's undocumented JSON endpoints (query1.finance.yahoo.com and query2.finance.yahoo.com) without any API key or authentication. In historical mode, it calls the /v8/finance/chart/{symbol} endpoint to retrieve full OHLCV (Open, High, Low, Close, Adjusted Close, Volume) time-series bars for each ticker you specify. Supported ranges span from one day to the full available history, with intervals ranging from 1-minute intraday bars to monthly bars. In quote mode, it fetches live market data via /v7/finance/quote (with automatic fallback to the chart meta endpoint if the batch endpoint is blocked). In search mode, it hits /v1/finance/search to look up symbols by keyword. A worker-pool design lets you process multiple symbols concurrently, easily generating thousands of OHLCV rows per run.

Who is it for?

  • Quant traders and algo developers who need bulk OHLCV data for backtesting strategies without paying for a commercial data subscription.
  • Financial analysts and portfolio managers who want automated daily/weekly price pulls for spreadsheet models or BI dashboards.
  • Data scientists and ML engineers building predictive models on equity, ETF, crypto, or forex price series.
  • Fintech developers who need to embed market data in apps, bots, or notification systems without a paid data vendor.
  • Academic researchers studying market microstructure, volatility, or cross-asset correlations using free public data.

Use cases

  • Backtest a moving-average crossover strategy across 50 stocks using 5 years of daily OHLCV data pulled in one run.
  • Build a Google Sheets dashboard that auto-refreshes live quotes for your personal portfolio every morning via a scheduled run.
  • Download 1-minute intraday bars for crypto pairs (BTC-USD, ETH-USD) to feed a machine-learning volatility model.
  • Monitor 52-week high/low breakouts across a list of ETFs with a daily scheduled actor run and Slack webhook alert.
  • Look up the correct ticker symbol for an obscure foreign equity or index before adding it to a watchlist.

Why use Yahoo Finance Scraper?

  • Fully keyless: no Yahoo Finance API key, no sign-up, no credit card — just run it.
  • Rich output: up to 21 fields per row covering price, volume, change, market cap, exchange, currency, and asset type.
  • Bulk-ready: feed dozens or hundreds of symbols at once; one historical run easily produces 10,000+ OHLCV rows.
  • Multi-asset class: works for stocks (NYSE, NASDAQ, LSE, etc.), ETFs, major indices (^GSPC, ^DJI), forex pairs (EURUSD=X), and crypto (BTC-USD, ETH-USD).
  • Flexible time ranges: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max with intervals from 1m to 3mo.
  • Export anywhere: download results as CSV, JSON, Excel, or XML from the Apify dataset; integrate with Google Sheets, Slack, Zapier, Make, and more.

What data can you extract?

Historical mode fields

FieldTypeDescription
symbolstringTicker symbol (e.g., AAPL)
namestringCompany or asset full name
modestringAlways "historical" for this mode
datestringISO date of the bar (YYYY-MM-DD)
opennumberOpening price
highnumberIntraday high price
lownumberIntraday low price
closenumberClosing price
adjClosenumberAdjusted closing price (accounts for splits/dividends)
volumenumberNumber of shares/units traded
currencystringPricing currency (USD, EUR, GBP, etc.)
exchangestringExchange name (NasdaqGS, NYSEArca, etc.)
quoteTypestringEQUITY, ETF, INDEX, CRYPTOCURRENCY, CURRENCY, etc.

Quote mode fields (all of the above plus)

FieldTypeDescription
pricenumberCurrent market price
changenumberPrice change from previous close
changePercentnumberPercentage change
dayHighnumberDay's high price
dayLownumberDay's low price
fiftyTwoWeekHighnumber52-week high price
fiftyTwoWeekLownumber52-week low price
marketCapnumberTotal market capitalization

Historical output example

{
"symbol": "AAPL",
"name": "Apple Inc.",
"mode": "historical",
"date": "2024-01-15",
"open": 183.920006,
"high": 185.089996,
"low": 181.0,
"close": 182.320007,
"adjClose": 182.05069,
"volume": 65421000,
"price": null,
"change": null,
"changePercent": null,
"dayHigh": null,
"dayLow": null,
"fiftyTwoWeekHigh": null,
"fiftyTwoWeekLow": null,
"marketCap": null,
"currency": "USD",
"exchange": "NasdaqGS",
"quoteType": "EQUITY"
}

How to use

Run the actor with mode: "historical", a list of ticker symbols, a time range, and a bar interval.

Steps:

  1. Open the actor on Apify and click Try for free.
  2. Set Mode to historical.
  3. Enter your ticker symbols (comma-separated or as a list): AAPL, MSFT, TSLA, BTC-USD.
  4. Choose a Range (e.g., 6mo) and Interval (e.g., 1d).
  5. Click Start and download the dataset as CSV or JSON when complete.

Input JSON:

{
"mode": "historical",
"symbols": ["AAPL", "MSFT", "TSLA", "BTC-USD", "ETH-USD"],
"range": "6mo",
"interval": "1d",
"proxy": { "useApifyProxy": true }
}

With 5 symbols × 6 months of daily bars, you get roughly 650 rows in a single run.

Option B — Live Quotes

Use mode: "quote" to get the latest price, change, and market metadata for a list of symbols.

Steps:

  1. Set Mode to quote.
  2. Enter your symbols list.
  3. Run the actor — results are typically ready in under 30 seconds.

Input JSON:

{
"mode": "quote",
"symbols": ["AAPL", "MSFT", "GOOGL", "AMZN", "NVDA", "EURUSD=X", "^GSPC"],
"proxy": { "useApifyProxy": true }
}

Use mode: "search" to look up ticker symbols by company name or keyword.

Input JSON:

{
"mode": "search",
"query": "Nvidia",
"proxy": { "useApifyProxy": true }
}

Input parameters

ParameterTypeDefaultDescription
modestringhistoricalScraping mode: historical, quote, or search
symbolsarray["AAPL","MSFT","TSLA"]Ticker symbols for historical/quote modes
rangestring1moTime range: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
intervalstring1dBar interval: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo
querystringSearch term for search mode
proxyobjectuseApifyProxy: trueApify proxy configuration

Full input JSON example:

{
"mode": "historical",
"symbols": ["AAPL", "MSFT", "TSLA", "AMZN", "NVDA", "^GSPC", "EURUSD=X", "BTC-USD"],
"range": "1y",
"interval": "1wk",
"proxy": { "useApifyProxy": true }
}

Output example

A fully populated quote-mode output row:

{
"symbol": "NVDA",
"name": "NVIDIA Corporation",
"mode": "quote",
"date": null,
"open": null,
"high": null,
"low": null,
"close": null,
"adjClose": null,
"volume": 42318900,
"price": 875.4,
"change": 23.15,
"changePercent": 2.7132,
"dayHigh": 879.99,
"dayLow": 850.21,
"fiftyTwoWeekHigh": 974.0,
"fiftyTwoWeekLow": 394.45,
"marketCap": 2158000000000,
"currency": "USD",
"exchange": "NasdaqGS",
"quoteType": "EQUITY"
}

Tips for best results

  • Use standard tickers: Yahoo Finance uses suffixes for non-US stocks (e.g., ASML.AS for Amsterdam, 7203.T for Tokyo). Look up the correct symbol via search mode first.
  • Crypto pairs: use the -USD suffix (e.g., BTC-USD, ETH-USD, SOL-USD). Yahoo Finance covers hundreds of crypto pairs.
  • Forex: append =X (e.g., EURUSD=X, GBPJPY=X).
  • Indices: prefix with ^ (e.g., ^GSPC for S&P 500, ^DJI for Dow Jones, ^VIX for VIX).
  • Intraday data: short intervals (1m, 5m) are only available for the past 7–60 days depending on the interval. Use daily/weekly intervals for multi-year history.
  • Bulk runs: put all your symbols in one run rather than many small runs — each symbol only takes a few seconds.
  • Adjusted vs unadjusted: the adjClose field is adjusted for dividends and splits. Use it for calculating returns. Use close for the raw price.
  • Schedule your runs: set up a daily schedule on Apify to auto-pull EOD data every trading day. Combine with a Google Sheets integration to auto-update your models.
  • Max history: use range: "max" to get the full historical record for a ticker — for large-cap US stocks this can go back to the 1980s.
  • Zero results: if a symbol returns 0 rows, double-check the ticker spelling and try the search mode to find the correct symbol.

Integrations

Yahoo Finance Scraper works natively with all Apify integrations:

  • Google Sheets: use the Apify Google Sheets integration to auto-sync your dataset into a spreadsheet after each run.
  • Slack: configure a webhook to post a message when your run completes (ideal for daily price alert workflows).
  • Zapier / Make: trigger downstream workflows — send data to Airtable, Notion, a database, or any app in your stack.
  • Webhooks: set a webhook URL in actor settings to POST the run result to your own server or API endpoint.
  • Apify Scheduler: schedule daily, weekly, or custom-cron runs to keep your price data fresh automatically.

API usage

cURL

curl -X POST \
"https://api.apify.com/v2/acts/logiover~yahoo-finance-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"historical","symbols":["AAPL","MSFT"],"range":"6mo","interval":"1d"}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/yahoo-finance-scraper').call({
mode: 'historical',
symbols: ['AAPL', 'MSFT', 'TSLA'],
range: '1y',
interval: '1wk',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} OHLCV rows`);

Python

from apify_client import ApifyClient
client = ApifyClient(token='YOUR_TOKEN')
run = client.actor('logiover/yahoo-finance-scraper').call(run_input={
'mode': 'historical',
'symbols': ['AAPL', 'MSFT', 'TSLA', 'BTC-USD'],
'range': '6mo',
'interval': '1d',
})
items = list(client.dataset(run['defaultDatasetId']).iterate_items())
print(f'Got {len(items)} OHLCV rows')

Use with AI agents (MCP)

Yahoo Finance Scraper is compatible with the Apify MCP (Model Context Protocol) server, which lets AI agents and LLM-powered tools call it directly. Connect the Apify MCP server to your agent framework and then ask: "Get 6 months of daily OHLCV data for AAPL, MSFT, and TSLA, then calculate which had the highest total return." The agent will run the actor, retrieve the dataset, and perform the calculation — all in one automated workflow.

FAQ

Does this actor require an API key?

No. Yahoo Finance Scraper uses Yahoo Finance's publicly accessible JSON endpoints which do not require authentication. You do not need a Yahoo Finance API subscription or any credentials.

What asset classes does it cover?

It covers US and international stocks (NYSE, NASDAQ, LSE, TSX, ASX, etc.), ETFs, major and minor indices, forex currency pairs, and hundreds of cryptocurrencies — anything available on Yahoo Finance.

How many results can I get per run?

In historical mode with 10 symbols at daily interval over 5 years, you get roughly 12,500 rows per run. With max range and 50+ symbols, a single run can easily produce 100,000+ rows. There is no hard cap — the actor paginates automatically.

Why are some bars null or missing?

Some bars may be null for market holidays, trading halts, or symbols with thin liquidity. The actor automatically skips null bars so your output contains only clean, tradeable data points.

What ranges and intervals can I use?

Ranges: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max. Intervals: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo. Note: short intraday intervals (1m–90m) are only available for recent data (up to ~60 days back).

How do I export data to Excel or CSV?

After the run completes, click the Export button in your Apify dataset. You can download CSV, JSON, XML, Excel, or RSS. You can also use the Apify API to pull data programmatically.

How fast is the actor?

Each symbol typically takes 1–3 seconds in historical mode. For 20 symbols, expect a run to complete in under 60 seconds. Quote mode is faster — a batch of 20+ symbols takes 2–5 seconds.

Is this faster than yfinance (Python library)?

The actor runs in the cloud on Apify infrastructure, so there is no local setup. For large bulk downloads, it can process symbols concurrently without rate-limit issues that sometimes affect local yfinance runs.

What if a symbol returns zero results?

First, verify the ticker is correct using mode: "search". Check that the symbol uses the right exchange suffix for non-US stocks. If a ticker was recently delisted or renamed, Yahoo Finance may no longer have data for it.

How often is Yahoo Finance data updated?

Quote data is delayed by approximately 15 minutes for most equity markets (real-time for some). Historical OHLCV data is typically finalized by the next trading day. The actor reflects whatever Yahoo Finance currently serves.

Can I use this for automated trading?

This actor is suitable for data collection, backtesting, and research. Yahoo Finance data is delayed — do not use it for real-time automated order execution. For live trading, use a brokerage API.

This actor accesses Yahoo Finance's publicly available, non-login-protected JSON endpoints — the same data your browser loads when you visit finance.yahoo.com. It does not bypass any authentication, CAPTCHA, or paywall. Use it responsibly, respect Yahoo's Terms of Service, and do not use the data for commercial redistribution without reviewing Yahoo's licensing terms.