Yahoo Finance Scraper - Quotes and OHLCV History
Pricing
$1.00 / 1,000 item returneds
Yahoo Finance Scraper - Quotes and OHLCV History
Get Yahoo Finance quotes and OHLCV history. No API key. Search a ticker, or read the current quote with change %. You also get the previous close and the 52-week range. It also covers SPY, ^GSPC, EURUSD=X and BTC-USD. Prices are delayed, as Yahoo delays them. $1.00 per 1,000 rows.
Pricing
$1.00 / 1,000 item returneds
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
12 hours ago
Last modified
Categories
Share
Yahoo Finance Scraper: quotes, OHLCV history and ticker lookup, no API key
Three things in one actor. Look up a ticker symbol from a company name, take a price snapshot for a
list of symbols, or pull OHLCV bars over a range you choose. Stocks, indices like ^GSPC, FX pairs
like EURUSD=X and crypto like BTC-USD all work the same way.
Prices are delayed exactly as Yahoo delays them. This is not an exchange feed and it should not be used as one.
| Input | A company name, or a list of ticker symbols |
| Output | One row per symbol, or one row per price bar |
| Ceiling | 1,000 rows per run |
| Account needed | None, and no API key |
| Price | $1.00 per 1,000 rows, flat on every plan |
๐ What Yahoo Finance Scraper does
Search mode takes a name like vanguard s&p 500 and gives you back the symbols that match, with
the exchange, the instrument type and, for companies, the sector and industry. It is the mode to run
first when you have names rather than tickers.
Quote mode takes symbols and returns the current price, the currency, the exchange, the previous close, the percentage change and the 52-week high and low.
History mode takes the same symbols and returns one row per bar: date, open, high, low, close and volume. Bars with nothing in them at all are skipped rather than delivered as a row of nulls.
Two settings shape history: Range, how far back to go, and Interval, how big each bar is. Minute and five-minute bars only exist for short ranges, which is Yahoo's rule rather than this actor's.
๐ฅ What you give it
{"mode": "history","symbols": ["AAPL", "MSFT", "BTC-USD"],"range": "6mo","interval": "1d","maxItems": 500}
| Field | Default | What it is |
|---|---|---|
mode | quote | search to find symbols, quote for a price snapshot, history for OHLCV bars. |
query | box starts at apple | The name to look up. Used by search mode only. |
symbols | box starts at AAPL, MSFT, BTC-USD | The symbols to fetch. Used by quote and history. A comma-separated string works too. |
range | 1mo | 1d, 5d, 1mo, 3mo, 6mo, 1y, 5y or max. Read the note below, it affects quote mode as well. |
interval | 1d | 1m, 5m, 1d, 1wk or 1mo. The intraday sizes need a short range. |
maxItems | 100 | How many rows to return, up to 1,000. |
notionConnector | none | Optional. Writes each row into your Notion once the run finishes. |
notionParentId | none | Optional. The Notion data source to write into. |
proxyConfiguration | off | Optional network settings. Off by default, and a normal run does not need it. |
range changes what changePct means in quote mode. The previous close is taken from just
before the start of the range you asked for, so with the default one-month range you get the move
over that month, not the move today. Set range to 1d when you want the day's change.
In history mode the cap keeps the first rows, and the first rows are the oldest. Asking for 5y
of daily bars with maxItems: 100 returns the oldest hundred days of the first symbol, not the
latest hundred, and later symbols in the list can be cut off entirely. Pick a range that fits inside
your cap, or run one symbol at a time.
๐ค What you get back
A real quote row from a recent run:
{"ok": true,"symbol": "AAPL","price": 332.27,"currency": "USD","exchange": "NMS","previousClose": 304.91,"changePct": 8.9731,"fiftyTwoWeekHigh": 344.57,"fiftyTwoWeekLow": 235.03,"marketTime": "2026-09-11T20:00:01.000Z"}
The row shape follows the mode.
| Mode | Fields |
|---|---|
search | symbol, name, exchange, quoteType, sector, industry |
quote | symbol, price, currency, exchange, previousClose, changePct, fiftyTwoWeekHigh, fiftyTwoWeekLow, marketTime |
history | symbol, date, open, high, low, close, volume |
| Field | What it is |
|---|---|
marketTime | When Yahoo last updated that price, as an ISO timestamp. Worth checking before you treat a number as fresh. |
previousClose | The close before the start of your range, not always yesterday. See the note above. |
changePct | Computed from price and previousClose, to four decimal places. |
date | The bar's own timestamp in history mode. Bars come back oldest first. |
volume | Rounded to a whole number. null where Yahoo published none. |
sector, industry | Search mode only, and only for companies. Funds, indices and crypto leave them null. |
๐งพ Reading the output
Two kinds of row land in your dataset, and ok tells them apart.
| Row | How to spot it | Charged |
|---|---|---|
| A quote, bar or search hit | ok: true | yes |
| A diagnostic | ok: false and an errorCode | no |
A bad symbol does not stop the good ones. You get real rows for the symbols that worked and one
uncharged diagnostic row per symbol that did not, with symbol on the row naming it.
The overview table in the Apify console shows the price columns only, so a diagnostic row appears there as a line with just the symbol filled in. Switch to the JSON or All fields view to read it.
| Code | What it means |
|---|---|
BAD_INPUT | search mode with no query, or quote and history with no symbols. |
NOT_FOUND | Yahoo has nothing under that symbol. It also shows up when the interval and range you picked are not a pair Yahoo supports, so check both before assuming the symbol is wrong. |
NO_RESULTS | The symbols resolved and Yahoo returned no rows for them. |
RATE_LIMITED | Yahoo asked for a slower pace than the run could keep. Try fewer symbols. |
SERVER_ERROR | Yahoo answered 5xx. Usually passes. |
BLOCKED | Yahoo refused the request. Re-run it. |
NETWORK | Yahoo was unreachable. Re-run it. |
โถ๏ธ How to run it
- Open Yahoo Finance Scraper and click Try for free.
- Pick a Mode. Start with quote if you already know your symbols, search if you do not.
- Fill in Symbols, or Search query in search mode.
- For history, set Range and Interval so the number of bars fits inside Max items.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.
๐ฐ How much does it cost?
$1.00 per 1,000 rows. Flat on every Apify plan, no volume tiers.
A quote row, a history bar and a search hit all count the same. Duplicate rows are dropped before they are counted, diagnostic rows are not charged, and a run that returns no data is not charged.
๐ก What people use it for
- Turning a watchlist of company names into ticker symbols, then feeding those symbols back in.
- A daily snapshot of a portfolio, scheduled, with
rangeset to1dso the change is the day's. - Pulling six months of daily bars for a backtest without applying for a data licence.
- Tracking an FX pair or a crypto symbol alongside equities, since they all use the same fields.
- Giving a model a small, clean price table instead of a page of finance HTML.
๐ง What it does not do
- Prices are delayed, exactly as Yahoo delays them. Do not trade off this.
- No fundamentals. No earnings, balance sheets, dividends, splits or analyst numbers.
- 1,000 rows per run. A long daily history will not fit in one run, and the cap keeps the oldest rows, not the newest.
- Intraday bars need a short range. Minute data over a year does not exist to be returned.
- Quote mode measures change against your range, so the default is a monthly move rather than a daily one.
- Every symbol is fetched before the cap is applied, so a long list still takes the time even when most of it is trimmed.
- These are Yahoo's public endpoints, not a contracted feed, and Yahoo can change them.
- No order book, no trades, no options chains.
๐งญ Which market data scraper do you need?
| If you want | Use |
|---|---|
| Quotes, OHLCV history and ticker lookup | This one |
| SEC filings by phrase, ticker or CIK | SEC EDGAR Scraper |
| Crypto prices and market rankings | CoinGecko Scraper |
| Trades disclosed by members of Congress | Congress Stock Trades Scraper |
| Prediction market odds and volume | Kalshi Markets Scraper |
โ Questions people ask
Do I need a Yahoo account or key? No. Nothing to apply for and no quota to watch.
Is this real time? No. The prices carry Yahoo's delay, and marketTime tells you how old each
one is.
Why is my percentage change so large? Because range was left at a month. Set it to 1d for the
day's move.
Why did the last symbol in my list return nothing? The row cap is shared across the whole run and
is applied in list order. Raise maxItems, shorten the range, or run the symbols separately.
Why did a valid symbol come back NOT_FOUND? Check the interval and range together. Yahoo
reports an unsupported pair the same way it reports an unknown symbol.
Can I get dividends or earnings? Not from this one. It covers quotes, bars and symbol lookup.
๐ If something breaks
Open the Issues tab on the actor page. Send the run ID, the mode and the symbols you used. The
errorCode on the diagnostic row usually names the problem on its own.