Yahoo Finance Scraper avatar

Yahoo Finance Scraper

Pricing

$0.72 / 1,000 results

Go to Apify Store
Yahoo Finance Scraper

Yahoo Finance Scraper

Scrape Yahoo Finance ticker quotes, daily prices, dividends, splits, financial statements, news, analyst trends, holders, options, and earnings into one record per symbol.

Pricing

$0.72 / 1,000 results

Rating

0.0

(0)

Developer

MLG Data

MLG Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Share

Scrape Yahoo Finance ticker quotes, daily stock prices, dividends, splits, financial statements, news, analyst ratings, institutional holders, options, and earnings. Export Yahoo Finance data to JSON, CSV, or Excel with one structured result for each ticker, providing a practical Yahoo Finance API alternative for public market data.

Give the scraper one or more symbols, choose a date window, and select the optional detail sections you need. Each completed ticker becomes one dataset item, so a portfolio of symbols can be joined, filtered, scheduled, or downloaded without combining separate runs.

What data can you extract from Yahoo Finance?

The record has stable top-level keys. Values that do not apply to a security can be null, and optional collections can be empty. Prices and monetary amounts follow the security's reported currency; the scraper does not convert currencies.

FieldDescriptionExample
tickerRequested symbol, normalized to uppercaseAAPL
quoteUrlPublic quote pagehttps://finance.yahoo.com/quote/AAPL/
nameReported security nameA name supplied by the quote
quoteTypeInstrument categoryEQUITY
exchangeReported exchange nameNasdaqGS
currencyPrice currencyUSD
sectorReported business sectorTechnology
industryReported industryConsumer Electronics
websiteIssuer website when publishedAn issuer URL
descriptionPublic business summaryA text summary
marketCapMarket capitalization4999582056448
currentPriceRegular market price341.07
previousClosePrevious regular session close335.92
changePrice change from previous close5.14999
changePercentPrice change in percentage points1.5331
priceTimeQuote timestamp in UTCAn ISO timestamp
openRegular session opening price336.04
dayHighRegular session high341.67
dayLowRegular session low334.53
volumeRegular session traded volume29649787
fiftyTwoWeekHigh52-week high345.34
fiftyTwoWeekLow52-week low243.42
trailingPETrailing price-to-earnings ratio39.07
forwardPEForward price-to-earnings ratio35.58
epsTrailingTrailing earnings per shareA numeric value
epsForwardForward earnings per shareA numeric value
dividendYieldAnnual yield in percentage points0.32
analystTargetPriceMean analyst target price328.22
analystRecommendationSummary recommendation labelbuy
historyDaily bars with date, open, high, low, close, adjusted close, and volumeAn array of daily bars
dividendsDividend date and amount within the history windowAn array of events
splitsSplit date and ratio within the history windowAn array of events
financialsAnnual and quarterly income, balance sheet, and cash flow periodsA structured object
newsRecent headline, link, publication time, and descriptionAn array of articles
recommendationsMonthly analyst counts for strong buy through strong sellAn array of trends
holdersInstitutional holders, fund holders, and ownership breakdownA structured object
optionsListed expirations and nearest-expiry call and put contractsA structured object
earningsNext earnings date and recent quarterly actuals and estimatesA structured object

A history entry contains date, open, high, low, close, volume, and adjClose. dividends entries contain date and amount; splits entries contain date, numerator, denominator, and splitRatio. The six statement arrays in financials are annualIncome, quarterlyIncome, annualBalanceSheet, quarterlyBalanceSheet, annualCashFlow, and quarterlyCashFlow. Each statement period includes an endDate and the numeric lines published for that period. Some statement sections are sparse because the public source omits individual lines.

Each news item contains title, url, publishedAt, and description. The publishedAt value follows the feed's published date format. The recommendations array has a period and counts under strongBuy, buy, hold, sell, and strongSell. The holders object has institutional, funds, and breakdown; each owner entry can have an organization, report date, position, value, ownership percentage, and change. The options object has expirationDates, selectedExpiration, calls, and puts. Contract records contain symbol, strike, last price, bid, ask, volume, open interest, implied volatility, moneyness, and last trade time. earnings has nextEarningsDate and quarterly, where quarters can include actual, estimate, difference, and surprise percentage.

How to scrape Yahoo Finance

  1. Enter ticker symbols in tickers. Use the exact market symbol shown in the public quote URL, including exchange suffixes when needed.
  2. Set start_date and end_date if you need a specific daily history window. Both endpoints are inclusive in the resulting daily bars.
  3. Select the detail sections. Statements and news are enabled by default; holders and options can be enabled for deeper company records.
  4. Run the actor. It emits one result per valid ticker for which a quote or price history is available.
  5. Open the dataset to inspect records or export them as JSON, CSV, or Excel.

Symbols are deduplicated within a run. The scraper processes a symbol once even if it appears repeatedly in the input. To keep a large portfolio manageable, split its symbols into batches and schedule the batches independently.

Input

