Yahoo Finance Scraper & API – History, Options, Financials avatar

Yahoo Finance Scraper & API – History, Options, Financials

Pricing

from $0.40 / 1,000 results

Go to Apify Store
Yahoo Finance Scraper & API – History, Options, Financials

Yahoo Finance Scraper & API – History, Options, Financials

Yahoo Finance API alternative: stock quotes, historical prices, options chains with Greeks, financial statements, holders, insider trades, analyst ratings, earnings, SEC filings, news, screeners and symbol search, for stocks on 45 exchanges, ETFs, funds, indices, crypto, forex and futures.

Pricing

from $0.40 / 1,000 results

Rating

0.0

(0)

Developer

Akhil rajesh

Akhil rajesh

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

7 hours ago

Last modified

Share

Yahoo Finance Scraper & API – History, Options, Financials

Get Yahoo Finance data for any list of tickers, company names or ISINs, as clean rows: live quotes and fundamentals, historical stock prices (any period and interval, back to the first trade), options chains with Greeks, financial statements (income statement, balance sheet, cash flow), holders and insider trades, analyst ratings, earnings surprises and estimates, SEC filings, news, Yahoo's screeners (day gainers and losers for the US, India, the UK, Japan and 17 more markets, trending tickers, crypto, ETFs) and a symbol search. It works like a Yahoo Finance API: send a list of tickers, get structured JSON, CSV or Excel back.

  • Any ticker, name or ISIN. AAPL, BRK.B, VOD.L, RELIANCE.NS, 7203.T, BTC-USD, ^GSPC, EURUSD=X, GC=F, a name (Reliance Industries, nestle, bmw), an ISIN (US0378331005), or an Indian ticker without its suffix (JIOFIN, TCS). Each row says how its input was matched; an input Yahoo doesn't know gets a free "not found" row with Yahoo's suggestions, never an empty charged one.
  • Cheap long history. Ten years of daily prices for 100 tickers costs about $0.10 with one row per ticker (the whole series as lists), or one row per bar for spreadsheets.
  • Everything in one run: price history, statements, options, holders, analysts, SEC filings and news per ticker, plus screeners and searches. Fundamentals, holders, analysts and filings come from one request per ticker.
  • Numbers you can trust: real daily bars for "all available" history (Yahoo's own "max" gives quarterly bars), London prices in pence with per-share figures to match, ratios in one currency when a company reports in another, market caps for Indian listings Yahoo leaves without one. See Why the numbers are right.
  • Nothing dropped silently: a request Yahoo throttles or doesn't answer is asked again, and anything still missing is named in the run's status message. A restarted run stores nothing twice.

What you get

Every row goes to one dataset with a rowType: filter on it (Apify's dataset views can't filter rows, so every view lists every row, with rowType first). Fields named ...Percent are in percent (27.62 means 27.62%).

quote: one row per ticker. With Include fundamentals (on by default) it also carries the company profile and financial figures. A real row, shortened:

{
"rowType": "quote",
"input": "AAPL",
"matchedBy": "ticker",
"symbol": "AAPL",
"name": "Apple Inc.",
"exchangeName": "NasdaqGS",
"currency": "USD",
"price": 345.8725,
"changePercent": 1.1323,
"marketCap": 5047725326336,
"trailingPE": 39.664276,
"dividendYieldPercent": 0.32,
"sector": "Technology",
"revenue": 466822987776,
"profitMarginPercent": 27.619,
"targetMeanPrice": 329.3759,
"recommendation": "buy",
"nextEarningsDate": "2026-11-02",
"url": "https://finance.yahoo.com/quote/AAPL"
}
GroupFields
Quoteprice, change, changePercent, previousClose, open, dayLow, dayHigh, volume, averageVolume, marketCap, marketCapCurrency, fiftyTwoWeekLow/High, fiftyDayAverage, twoHundredDayAverage, bid, ask, preMarketPrice, postMarketPrice, marketState, quoteTime, delayMinutes
Valuation and dividendstrailingPE, forwardPE, epsTrailing, epsForward, bookValue, priceToBook, pegRatio, priceToSales, enterpriseValue, enterpriseToRevenue, enterpriseToEbitda, dividendRate, dividendYieldPercent, exDividendDate, payoutRatioPercent
Companysector, industry, country, website, employees, description, officers
Financials (TTM)revenue, revenueGrowthPercent, grossMarginPercent, operatingMarginPercent, profitMarginPercent, ebitda, netIncome, totalCash, totalDebt, debtToEquityPercent, freeCashflow, returnOnEquityPercent, financialCurrency
AnalyststargetMeanPrice (and median, high, low), recommendation, recommendationMean, analystCount, analystStrongBuy ... analystStrongSell, nextEarningsDate, epsEstimate, revenueEstimate
OwnershipinsidersPercent, institutionsPercent, sharesShort, shortPercentOfFloat, floatShares, beta; with holders on, insiders' 6 months: insiderBuys6m, insiderSells6m, insiderSharesBought6m, insiderSharesSold6m, insiderNetShares6m, and the shares insiders hold, insiderSharesHeld (empty when Yahoo sends its placeholder of zeros)
ETFs and fundsfundFamily, fundCategory, expenseRatioPercent, fundTotalAssets, ytdReturnPercent, threeYearReturnPercent, topHoldings, sectorWeightsPercent
CryptocirculatingSupply, maxSupply, volume24h

history (Include price history, one row per bar): newest first, with the dividend or split in that bar, and with pre-market and after-hours bars the session (pre, regular, post).

{"rowType": "history", "symbol": "AAPL", "date": "2025-11-10", "interval": "1d", "open": 268.959991, "high": 273.730011,
"low": 267.459991, "close": 269.429993, "adjClose": 268.698608, "volume": 41312400, "dividend": 0.26, "splitRatio": null}

historySeries (Price history output: one row per ticker): the whole series in one row, each column a list, oldest first, with the dividends and splits by date. Charged as one result, however many bars.

{"rowType": "historySeries", "symbol": "AAPL", "interval": "1d", "currency": "USD", "firstDate": "2025-10-16",
"lastDate": "2026-10-16", "barCount": 252, "dates": ["2025-10-16", "2025-10-17", "..."],
"opens": [248.25, 248.020004], "highs": [249.039993, 253.380005], "lows": [245.130005, 247.270004],
"closes": [247.449997, 252.289993], "adjCloses": [246.539291, 251.361481], "volumes": [39777000, 49147000],
"dividends": [{"date": "2025-11-10", "amount": 0.26}, {"date": "2026-02-09", "amount": 0.26}], "splits": null}

Periods from 1 day to All available (every daily bar: Apple since December 1980), or your own start and end dates (only bars inside them are stored; the weekly, monthly or quarterly bar holding the start date is kept); intervals from 1 minute to 3 months. 1 day and 5 days are trading sessions: run on a Saturday, "1 day" is Friday's session. An end date alone ends the period, which counts back from it. Daily and longer bars are dated in the exchange's calendar, intraday bars in its local time with offset. Prices before a split are split-adjusted, as Yahoo gives them; adjClose is also adjusted for dividends. A series too big for one dataset item (9 MB) comes in parts (part, parts).

Series rows (and option chain rows, below) are made for JSON and the API. Apify's CSV and Excel exports hold at most 2,000 columns and spread each list over one column per item, so for spreadsheets choose one row per bar (or per contract).

financials (Include financial statements): one row per reported period, annual and/or quarterly (about 4 years and 5 quarters), with 61 lines of the income statement, balance sheet and cash flow, including the lines banks and insurers report.

{"rowType": "financials", "symbol": "AAPL", "period": "annual", "periodEnd": "2025-09-30", "currency": "USD",
"totalRevenue": 416161000000, "grossProfit": 195201000000, "operatingIncome": 133050000000, "netIncome": 112010000000,
"dilutedEps": 7.46, "totalAssets": 359241000000, "totalDebt": 98657000000, "freeCashFlow": 98767000000}

option (Include options chains): one row per contract, with days to expiration and the Greeks.

{"rowType": "option", "symbol": "SPY", "contractSymbol": "SPY261019C00763000", "optionType": "call",
"expiration": "2026-10-19", "strike": 763.0, "lastPrice": 3.07, "bid": 3.05, "ask": 3.07, "volume": 39814,
"openInterest": 199, "impliedVolatilityPercent": 10.6637, "inTheMoney": true, "underlyingPrice": 763.25,
"daysToExpiration": 3, "greeksImpliedVolatilityPercent": 10.2563, "greeksVolatilitySource": "market",
"delta": 0.527, "gamma": 0.056079, "theta": -0.5053, "vega": 0.2754, "rho": 0.0328, "greeksRatePercent": 4.07,
"greeksDividendYieldPercent": 0.99}
  • Which contracts: the nearest expiration, as many as you ask for, all of them (optionExpirations: 0), or the dates you list (a date with no expiration is named, with the nearest one). Filter by calls or puts, a strike range around the price (optionStrikeRangePercent: 10 keeps 90% to 110%; decimals such as 2.5 work), a minimum volume (the latest session's, as Yahoo gives it) and open interest: filters apply before anything is stored or charged. With all expirations asked and a strike range, volume or open-interest filter, a ticker stops after 3 expirations in a row with nothing through, and the run says so; expirations you count or list are all read.
  • Greeks: Black-Scholes-Merton with the 13-week US T-bill rate (^IRX, a discount rate, converted to a continuous one) and a carry, both on each row. For an expiration a week or more away the carry is what its own prices imply by put-call parity at the strikes nearest the price, so a strike's call and put solve to one volatility (SPY's December 2027 contracts imply 0.35% where its quoted yield is 0.99%, and an index has no yield on Yahoo); otherwise it is the underlying's dividend yield. The volatility is solved from the contract's bid-ask mid (or its last price, if it traded in the last 5 days) with that same rate and yield, and given as greeksImpliedVolatilityPercent; Yahoo's own impliedVolatilityPercent is solved without either, so the two differ, most for long-dated contracts. Theta is per calendar day, vega and rho per percentage point, time runs to 4 p.m. New York on the expiration day (9:30 for index contracts settled at the open, such as SPX, not SPXW). US stock options are American, so for deep in-the-money puts, or calls just before a dividend, they are approximations. An in-the-money contract quoted at its intrinsic value has no volatility of its own to solve: its Greeks use Yahoo's, and greeksVolatilitySource says which was used (market or yahoo). Empty for a contract with no price at all; if the T-bill rate doesn't load, every contract's Greeks are empty and the run names it.
  • optionChain (Options output: one row per expiration): an expiration's calls and puts as lists, by strike, each with its Greeks, charged as one result. SPY's 31 expirations are 31 results.

holder and insiderTrade (Include holders and insider trades): Yahoo's 10 largest institutions, 10 largest funds and the insiders, and every insider transaction Yahoo lists.

{"rowType": "holder", "symbol": "AAPL", "holderType": "institution", "holder": "Blackrock Inc.", "shares": 1162996939,
"value": 399442918731, "valueCurrency": "USD", "percentHeld": 7.97, "percentChange": 1.6, "reportDate": "2026-06-30"}
{"rowType": "insiderTrade", "symbol": "AAPL", "insider": "NEWSTEAD JENNIFER", "relation": "General Counsel",
"date": "2026-10-06", "transaction": "Sale at price 332.01 per share.", "transactionType": "Sale", "shares": 2399,
"value": 796492, "pricePerShare": 332.01, "valueCurrency": "USD", "ownership": "direct"}

ratingChange, earnings and estimate (Include analyst ratings, earnings and estimates): the newest rating changes (25 by default; Yahoo has hundreds for large US companies), the last 4 reported quarters with their surprise, and the analysts' estimates for this and next quarter and year.

{"rowType": "ratingChange", "symbol": "AAPL", "date": "2026-10-12", "firm": "JP Morgan", "action": "maintain",
"fromGrade": "Overweight", "toGrade": "Overweight", "priceTargetAction": "Raises", "priceTarget": 360.0,
"priorPriceTarget": 340.0, "priceTargetCurrency": "USD"}
{"rowType": "earnings", "symbol": "AAPL", "periodEnd": "2026-06-30", "fiscalQuarter": "3Q2026",
"reportedDate": "2026-07-30", "epsActual": 2.02, "epsEstimate": 1.89243, "surprisePercent": 6.74, "currency": "USD"}
{"rowType": "estimate", "symbol": "AAPL", "period": "currentQuarter", "periodEnd": "2026-09-30", "epsEstimate": 1.97842,
"epsLow": 1.93, "epsHigh": 2.07, "epsAnalysts": 27, "revenueEstimate": 113626875100, "revenueGrowthPercent": 10.89,
"eps90DaysAgo": 2.01755, "revisionsUp30Days": 1, "revisionsDown30Days": 1, "epsCurrency": "USD",
"revenueCurrency": "USD"}
  • Price targets' currency (priceTargetCurrency): Yahoo keeps rating changes for US listings, and a listing that shares a company with one gets that list: Shopify's Toronto listing has Shopify's US list, with targets in dollars. A dollar listing's targets are in USD. Another listing's are in its own currency or in dollars, whichever its analysts' mean target says they are (converted at Yahoo's exchange rate); when that can't be told (currencies close to the dollar's value, such as the euro or the Swiss franc), the currency is left empty. Either case is named in the run's notes. Listings with no US twin (SAP.DE, 7203.T, VOD.L) have no rating changes on Yahoo.
  • Estimates' currencies (epsCurrency, revenueCurrency): an ADR's EPS estimate is in dollars and its revenue estimate in the home currency (TSM: USD and TWD). A period no analyst covers isn't a row (nothing to charge).

filing (Include SEC filings): the newest filings of US-listed companies and ADRs, with Yahoo's page and the documents filed.

{"rowType": "filing", "symbol": "AAPL", "date": "2026-07-31", "filingType": "10-Q", "title": "Periodic Financial Reports",
"url": "https://finance.yahoo.com/sec-filing/AAPL/0000320193-26-000020_320193",
"exhibits": [{"type": "10-Q", "url": "https://cdn.yahoofinance.com/prod/sec-filings/0000320193/000032019326000020/aapl-20260627.htm"}]}

news (Include news): the latest headlines tagged with each ticker: title, publisher, link, publishedAt, relatedTickers.

screener (Screeners): Yahoo's ranked lists, each row a quote with its rank:

  • Day gainers, day losers, most actives for the US or another market (Screener market): India, UK, Canada, Australia, Germany, France, Italy, Spain, Netherlands, Switzerland, Sweden, Hong Kong, Japan, South Korea, Taiwan, Singapore, Brazil, Mexico, South Africa, Saudi Arabia. They use Yahoo's own criteria for its US lists: gainers up over 3%, losers down over 2.5%, a market cap from $2 billion (and in the US a price from $5). Outside the US the market cap floor is converted at Yahoo's exchange rate (into pence and cents for London and Johannesburg, as Yahoo compares them); the $5 price floor and the most actives' 5-million-share minimum are US figures and are left out (in rupees or yen the price floor dropped large companies with low share prices, such as Wipro). Each list holds the market's own companies: India's are the NSE's; London's leave out Cboe UK lines (.XC) and the International Order Book's foreign shares; Germany's leave out Frankfurt's and Xetra's lines of foreign companies (Netflix, Moderna). Rows are ranked by the change or volume they show. A stock whose latest quote is over 36 hours older than the list's newest (a price that hasn't caught up with a split or consolidation) is left out and named in the status message.
  • Trending tickers (US), most watched, 52-week gainers and losers, most active ETFs, top ETFs, top performing ETFs, cryptocurrencies by market cap, crypto gainers, losers and most active, plus undervalued growth stocks, growth technology stocks, undervalued large caps, aggressive small caps, small cap gainers, most shorted stocks and Yahoo's fund lists.
{"rowType": "screener", "screener": "day_gainers", "screenerTitle": "Day gainers (India)", "screenerRegion": "IN",
"rank": 1, "symbol": "HBLENGINE.NS", "name": "HBL Engineering Limited", "price": 833.15, "changePercent": 17.2707,
"currency": "INR", "marketCap": 230944980992, "exchangeName": "NSE"}

searchResult (Symbol search): tickers found by a word, such as lithium, semiconductor or vanguard, optionally only stocks, ETFs, funds, indices, futures, currencies or crypto, in Yahoo's order. The price, its currency and the day's change come from each symbol's quote (Yahoo's lookup gives a price without its currency: 16.11 for VOD in dollars, 122.05 for VOD.L in pence).

{"rowType": "searchResult", "query": "lithium", "searchType": "equity", "rank": 1, "symbol": "LAC",
"name": "Lithium Americas Corp.", "exchange": "NYQ", "quoteType": "EQUITY", "sector": "Basic Materials",
"price": 2.18, "currency": "USD", "changePercent": -2.6786}

notFound: an input with no data, never charged: input, reason (with what to try) and suggestions (Yahoo's first results for it).

Markets

Yahoo writes non-US listings with a suffix. Some examples:

MarketSuffixExample
United States (Nasdaq, NYSE, OTC)noneAAPL, BRK.B
Canada (TSX, TSX Venture).TO, .VRY.TO, FWZ.V
United Kingdom.LVOD.L (prices in pence: currency GBp)
Germany, France, Netherlands.DE, .PA, .ASSAP.DE, MC.PA, ASML.AS
Spain, Italy, Switzerland.MC, .MI, .SWSAN.MC, ENI.MI, NESN.SW
Nordics.ST, .OL, .CO, .HEVOLV-B.ST, EQNR.OL, NOVO-B.CO
India (NSE, BSE).NS, .BORELIANCE.NS, RELIANCE.BO, or just RELIANCE, JIOFIN, TCS
Japan, Hong Kong.T, .HK7203.T, 0700.HK
China (Shanghai, Shenzhen).SS, .SZ600519.SS, 000001.SZ
Korea, Taiwan, Singapore.KS/.KQ, .TW, .SI005930.KS, 2330.TW, D05.SI
Australia, New Zealand.AX, .NZBHP.AX, FPH.NZ
Brazil, Mexico.SA, .MXPETR4.SA, WALMEX.MX
South Africa, Israel, Saudi Arabia, Kuwait.JO, .TA, .SR, .KWNPN.JO, TEVA.TA, 2222.SR, NBK.KW
Indices^^GSPC, ^DJI, ^FTSE, ^N225, ^NSEI
Crypto, currencies, futures-USD, =X, =FBTC-USD, EURUSD=X, GC=F

Also Austria, Belgium, Ireland, Poland, Portugal, Turkey, Indonesia, Malaysia, Thailand, Argentina, Chile, Qatar and more. Not sure of a symbol? Type the company's name or its ISIN, use Symbol search, or type an exchange code alone (7203 is read as Yahoo's first listing under it, Toyota's 7203.T).

How to use it

  1. Enter tickers, company names or ISINs, one per line, or pick screeners or search words.
  2. Switch on what you need: fundamentals (on by default), holders and insider trades, analysts, SEC filings, price history, financial statements, news, options.
  3. Run it and download the rows as JSON, CSV or Excel, or read them through the API.

Ten years of daily prices for three indices, one row each, with their quotes:

{"tickers": ["^GSPC", "^IXIC", "^DJI"], "includeHistory": true, "historyRange": "10y", "historyFormat": "series"}

SPY's calls within 5% of the price for the next 3 expirations, liquid ones only, with Greeks:

{"tickers": ["SPY"], "includeFundamentals": false, "includeOptions": true, "optionExpirations": 3,
"optionType": "calls", "optionStrikeRangePercent": 5, "optionMinOpenInterest": 100}

Who owns Nvidia, what insiders did, what analysts say:

{"tickers": ["NVDA"], "includeOwnership": true, "includeAnalysis": true, "ratingChangesPerTicker": 50}

India's top 50 gainers today, and tickers to do with lithium:

{"screeners": ["day_gainers"], "screenerRegion": "IN", "screenerResults": 50, "searchQueries": ["lithium"]}

From Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("akhil_rajesh/yahoo-finance-scraper").call(run_input={"tickers": ["AAPL", "NVDA"]})
for row in client.dataset(run.default_dataset_id).iterate_items(): # apify-client 3.x
if row["rowType"] == "quote":
print(row["symbol"], row.get("price"), row.get("marketCap"))

The run's status message says what was stored, what wasn't found and what Yahoo didn't answer, with its first notes (how names were matched, tickers with no options or filings...). The RUN_SUMMARY record has all of it, every note in full.

For AI agents and LLM apps

  • Apify MCP server: add https://mcp.apify.com to Claude, ChatGPT, Cursor or any MCP client, and the agent can call this Actor as a tool: "get Apple's quote and analyst targets", "SPY options expiring Friday with delta", "India's top gainers today".
  • Compact rows (compactOutput: true) keep a quote's 35 main fields instead of about 140, and a screener row's 31: fewer tokens for the model. Other row types are already short.
  • One HTTP call, rows back: POST https://api.apify.com/v2/acts/akhil_rajesh~yahoo-finance-scraper/run-sync-get-dataset-items?token=<TOKEN> with the input as the body returns the rows when the run ends (runs of a few tickers take about 3 to 5 seconds).
  • Common slips are read the way they were meant, and each one is named in the run's notes:
    • symbols, symbol, ticker, stocks, stock, companies or company are read as tickers, as a list or a text (split on commas and new lines); query, queries, search or keywords as searchQueries (as tickers, if they hold only tickers). An entry of tickers with commas (["AAPL, MSFT"]) is split too.
    • NASDAQ:AAPL, NSE:RELIANCE, HKG:700, LON:VOD, AAPL.US, EURUSD, BTCUSD and SPX are read as Yahoo's AAPL, RELIANCE.NS, 0700.HK, VOD.L, AAPL, EURUSD=X, BTC-USD and ^SPX.
    • An option changed without its switch turns the switch on ("optionType": "calls" alone means options are wanted, "historyRange": "5y" price history); an option changed while its switch is off is named as not used.
  • Wrong values cost nothing: Apify checks each field against the input schema before the run starts. A choice that isn't one of the listed values, a number out of range or a text where a list belongs gets HTTP 400 naming the field and what it takes (Field input.optionType must be equal to one of the allowed values: "both", "calls", "puts").

Input reference

Every field is optional; an input that names nothing reads AAPL, MSFT and NVDA.

FieldTypeDefaultValues
tickerslist of stringsnoneTickers, company names or ISINs, up to 1,000. Also read from symbols, symbol, ticker, stocks, stock, companies or company (a list or a text). An entry with commas or new lines is split.
includeFundamentalsbooleantrueCompany profile, financial figures, analysts' targets, holdings, fund data
includeOwnershipbooleanfalseHolder and insider trade rows, insiders' 6 months on the quote
includeAnalysisbooleanfalseRating change, earnings and estimate rows
ratingChangesPerTickerinteger251 to 1,000, newest first
includeSecFilingsbooleanfalseSEC filing rows (US listings and ADRs)
secFilingsPerTickerinteger201 to 250, newest first
includeHistorybooleanfalsePrice history
historyRangestring1mo1d, 5d, 1mo, 3mo, 6mo, ytd, 1y, 2y, 5y, 10y, max
historyIntervalstring1d1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo
historyStartDate, historyEndDatestringnoneYYYY-MM-DD; a start date replaces historyRange, an end date alone ends it
historyFormatstringrowsrows (one per bar, data points), series (one per ticker, one result)
includePrePostbooleanfalsePre-market and after-hours bars, with an intraday interval
includeFinancialsbooleanfalseStatement rows
financialsPeriodstringannualannual, quarterly, both
includeNewsbooleanfalseNews rows
newsPerTickerinteger101 to 40
includeOptionsbooleanfalseOption rows (US listings)
optionExpirationsinteger10 (all) to 100, nearest first
optionExpirationDateslist of stringsnoneYYYY-MM-DD, instead of the nearest ones
optionTypestringbothboth, calls, puts
optionStrikeRangePercentnumber0Strikes within this % of the price (2.5 works); 0 keeps all
optionMinVolume, optionMinOpenInterestinteger0Minimums (volume is the latest session's); 0 keeps all
includeGreeksbooleantrueDelta, gamma, theta, vega, rho
optionsFormatstringrowsrows (one per contract, data points), chain (one per expiration, one result)
screenerslist of stringsnoneday_gainers, day_losers, most_actives, trending_tickers, most_watched_tickers, fifty_two_wk_gainers, fifty_two_wk_losers, most_actives_etfs, top_etfs_us, top_performing_etfs, all_cryptocurrencies_us, day_gainers_cryptocurrencies, day_losers_cryptocurrencies, most_actives_cryptocurrencies, undervalued_growth_stocks, growth_technology_stocks, undervalued_large_caps, aggressive_small_caps, small_cap_gainers, most_shorted_stocks, top_mutual_funds, portfolio_anchors, solid_large_growth_funds, solid_midcap_growth_funds, conservative_foreign_funds, high_yield_bond
screenerRegionstringUSUS, IN (NSE), GB, CA, AU, DE, FR, IT, ES, NL, CH, SE, HK, JP, KR, TW, SG, BR, MX, ZA, SA (day gainers, losers, most actives)
screenerResultsinteger251 to 1,000 per screener (trending up to 100)
searchQuerieslist of stringsnoneWords to find tickers by, up to 50
searchTypestringallall, equity, etf, mutualfund, index, future, currency, cryptocurrency
searchResultsinteger251 to 1,000 per search
compactOutputbooleanfalseMain fields only on quote (35) and screener (31) rows
proxyobjectnoneNot needed. Apify's datacenter proxy or your own; residential proxies are refused.

An unknown field with nothing to read fails the run naming the field, so a misspelt tickrs doesn't quietly read the defaults.

How names are matched

  • A ticker in capitals, or with a suffix or a sign (AAPL, BRK.B, vod.l, ^gspc, btc-usd), is looked up as a ticker only. BRK.B, BRK B and BRK/B are Berkshire's class B shares (BRK-B). A word in capitals is never read as a name, so a delisted EQR comes back "not found", not as EQ Resources (EQR.AX).
  • An ISIN whose check digit adds up (US0378331005, INE002A01018) is the listing Yahoo's search gives for it (AAPL, RELIANCE.NS).
  • An Indian ticker without its suffix (JIOFIN, TCS, LT, M&M, BAJAJ-AUTO) is read on the NSE, then the BSE, when Yahoo has no US ticker by that name. A US listing wins: INFY is Infosys's US ADR, INFY.NS its NSE listing. Other exchanges need their suffix (BMW.DE, BARC.L).
  • A name in lower or mixed case is looked up on Yahoo's search. A company fits when its name holds every word you typed, accents aside (nestle is Nestlé); the closest name wins (siemens is Siemens AG, not Siemens Energy), and initials count (bmw). A fund, index or coin fits only by its whole name (bitcoin is BTC-USD). A word that is a ticker as well is a name first (hp is HP Inc.), then a ticker.
  • A brand Yahoo itself ranks with high confidence is its company (google is GOOG), and an exchange code is Yahoo's first company listed under it (7203 is 7203.T).
  • Other sites' forms: an exchange prefix (NASDAQ:AAPL, NYSE:KO, NSE:RELIANCE, BSE:500325, HKG:700, LON:VOD; TSE: with a code in digits is Tokyo, with letters Toronto), a TradingView watchlist line (NASDAQ:AAPL,NYSE:KO), a .US suffix, a currency or crypto pair without Yahoo's signs (EURUSD, BTCUSD, SOLUSDT) and index names without the caret (SPX, NDX, DJI, VIX; DJT stays Trump Media's stock) are read as Yahoo's symbols, and named in the notes.
  • Names in capitals: AAPL MSFT NVDA is three tickers, but a text whose words mostly aren't tickers (WELLS FARGO BANK) is looked up as one name. After 100 names in a run found nothing on Yahoo, the rest aren't looked up (each costs a request, and their rows are free): they are named in the notes.

matchedBy says which applied: ticker, isin, name or search; ISIN and search matches are also named in the status message.

Why the numbers are right

  • Full daily history. Asked for its maximum range, Yahoo answers in quarterly bars (169 for Apple). This Actor asks by date, which gives every daily bar (11,554 for Apple since 1980).
  • Prices are in the listing's currency, as Yahoo gives it: London in pence (GBp), Johannesburg in cents (ZAc), Tel Aviv in agorot (ILA), Kuwait in fils (KWF). Yahoo gives such a listing's EPS, book value and dividend rate in pounds (Shell's EPS 3.38 next to a price of 3,938p); the rows have them in pence (338), so price over EPS is the P/E. The market cap and holding values are in the major unit (marketCapCurrency, valueCurrency).
  • Company financials are in financialCurrency. When it differs from the price's currency (TSM reports in TWD, VOD.L in EUR), Yahoo divides one currency by the other (TSM's price to sales of 0.48); the rows work them out again with Yahoo's own exchange rate (about 15), and leave an enterprise value empty when it isn't market cap plus net debt in one currency.
  • ADRs (TSM, BABA): Yahoo's book value, P/B, EPS estimate, revenue per share and float are per ordinary share or in mixed currencies, so they are left empty.
  • Indian listings without a market cap: Yahoo sends a few NSE or BSE listings without a market cap or share count (Reliance and TCS on the NSE in October 2026). Their rows get both from the share count of the same company's other listing, at the listing's own price.
  • Yahoo's slips put right: a pence, cents, agorot or fils listing's adjClose is rebuilt from its dividends (Yahoo adjusts those 100 or 1,000 times too little); Tokyo's and Hong Kong's bar for today gets the latest price when Yahoo leaves it without a close; a past "next" earnings date is left empty; Yahoo's 0.00001 implied volatility (none) is left empty (the Greeks use the volatility solved from the contract's own price); a price target of 0 (none given) is empty; Berkshire's Class A figures on BRK-B are left empty.
  • Insider trades outside the US: Yahoo doesn't say which currency their values are in (Reliance's trades read 15.69 a share for a 1,211-rupee stock), so valueCurrency is empty for them. Some non-US filer names come from Yahoo with their accents already replaced by ?-like marks.

How much does it cost?

You pay $0.50 per 1,000 results and $0.10 per 1,000 data points, plus a start fee of $0.00005 per run (per GB of memory, at least one; runs use 256 MB by default). Platform usage is included: no compute charge on top. "Not found" rows are free.

  • A result is a row of its own: a quote, statement, news item, holder, insider trade, rating change, earnings quarter, estimate, SEC filing, screener or search row, a whole price series (historyFormat: series) or a whole option expiration (optionsFormat: chain).
  • A data point is one of many: a price bar or an option contract, each as its own row.
Apify planPer 1,000 resultsPer 1,000 data points
Free and Starter$0.50$0.10
Scale$0.45$0.10
Business and above$0.40$0.10
Run (Free and Starter plans)ChargedCost
Quotes with fundamentals for 3 tickers (the default input)3 results$0.0015
100 tickers with fundamentals100 results$0.05
10 years of daily prices for 100 tickers, one row per ticker100 quotes + 100 series$0.10
The same, one row per bar100 quotes + about 251,500 bars$25.20
Apple's daily prices since 1980, one row1 quote + 1 series$0.001
7 days of 1-minute bars for one stock, one row per barabout 1,950 data points$0.20
SPY's whole options chain (31 expirations), one row per expiration1 quote + 31 expirations$0.016
SPY's nearest expiration, one row per contract1 quote + about 270 data points$0.028
One company's 30 holders, insider trades, 25 rating changes, earnings and estimatesabout 150 results$0.075
India's 50 top gainers50 results$0.025

To cap spending, set a maximum cost per run in the run options: the Actor stops cleanly at the limit, keeps the newest price bars of the ticker it was storing, and names the tickers it didn't read or read in part.

A run stopped by its timeout says so and names what it didn't read: resurrect it (Console: the run's Resurrect button, or the API) to read the rest, as a resurrected run skips what it stored and charges nothing twice; a new run starts over. A run that read nothing before the timeout fails, and nothing is charged.

Good to know

  • Prices are as Yahoo shows them: real time for some US data, delayed up to 20 minutes for most exchanges (delayMinutes says how much). This is market data, not a trading feed.
  • Intraday bars are kept for a limited time by Yahoo: 1-minute bars for the last 29 days (Yahoo refuses a window reaching back 30; read a week at a time, as Yahoo serves them), 2- to 90-minute bars for 60 days, hourly bars for 2 years. A longer period is cut to that and the run says so.
  • Options are listed for US stocks, ETFs and indices only. Index options are under their own symbols: the S&P 500's under ^SPX (not ^GSPC), the Nasdaq-100's under ^NDX, the Dow's under ^DJX.
  • Holders, insider trades and analyst data are fullest for US companies; SEC filings exist only for US listings and ADRs. Yahoo no longer serves ESG scores.
  • Trending tickers are Yahoo's US list; other regions' trending lists hold 0 to 2 tickers on Yahoo.
  • News is best for US companies. For other listings and crypto the Actor also searches by the company's name and keeps headlines tagged with the company's other listings (HDFC Bank's news is tagged with its US listing HDB). Yahoo has no news at all for many Indian companies; a ticker with none is named in the status message.
  • Funds, indices, crypto and currencies have quotes and history but no company fundamentals, holders or statements.
  • This Actor isn't affiliated with Yahoo. Use the data in line with Yahoo's terms.

FAQ

Is there a Yahoo Finance API? Yahoo closed its official finance API in 2017. This Actor reads the data Yahoo Finance's own pages use and returns it as structured rows, so it can stand in for one: call it from the API, a schedule, Make, Zapier, n8n or an AI agent.

How do I download historical stock prices? Switch on Include price history, choose a period (or All available, or start and end dates) and an interval. For many tickers or long periods choose One row per ticker: the whole series in one row, charged as one result.

How do I get an options chain with Greeks? Switch on Include options chains, set the expirations (0 for all, or list dates), and filter by calls or puts, strike range, volume and open interest. Greeks are on by default. One row per expiration gives each expiration's whole chain as one result.

Can I get income statements and balance sheets? Yes: Include financial statements gives a row per year or quarter with 61 lines across the income statement, balance sheet and cash flow.

Who owns a stock, and what are insiders doing? Include holders and insider trades lists the largest institutions and funds with their stakes and changes, the insiders, and every insider transaction Yahoo has.

Can I get top gainers for India or the UK? Yes: pick Day gainers, Day losers or Most actives and set Screener market.

Can I look up a company without knowing its ticker? Type its name (Toyota Motor, nestle) or ISIN, or use Symbol search with a word (lithium) to list matching tickers.

How many tickers per run? Up to 1,000. On Apify, 300 tickers with fundamentals took 70 seconds.