ParameterTypeDefaultDescription
tickersString arrayRequiredSymbols to collect, such as AAPL, MSFT, or GOOG.
start_dateDate stringOne year agoFirst date in the daily price window, in YYYY-MM-DD format.
end_dateDate stringTodayLast date in the daily price window, in YYYY-MM-DD format.
includeFinancialsBooleantrueInclude annual and quarterly statement data.
includeNewsBooleantrueInclude recent public headlines.
maxNewsPerTickerInteger10Maximum number of headline items per symbol; zero returns none.
includeHoldersBooleanfalseInclude publicly reported institutional and fund owners.
includeOptionsBooleanfalseInclude expiration dates and the nearest listed option chain.
maxItemsInteger0Maximum ticker records for the run; zero means all input symbols.
proxyConfigurationObjectProxy enabledProxy settings for public requests.

Example input for a compact price and fundamentals collection:

{
"tickers": ["AAPL", "MSFT", "GOOG"],
"start_date": "2026-08-01",
"end_date": "2026-09-25",
"includeFinancials": true,
"includeNews": true,
"maxNewsPerTicker": 3,
"includeHolders": false,
"includeOptions": false
}

The actor validates dates before making requests. If only one date is supplied, the missing boundary defaults to a one-year start or today's end, respectively. end_date must not precede start_date. Daily history uses a one-day interval; changing the date window does not change the snapshot quote, analyst data, statements, or recent news attached to the record.

Output example

The following abbreviated item illustrates the dataset structure. Prices, ratings, news, and market dates change as the source updates.

{
"ticker": "AAPL",
"quoteUrl": "https://finance.yahoo.com/quote/AAPL/",
"quoteType": "EQUITY",
"currency": "USD",
"marketCap": 4977636933632,
"currentPrice": 341.07,
"previousClose": 335.92,
"changePercent": 1.5331,
"history": [
{
"date": "2026-09-25",
"open": 336.0400085449219,
"high": 341.6700134277344,
"low": 334.5299987792969,
"close": 341.07000732421875,
"volume": 29950100,
"adjClose": 341.07000732421875
}
],
"dividends": [{"date": "2026-08-10", "amount": 0.27}],
"splits": [],
"financials": {
"annualIncome": [
{"endDate": 1759190400, "totalRevenue": 416161000000, "netIncome": 112010000000}
]
},
"news": [{"publishedAt": "Sat, 26 Sep 2026 07:12:45 +0000"}],
"recommendations": [
{"period": "0m", "strongBuy": 6, "buy": 19, "hold": 13, "sell": 3, "strongSell": 3}
],
"options": {
"selectedExpiration": "2026-09-28",
"calls": [
{"contractSymbol": "AAPL260928C00250000", "strike": 250, "lastPrice": 89.85, "openInterest": 1}
]
},
"earnings": {
"nextEarningsDate": "2026-10-29",
"quarterly": [{"date": "2Q2026", "actual": 2.02, "estimate": 1.89243}]
}
}

This example is shortened to show the relationships between fields. Actual dataset items retain all available daily bars, statement periods, news items, and optional sections selected in the input. When an optional section is disabled, financials, holders, or options is null, while disabled news is an empty array. When a section is enabled but unavailable from the public source, the same empty or null shape indicates no data was collected for that section.

Use cases

  • Portfolio monitoring: Collect current prices, daily changes, volume, and market capitalization for a watchlist in one run. The symbol remains attached to every result, making it easy to compare or alert on movements.
  • Historical price analysis: Download daily OHLCV bars with adjusted close values for a defined time window. Dividend and split events in that same window help explain discontinuities in raw close prices.
  • Fundamental research: Review annual and quarterly statement values alongside valuation ratios and analyst targets. Keep each security's currency with the record before comparing values across markets.
  • Earnings preparation: Combine the expected earnings date, recent earnings actuals and estimates, and current analyst rating distribution in one ticker record.
  • Ownership review: Enable the holder section to inspect reported institutional positions, fund ownership, and the broad insider and institutional ownership breakdown.
  • Options watchlists: Enable the option section to obtain available expiration dates and the nearest expiry's current call and put contracts. This is suited to watching one listed chain per ticker rather than downloading every contract across every expiry.

How much does it cost to scrape Yahoo Finance?

The listed result price is $0.72 per 1,000 ticker records, or $0.00072 for each delivered result. A record is one ticker, even when its history array contains many daily bars. The maximum item setting limits delivered records and the associated result charge. Check the run's cost display for the final amount and any account-specific usage details.

Records deliveredResult charge
30$0.0216
1,000$0.72
5,000$3.60

For example, a run with 30 valid symbols costs about two cents in result charges. A daily portfolio of 1,000 symbols costs $0.72 each day, or about $21.60 for 30 such runs, assuming every symbol produces a record. Five 1,000-symbol batches produce 5,000 records and $3.60 in result charges. A run with invalid or unavailable symbols can produce fewer items than input symbols; only delivered results count toward this calculation. Enabling optional sections changes the work needed for a ticker but does not change the number of result items it represents.

Tips for best results

Use exact symbols from public quote URLs. Some non-US securities require a suffix, while indices and funds use their own symbol conventions. Symbols are case-normalized, but punctuation is preserved. Start with a short ticker list to confirm that the public source exposes the sections you care about for that instrument type.

Keep history windows as narrow as your analysis allows. The default is one year of daily bars, which already gives enough observations for common trend and volatility work. Longer windows increase each output item's size. If you only need a current snapshot, you can set a recent start and end date while retaining the quote, fundamentals, and other current sections.

Disable includeFinancials, includeNews, includeHolders, or includeOptions when a workflow does not need them. This reduces requests and makes runs faster. For broad watchlists, consider collecting quotes, history, and news routinely, then running a smaller detailed list for statements, owners, and option chains. Use maxNewsPerTicker to cap headline volume; news can change rapidly and is not tied to the historical price date window.

Review the currency, exchange, and quoteType before aggregating records. Market capitalization, prices, option strikes, and financial statement values can use different currencies across symbols. The scraper reports values as published and does not convert or reconcile accounting conventions. For repeat collections, retain the run time with your exported dataset because the price snapshot and public finance pages can update after a run completes.

Limits

The source is public market data, so availability differs by ticker and instrument. A company equity can have sector, financial statements, analyst trends, holders, and listed options; an index, currency pair, or fund may have only quote and history. A valid ticker can also omit a field or have a delayed market quote. A missing value appears as null, and a missing collection is empty or null according to its field type.

Direct anonymous access to some finance endpoints can be rejected. This actor reads the structured data already supplied to public quote pages for those sections. If a public page changes structure or becomes unavailable, its section may be empty until the actor is updated. History comes from a separate public chart endpoint, so a ticker can still have history even if some profile or analyst fields are unavailable.

The options section covers the nearest expiry returned by the public options page. It lists the other expiration dates so you can see what is available, but it does not fetch every expiry's contracts. Financial statements include the periods and numeric line items present in the public page response. Some statement lines are absent or zero in the source, and the scraper does not infer missing accounting values. The news section reflects recent feed items, which can include articles from third-party publishers and may be empty for thinly covered tickers.

Large historical windows make a single ticker item much larger. If you plan to export CSV, nested arrays are serialized within the ticker row; JSON is usually easier for detailed histories and statements. There is no intraday history setting in this actor. Dates refer to UTC calendar boundaries used for daily chart requests, and the source's exchange calendar determines which trading days appear.

Automation examples

  • “Collect daily prices and analyst recommendations for these 20 ticker symbols, then flag any symbol with a price change above 3%.”
  • “Fetch the latest annual statement periods and the nearest options chain for this watchlist; save one JSON item per symbol.”

The input names and output fields are stable, so scheduled jobs and downstream workflows can reuse the same configuration. A record is self-contained for a ticker: its quote URL, currency, history window, earnings, and optional sections travel together.

FAQ

This actor reads publicly accessible market pages and a public news feed. You are responsible for using the data in line with the source's terms, applicable market-data restrictions, and local law. News content can carry publisher rights. Do not treat the output as licensed redistribution rights or investment advice.

Do I need to configure proxies?

The default input enables a proxy. The actor begins with a datacenter route and can escalate when public pages block requests. You can change proxy settings in the input if your account and use case require it. Availability can vary by region and over time.

How fast is a run?

Runtime depends mainly on the number of tickers, which optional sections are enabled, and how the public pages respond. A compact quote and history run uses fewer requests than a run that also fetches statements, news, holders, and options. For large lists, use smaller scheduled batches and watch completion times in your account.

Can I schedule or monitor collections?

Yes. Save a tested input, schedule it at the cadence that suits your use case, and inspect the run status and dataset. Regular runs produce fresh snapshots; they do not update historical records in earlier datasets. Use a persistent destination if you want to build a longitudinal database.

Can I export to spreadsheets?

The dataset supports JSON, CSV, and Excel downloads. JSON preserves the nested historical bars and detail sections. For a flat spreadsheet, select the top-level quote columns or transform nested arrays into separate sheets after export.

Why is a field empty?

The instrument may not have that field, the public page may omit it, or an optional section may be disabled. Check quoteType and the relevant input switch first. For example, a symbol without listed options will not have call and put contracts even when includeOptions is enabled.

Does the date range filter news or fundamentals?

No. start_date and end_date apply to daily price history and its dividend and split events. Quotes, fundamentals, analyst ratings, holders, option chains, and headlines are current public data available at run time.

Integrations

Use the run API, dataset exports, schedules, and webhooks to feed recurring market workflows. Dataset items can be sent to a spreadsheet, a database, a notification system, or an automation platform. Preserve the ticker and currency keys when joining records with another source, and store the run time when comparing snapshots across days.

Support

Open an issue on the Issues tab; we reply within 24h and add fields on request.