Nimbryxo Studio

Yahoo Finance Market Data & Fundamentals Scraper

Pull live quotes, historical OHLCV candles, financial statements, dividends, splits, news, analyst ratings and holder data from Yahoo Finance for any ticker, ETF, index, currency pair or crypto symbol.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredWhat to scrape.
tickersarrayoptionalSymbols or Yahoo Finance quote URLs (mode=tickers). Examples: `AAPL`, `BRK.B`, `^GSPC`, `EURUSD=X`, `BTC-USD`, `7203.T`, `https://finance.yahoo.com/quote/AAPL/`.
searchQuerystringoptionalCompany, fund, index, currency or crypto name to search for (mode=search).
Show all input fields
FieldTypeRequiredDescription
modestringrequiredWhat to scrape.
tickersarrayoptionalSymbols or Yahoo Finance quote URLs (mode=tickers). Examples: `AAPL`, `BRK.B`, `^GSPC`, `EURUSD=X`, `BTC-USD`, `7203.T`, `https://finance.yahoo.com/quote/AAPL/`.
searchQuerystringoptionalCompany, fund, index, currency or crypto name to search for (mode=search).
maxSearchResultsintegeroptionalMaximum number of search results to return (mode=search).
screenerIdstringoptionalYahoo predefined screener to run (mode=screener). Predefined screeners are US-centric; use mode=customScreener for a region-aware list.
screenerSortstringoptionalSort field for mode=customScreener.
regionstringoptionalYahoo market region used for quotes, search, trending, localization and mode=customScreener.
languagestringoptionalLanguage used for names, news and localized labels.
rangestringoptionalHistory range used when no start/end dates are supplied (mode=tickers).
startDatestringoptionalEarliest date for historical bars (`YYYY-MM-DD`). Overrides `range` (mode=tickers).
endDatestringoptionalLatest date for historical bars (`YYYY-MM-DD`). Overrides `range` (mode=tickers).
intervalstringoptionalCandle interval. Intraday intervals have shorter Yahoo range limits; incompatible combinations are clamped and reported in the run status.
includePrePostbooleanoptionalInclude extended-hours bars for intraday history.
includeHistorybooleanoptionalInclude historical bars with adjusted close.
includeDividendsbooleanoptionalInclude the full dividend history from Yahoo chart events.
includeSplitsbooleanoptionalInclude stock-split history with numerator and denominator.
includeNewsbooleanoptionalInclude ticker-related news headlines.
maxNewsintegeroptionalMaximum news items per ticker. Yahoo's news graph serves 200+ items through cursor pagination; the actor caps this request at 200.
includeFinancialsbooleanoptionalInclude annual income statement, balance sheet and cash-flow statement.
includeQuarterlyFinancialsbooleanoptionalAdd quarterly statements under `financials.quarterly`. Takes effect only when `includeFinancials` is also on.
includeHoldersbooleanoptionalInclude institutional, mutual-fund, major-holder and insider-holder summaries.
includeInsidersbooleanoptionalInclude insider transactions, insider holders and net share-purchase activity.
includeOptionsbooleanoptionalInclude option chains for optionable symbols.
optionExpirationsintegeroptionalHow many upcoming option expirations to fetch (mode=tickers, includeOptions=true).
maxOptionContractsintegeroptionalMaximum calls and maximum puts per expiration.
optionContractTypestringoptionalWhich option sides to return.
minStrikenumberoptionalDrop option contracts below this strike.
maxStrikenumberoptionalDrop option contracts above this strike.
minVolumeintegeroptionalDrop option contracts below this volume. Contracts with no volume are excluded when this is set.
minOpenInterestintegeroptionalDrop option contracts below this open interest. Contracts with no open interest are excluded when this is set.
minImpliedVolatilityPercentnumberoptionalDrop contracts below this implied volatility in percent, e.g. 25 means 25%.
includeRecommendationsbooleanoptionalInclude the analyst recommendation summary and four-period recommendation trend.
includeUpgradesDowngradesbooleanoptionalInclude the latest analyst rating changes.
includeAnalystPriceTargetsbooleanoptionalInclude the analyst price-target summary.
includeEarningsHistorybooleanoptionalInclude recent quarters with EPS actual, estimate, difference and surprise.
includeEarningsEstimatesbooleanoptionalInclude EPS and revenue estimates plus growth estimates.
includeEarningsCalendarbooleanoptionalInclude upcoming earnings dates, estimates and dividend dates.
includeFundDatabooleanoptionalInclude fund profile, top holdings and performance for ETFs and mutual funds.
includeSecFilingsbooleanoptionalInclude recent SEC filings with EDGAR links and exhibits.
includeInsightsbooleanoptionalInclude technical outlook, research reports and significant developments.
includeRelatedSymbolsbooleanoptionalInclude Yahoo's related-symbol recommendations.
maxResultsintegeroptionalMaximum records for screener, customScreener, trending and marketSummary modes. Search uses maxSearchResults.
concurrencyintegeroptionalNumber of tickers fetched in parallel (mode=tickers).

Download the published input schema

View complete JSON
{
  "description": "Quote, chart, fundamentals, news, analyst, holder, option, fund, filing, search, screener, trending and market-summary data from Yahoo Finance. No account, API key or proxy setup is required.",
  "properties": {
    "concurrency": {
      "default": 4,
      "description": "Number of tickers fetched in parallel (mode=tickers).",
      "maximum": 16,
      "minimum": 1,
      "prefill": 1,
      "title": "Concurrency",
      "type": "integer"
    },
    "endDate": {
      "description": "Latest date for historical bars (`YYYY-MM-DD`). Overrides `range` (mode=tickers).",
      "editor": "textfield",
      "title": "History end date",
      "type": "string"
    },
    "includeAnalystPriceTargets": {
      "default": true,
      "description": "Include the analyst price-target summary.",
      "prefill": false,
      "title": "Include price targets",
      "type": "boolean"
    },
    "includeDividends": {
      "default": true,
      "description": "Include the full dividend history from Yahoo chart events.",
      "prefill": false,
      "title": "Include dividends",
      "type": "boolean"
    },
    "includeEarningsCalendar": {
      "default": true,
      "description": "Include upcoming earnings dates, estimates and dividend dates.",
      "prefill": false,
      "title": "Include earnings calendar",
      "type": "boolean"
    },
    "includeEarningsEstimates": {
      "default": false,
      "description": "Include EPS and revenue estimates plus growth estimates.",
      "prefill": false,
      "title": "Include earnings estimates",
      "type": "boolean"
    },
    "includeEarningsHistory": {
      "default": true,
      "description": "Include recent quarters with EPS actual, estimate, difference and surprise.",
      "prefill": false,
      "title": "Include earnings history",
      "type": "boolean"
    },
    "includeFinancials": {
      "default": false,
      "description": "Include annual income statement, balance sheet and cash-flow statement.",
      "prefill": false,
      "title": "Include annual financials",
      "type": "boolean"
    },
    "includeFundData": {
      "default": false,
      "description": "Include fund profile, top holdings and performance for ETFs and mutual funds.",
      "prefill": false,
      "title": "Include fund data",
      "type": "boolean"
    },
    "includeHistory": {
      "default": true,
      "description": "Include historical bars with adjusted close.",
      "prefill": false,
      "title": "Include OHLCV history",
      "type": "boolean"
    },
    "includeHolders": {
      "default": false,
      "description": "Include institutional, mutual-fund, major-holder and insider-holder summaries.",
      "prefill": false,
      "title": "Include holders",
      "type": "boolean"
    },
    "includeInsiders": {
      "default": false,
      "description": "Include insider transactions, insider holders and net share-purchase activity.",
      "prefill": false,
      "title": "Include insider activity",
      "type": "boolean"
    },
    "includeInsights": {
      "default": false,
      "description": "Include technical outlook, research reports and significant developments.",
      "prefill": false,
      "title": "Include analyst insights",
      "type": "boolean"
    },
    "includeNews": {
      "default": true,
      "description": "Include ticker-related news headlines.",
      "prefill": false,
      "title": "Include news",
      "type": "boolean"
    },
    "includeOptions": {
      "default": false,
      "description": "Include option chains for optionable symbols.",
      "prefill": false,
      "title": "Include options chain",
      "type": "boolean"
    },
    "includePrePost": {
      "default": false,
      "description": "Include extended-hours bars for intraday history.",
      "prefill": false,
      "title": "Include pre/post market bars",
      "type": "boolean"
    },
    "includeQuarterlyFinancials": {
      "default": false,
      "description": "Add quarterly statements under `financials.quarterly`. Takes effect only when `includeFinancials` is also on.",
      "prefill": false,
      "title": "Include quarterly financials",
      "type": "boolean"
    },
    "includeRecommendations": {
      "default": true,
      "description": "Include the analyst recommendation summary and four-period recommendation trend.",
      "prefill": false,
      "title": "Include recommendations",
      "type": "boolean"
    },
    "includeRelatedSymbols": {
      "default": false,
      "description": "Include Yahoo's related-symbol recommendations.",
      "prefill": false,
      "title": "Include related symbols",
      "type": "boolean"
    },
    "includeSecFilings": {
      "default": false,
      "description": "Include recent SEC filings with EDGAR links and exhibits.",
      "prefill": false,
      "title": "Include SEC filings",
      "type": "boolean"
    },
    "includeSplits": {
      "default": true,
      "description": "Include stock-split history with numerator and denominator.",
      "prefill": false,
      "title": "Include splits",
      "type": "boolean"
    },
    "includeUpgradesDowngrades": {
      "default": false,
      "description": "Include the latest analyst rating changes.",
      "prefill": false,
      "title": "Include upgrades and downgrades",
      "type": "boolean"
    },
    "interval": {
      "default": "1d",
      "description": "Candle interval. Intraday intervals have shorter Yahoo range limits; incompatible combinations are clamped and reported in the run status.",
      "editor": "select",
      "enum": [
        "1m",
        "2m",
        "5m",
        "15m",
        "30m",
        "60m",
        "90m",
        "1h",
        "1d",
        "5d",
        "1wk",
        "1mo",
        "3mo"
      ],
      "enumTitles": [
        "1 minute",
        "2 minutes",
        "5 minutes",
        "15 minutes",
        "30 minutes",
        "60 minutes",
        "90 minutes",
        "1 hour",
        "1 day",
        "5 days",
        "1 week",
        "1 month",
        "3 months"
      ],
      "prefill": "1d",
      "title": "Chart interval",
      "type": "string"
    },
    "language": {
      "default": "en-US",
      "description": "Language used for names, news and localized labels.",
      "editor": "select",
      "enum": [
        "en-US",
        "en-GB",
        "de-DE",
        "fr-FR",
        "es-ES",
        "it-IT",
        "nl-NL",
        "pt-BR",
        "ja-JP",
        "zh-Hant-HK",
        "zh-Hans-CN",
        "ko-KR",
        "ru-RU",
        "ar-SA",
        "hi-IN",
        "tr-TR",
        "pl-PL",
        "sv-SE",
        "da-DK",
        "fi-FI",
        "no-NO"
      ],
      "enumTitles": [
        "English (US)",
        "English (UK)",
        "German",
        "French",
        "Spanish",
        "Italian",
        "Dutch",
        "Portuguese (Brazil)",
        "Japanese",
        "Chinese (Traditional, Hong Kong)",
        "Chinese (Simplified, China)",
        "Korean",
        "Russian",
        "Arabic",
        "Hindi",
        "Turkish",
        "Polish",
        "Swedish",
        "Danish",
        "Finnish",
        "Norwegian"
      ],
      "prefill": "en-US",
      "title": "Language",
      "type": "string"
    },
    "maxNews": {
      "default": 25,
      "description": "Maximum news items per ticker. Yahoo's news graph serves 200+ items through cursor pagination; the actor caps this request at 200.",
      "maximum": 200,
      "minimum": 1,
      "prefill": 10,
      "title": "Max news items",
      "type": "integer"
    },
    "maxOptionContracts": {
      "default": 50,
      "description": "Maximum calls and maximum puts per expiration.",
      "maximum": 500,
      "minimum": 1,
      "prefill": 50,
      "title": "Max contracts per side",
      "type": "integer"
    },
    "maxResults": {
      "default": 50,
      "description": "Maximum records for screener, customScreener, trending and marketSummary modes. Search uses maxSearchResults.",
      "maximum": 5000,
      "minimum": 1,
      "prefill": 1,
      "title": "Max results",
      "type": "integer"
    },
    "maxSearchResults": {
      "default": 10,
      "description": "Maximum number of search results to return (mode=search).",
      "maximum": 50,
      "minimum": 1,
      "prefill": 10,
      "title": "Max search results",
      "type": "integer"
    },
    "maxStrike": {
      "description": "Drop option contracts above this strike.",
      "maximum": 1000000000,
      "minimum": 0,
      "title": "Maximum strike",
      "type": "number"
    },
    "minImpliedVolatilityPercent": {
      "description": "Drop contracts below this implied volatility in percent, e.g. 25 means 25%.",
      "maximum": 1000,
      "minimum": 0,
      "title": "Minimum implied volatility (%)",
      "type": "number"
    },
    "minOpenInterest": {
      "description": "Drop option contracts below this open interest. Contracts with no open interest are excluded when this is set.",
      "maximum": 1000000000,
      "minimum": 0,
      "title": "Minimum open interest",
      "type": "integer"
    },
    "minStrike": {
      "description": "Drop option contracts below this strike.",
      "maximum": 1000000000,
      "minimum": 0,
      "title": "Minimum strike",
      "type": "number"
    },
    "minVolume": {
      "description": "Drop option contracts below this volume. Contracts with no volume are excluded when this is set.",
      "maximum": 1000000000,
      "minimum": 0,
      "title": "Minimum option volume",
      "type": "integer"
    },
    "mode": {
      "default": "tickers",
      "description": "What to scrape.",
      "editor": "select",
      "enum": [
        "tickers",
        "search",
        "screener",
        "customScreener",
        "trending",
        "marketSummary"
      ],
      "enumTitles": [
        "Tickers",
        "Symbol search",
        "Predefined screener",
        "Custom region screener",
        "Trending symbols",
        "Market summary"
      ],
      "prefill": "tickers",
      "title": "Mode",
      "type": "string"
    },
    "optionContractType": {
      "default": "both",
      "description": "Which option sides to return.",
      "editor": "select",
      "enum": [
        "both",
        "calls",
        "puts"
      ],
      "enumTitles": [
        "Calls and puts",
        "Calls only",
        "Puts only"
      ],
      "prefill": "both",
      "title": "Option contract type",
      "type": "string"
    },
    "optionExpirations": {
      "default": 1,
      "description": "How many upcoming option expirations to fetch (mode=tickers, includeOptions=true).",
      "maximum": 25,
      "minimum": 1,
      "prefill": 1,
      "title": "Option expirations",
      "type": "integer"
    },
    "range": {
      "default": "1mo",
      "description": "History range used when no start/end dates are supplied (mode=tickers).",
      "editor": "select",
      "enum": [
        "1d",
        "5d",
        "1mo",
        "3mo",
        "6mo",
        "1y",
        "2y",
        "5y",
        "10y",
        "ytd",
        "max"
      ],
      "enumTitles": [
        "1 day",
        "5 days",
        "1 month",
        "3 months",
        "6 months",
        "1 year",
        "2 years",
        "5 years",
        "10 years",
        "Year to date",
        "Max"
      ],
      "prefill": "5d",
      "title": "Chart range",
      "type": "string"
    },
    "region": {
      "default": "US",
      "description": "Yahoo market region used for quotes, search, trending, localization and mode=customScreener.",
      "editor": "select",
      "enum": [
        "US",
        "GB",
        "DE",
        "FR",
        "JP",
        "HK",
        "IN",
        "CA",
        "AU",
        "BR",
        "CN",
        "KR",
        "TW",
        "SG",
        "CH",
        "NL",
        "ES",
        "IT",
        "SE",
        "NO",
        "DK",
        "FI",
        "BE",
        "AT",
        "IE",
        "NZ",
        "ZA",
        "MX",
        "AR",
        "CL",
        "PE"
      ],
      "enumTitles": [
        "United States",
        "United Kingdom",
        "Germany",
        "France",
        "Japan",
        "Hong Kong",
        "India",
        "Canada",
        "Australia",
        "Brazil",
        "China",
        "South Korea",
        "Taiwan",
        "Singapore",
        "Switzerland",
        "Netherlands",
        "Spain",
        "Italy",
        "Sweden",
        "Norway",
        "Denmark",
        "Finland",
        "Belgium",
        "Austria",
        "Ireland",
        "New Zealand",
        "South Africa",
        "Mexico",
        "Argentina",
        "Chile",
        "Peru"
      ],
      "prefill": "US",
      "title": "Region",
      "type": "string"
    },
    "screenerId": {
      "default": "day_gainers",
      "description": "Yahoo predefined screener to run (mode=screener). Predefined screeners are US-centric; use mode=customScreener for a region-aware list.",
      "editor": "select",
      "enum": [
        "day_gainers",
        "day_losers",
        "most_actives",
        "most_shorted_stocks",
        "undervalued_growth_stocks",
        "growth_technology_stocks",
        "aggressive_small_caps",
        "small_cap_gainers",
        "all_cryptocurrencies_us",
        "day_gainers_cryptocurrencies",
        "day_losers_cryptocurrencies",
        "most_actives_cryptocurrencies",
        "highest_valuation_private_company",
        "recently_funded_private_company",
        "most_funded_private_company",
        "top_mutual_funds",
        "day_gainers_mutual_funds",
        "portfolio_anchors",
        "solid_large_growth_funds",
        "solid_midcap_growth_funds",
        "conservative_foreign_funds",
        "high_yield_bond"
      ],
      "enumTitles": [
        "Day Gainers",
        "Day Losers",
        "Most Actives",
        "Most Shorted Stocks",
        "Undervalued Growth Stocks",
        "Growth Technology Stocks",
        "Aggressive Small Caps",
        "Small Cap Gainers",
        "All Cryptocurrencies (US)",
        "Day Gainers - Cryptocurrencies",
        "Day Losers - Cryptocurrencies",
        "Most Actives - Cryptocurrencies",
        "Highest Valuation Private Companies",
        "Recently Funded Private Companies",
        "Most Funded Private Companies",
        "Top Mutual Funds",
        "Day Gainers - Mutual Funds",
        "Portfolio Anchors",
        "Solid Large Growth Funds",
        "Solid Mid-Cap Growth Funds",
        "Conservative Foreign Funds",
        "High Yield Bond"
      ],
      "prefill": "day_gainers",
      "title": "Screener",
      "type": "string"
    },
    "screenerSort": {
      "default": "intradaymarketcap",
      "description": "Sort field for mode=customScreener.",
      "editor": "select",
      "enum": [
        "intradaymarketcap",
        "percentchange",
        "dayvolume"
      ],
      "enumTitles": [
        "Market cap",
        "Percent change",
        "Volume"
      ],
      "prefill": "intradaymarketcap",
      "title": "Custom screener sort",
      "type": "string"
    },
    "searchQuery": {
      "description": "Company, fund, index, currency or crypto name to search for (mode=search).",
      "editor": "textfield",
      "prefill": "Apple",
      "title": "Search query",
      "type": "string"
    },
    "startDate": {
      "description": "Earliest date for historical bars (`YYYY-MM-DD`). Overrides `range` (mode=tickers).",
      "editor": "textfield",
      "title": "History start date",
      "type": "string"
    },
    "tickers": {
      "default": [],
      "description": "Symbols or Yahoo Finance quote URLs (mode=tickers). Examples: `AAPL`, `BRK.B`, `^GSPC`, `EURUSD=X`, `BTC-USD`, `7203.T`, `https://finance.yahoo.com/quote/AAPL/`.",
      "editor": "stringList",
      "prefill": [
        "AAPL"
      ],
      "title": "Tickers",
      "type": "array"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Yahoo Finance Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
tickersstringoptionalDataset containing every scraped record (ticker, discovery or error).

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Dataset with ticker quotes (including US post-market fields), OHLCV history, expanded financial statements, dividends, splits, up to 200 news items, analyst and earnings data, holders, options, fund data with bond ratings and sector weights, SEC filings, insights, search results, custom and predefined screener rows, trending symbols and market summary rows.",
  "properties": {
    "tickers": {
      "description": "Dataset containing every scraped record (ticker, discovery or error).",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Yahoo Finance records",
      "type": "string"
    }
  },
  "title": "Yahoo Finance Market Data & Fundamentals Scraper Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "title": "Yahoo Finance records",
  "views": {
    "discovery": {
      "display": {
        "component": "table",
        "properties": {
          "currentPrice": {
            "format": "number",
            "label": "Price"
          },
          "dayChangePercent": {
            "format": "number",
            "label": "%"
          },
          "exchange": {
            "format": "text",
            "label": "Exchange"
          },
          "industry": {
            "format": "text",
            "label": "Industry"
          },
          "longName": {
            "format": "text",
            "label": "Long name"
          },
          "name": {
            "format": "text",
            "label": "Name"
          },
          "quoteType": {
            "format": "text",
            "label": "Quote type"
          },
          "rank": {
            "format": "number",
            "label": "Rank"
          },
          "recordType": {
            "format": "text",
            "label": "Type"
          },
          "region": {
            "format": "text",
            "label": "Region"
          },
          "screenerId": {
            "format": "text",
            "label": "Screener"
          },
          "screenerName": {
            "format": "text",
            "label": "Screener name"
          },
          "sector": {
            "format": "text",
            "label": "Sector"
          },
          "shortName": {
            "format": "text",
            "label": "Short name"
          },
          "sourceUrl": {
            "format": "link",
            "label": "Yahoo URL"
          },
          "ticker": {
            "format": "text",
            "label": "Ticker"
          }
        }
      },
      "title": "Discovery results",
      "transformation": {
        "fields": [
          "recordType",
          "ticker",
          "name",
          "longName",
          "shortName",
          "exchange",
          "quoteType",
          "sector",
          "industry",
          "screenerId",
          "screenerName",
          "region",
          "rank",
          "currentPrice",
          "dayChangePercent",
          "sourceUrl"
        ]
      }
    },
    "errors": {
      "display": {
        "component": "table",
        "properties": {
          "error": {
            "format": "text",
            "label": "Error"
          },
          "message": {
            "format": "text",
            "label": "Message"
          },
          "reason": {
            "format": "text",
            "label": "Reason"
          },
          "recordType": {
            "format": "text",
            "label": "Type"
          },
          "scrapedAt": {
            "format": "text",
            "label": "Scraped at"
          },
          "sourceUrl": {
            "format": "link",
            "label": "Yahoo URL"
          },
          "ticker": {
            "format": "text",
            "label": "Ticker"
          },
          "type": {
            "format": "text",
            "label": "Error type"
          }
        }
      },
      "title": "Errors",
      "transformation": {
        "fields": [
          "recordType",
          "type",
          "error",
          "ticker",
          "reason",
          "message",
          "sourceUrl",
          "scrapedAt"
        ]
      }
    },
    "tickers": {
      "display": {
        "component": "table",
        "properties": {
          "companyName": {
            "format": "text",
            "label": "Company"
          },
          "currency": {
            "format": "text",
            "label": "Cur"
          },
          "currentPrice": {
            "format": "number",
            "label": "Price"
          },
          "dayChangePercent": {
            "format": "number",
            "label": "%"
          },
          "industry": {
            "format": "text",
            "label": "Industry"
          },
          "marketCap": {
            "format": "number",
            "label": "Market Cap"
          },
          "marketState": {
            "format": "text",
            "label": "Market"
          },
          "sector": {
            "format": "text",
            "label": "Sector"
          },
          "sourceUrl": {
            "format": "link",
            "label": "Yahoo URL"
          },
          "ticker": {
            "format": "text",
            "label": "Ticker"
          }
        }
      },
      "title": "Ticker overview",
      "transformation": {
        "fields": [
          "ticker",
          "companyName",
          "sector",
          "industry",
          "currency",
          "currentPrice",
          "marketCap",
          "dayChangePercent",
          "marketState",
          "sourceUrl"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Yahoo Finance Market Data & Fundamentals Scraper

Yahoo Finance is the default reference point for public market data, but its quote pages mix delayed prices, statements, analyst views, holder tables and option chains across dozens of separate views. This actor turns those views into one clean dataset: give it a watchlist, a search phrase, a screener, a region or nothing at all for a market overview, and receive structured records with source URLs and timestamps. It works for stocks, ETFs, mutual funds, indices, currency pairs, futures and crypto, and needs no account, API key or proxy setup.

What this actor does

  • Six modes: tickers (default), search, screener, customScreener, trending, marketSummary
  • Deep quote data: regular, pre-market and US post-market prices, bid/ask, day and 52-week ranges, valuation ratios, margins, growth, short interest, analyst targets and company risk scores
  • History and events: 13 chart intervals, 11 ranges, optional pre/post-market bars, adjusted close, full dividend history and split history
  • Statements and ownership: annual and quarterly income, balance-sheet and cash-flow statements with expanded high-fill fields; institutional, fund, major-holder and insider data
  • Options and funds: multiple current expirations with contract-level filters; ETF/mutual-fund profile, top holdings, bond ratings, sector weights, Morningstar ratings and performance
  • Research extras: search results with a localized lookup fallback, 22 predefined screeners, a region-aware custom screener, region-based trending symbols, market summary, up to 200 news items, analyst ratings, SEC filings and related symbols
  • Empty fields are omitted — optional data that Yahoo does not publish for a symbol is left out rather than emitted as null, "" or []

Output per ticker (mode = tickers)

Every ticker record includes recordType: "ticker", ticker, summaryUrl, sourceUrl, scrapedAt, and the fields below when Yahoo publishes them. Empty values are omitted.

Identity and quote

  • companyName, shortName, sector, industry, country, website, businessSummary, fullTimeEmployees
  • currency, financialCurrency, exchange, exchangeFullName, market, marketState, quoteType, timezone
  • currentPrice, previousClose, open, dayHigh, dayLow, fiftyTwoWeekHigh, fiftyTwoWeekLow
  • dayChange, dayChangePercent, volume, averageVolume, averageDailyVolume10Day, averageDailyVolume3Month
  • bid, ask, bidSize, askSize, fiftyDayAverage, twoHundredDayAverage
  • preMarketPrice, preMarketChange, preMarketChangePercent, preMarketTime, hasPrePostMarketData
  • postMarketPrice, postMarketChange, postMarketChangePercent, postMarketTime — US-listed equities and ETFs when Yahoo publishes an extended-hours quote
  • fulldayPrice, fulldayChange, fulldayChangePercent, quoteSource, exchangeDataDelayedBy, firstTradeDate
  • marketCap, sharesOutstanding, floatShares, impliedSharesOutstanding

Valuation, profitability and dividends

  • beta, trailingPE, forwardPE, trailingEps, epsForward, epsCurrentYear, priceEpsCurrentYear, priceToBook, bookValue
  • enterpriseValue, enterpriseToRevenue, enterpriseToEbitda, profitMargins, operatingMargins, grossMargins, ebitdaMargins
  • returnOnAssets, returnOnEquity, revenueGrowth, earningsGrowth, revenuePerShare
  • totalCash, totalDebt, totalCashPerShare, freeCashflow, operatingCashflow, currentRatio, quickRatio, debtToEquity, payoutRatio
  • dividendRate, dividendYield, trailingAnnualDividendRate, trailingAnnualDividendYield, exDividendDate, dividendDate
  • fiveYearAvgDividendYield, lastDividendValue, lastDividendDate, lastSplitFactor, lastSplitDate
  • sharesShort, sharesShortPriorMonth, shortRatio, shortPercentOfFloat, sharesPercentSharesOut, heldPercentInsiders, heldPercentInstitutions
  • 52WeekChange, SandP52WeekChange, mostRecentQuarter, lastFiscalYearEnd, nextFiscalYearEnd
  • recommendationKey, recommendationMean, numberOfAnalystOpinions, targetHighPrice, targetLowPrice, targetMeanPrice, targetMedianPrice
  • earningsTimestamp, earningsTimestampStart, earningsTimestampEnd, isEarningsDateEstimate, earningsCallTimestampStart, earningsCallTimestampEnd, averageAnalystRating

Company profile and risk

  • address1, city, state, zip, phone, irWebsite
  • auditRisk, boardRisk, compensationRisk, shareHolderRightsRisk, overallRisk, governanceEpochDate, compensationAsOfEpochDate
  • companyOfficers[] — name, title, age, totalPay, exercisedValue, unexercisedValue
  • statistics — curated key statistics and financial-data ratios

History and corporate actions (when enabled)

  • history[] — date, datetime, open, high, low, close, adjclose, volume, dividends, stock_splits
  • historyCount
  • dividends[] — date, value; dividendCount. Dates are actual event dates when Yahoo exposes them, not month-start chart keys
  • splits[] — date, value, numerator, denominator, splitRatio; splitCount
  • capitalGains[] — when Yahoo publishes a capital-gain event

Financial statements (when includeFinancials is on)

  • financials.income, financials.balance, financials.cashflow — each keyed by fiscal period, with statement values in the reporting currency. The curated set covers 122 high-fill Yahoo types, including EBIT, EBITDA, Net_Tangible_Assets, Beginning_Cash_Position, Invested_Capital and Tax_Rate_For_Calcs; the legacy nested shape and underscore labels are unchanged
  • financials.quarterly.income, financials.quarterly.balance, financials.quarterly.cashflow — when includeQuarterlyFinancials is on
  • financials.currency — reporting currency
  • financials.periods — available annual and quarterly period dates

News, analyst and earnings

  • news[] — title, url, publisher, publishedAt, type, relatedTickers, thumbnailUrl, summary, description when Yahoo provides them; newsCount. The primary feed is Yahoo's Finance Nexus graph with cursor pagination, so maxNews can go up to 200; search news and the HTML page remain fallbacks
  • recommendations — strongBuy, buy, hold, sell, strongSell
  • recommendationTrend[] — period, strongBuy, buy, hold, sell, strongSell
  • upgradeDowngradeHistory[] — firm, fromGrade, toGrade, action, priceTargetAction, currentPriceTarget, priorPriceTarget, gradeDate
  • analystPriceTargets — current, high, low, mean, median
  • earningsHistory[] — quarter, epsActual, epsEstimate, epsDifference, surprisePercent
  • earningsDates[] — date, reportedDate, epsEstimate, reportedEps, surprisePercent
  • earningsEstimates — earnings[], revenue[], growthEstimates[]
  • calendarEvents — earningsDate, earningsCallDate, isEarningsDateEstimate, earningsAverage, earningsLow, earningsHigh, revenueAverage, revenueLow, revenueHigh, exDividendDate, dividendDate
  • calendar — the same dates and estimates with legacy snake-case keys

Holders and insiders (when enabled)

  • holders.institutional[], holders.mutualFund[] — Date_Reported, Holder, pctHeld, Shares, Value, pctChange
  • holders.major — insidersPercentHeld, institutionsPercentHeld, institutionsFloatPercentHeld, institutionsCount
  • holders.insiderHolders[] — name, relation, transactionDescription, latestTransDate, positionDirect, positionIndirect, valueDirect
  • holders.netSharePurchaseActivity — buy/sell/net counts and shares, insider percentages and institutional net buying
  • insiderTransactions[] — Shares, Value, URL, Text, Insider, Position, Transaction, Start_Date, Ownership; insiderTransactionCount

Options (when includeOptions is on)

  • optionExpirations[] — upcoming expiration dates
  • options — expiration, calls[], puts[], and an underlying quote
  • optionChains[] — present when more than one expiration is requested
  • Contract fields: contractSymbol, strike, currency, lastPrice, change, percentChange, volume, openInterest, bid, ask, contractSize, expiration, lastTradeDate, impliedVolatility, inTheMoney

Funds, filings and research extras

  • fundProfile — family, categoryName, legalType, annualReportExpenseRatio, annualHoldingsTurnover, totalNetAssets (absolute value, not millions), managerName, managerBio, inceptionDate (fund inception when Yahoo publishes it; omitted otherwise)
  • topHoldings — cashPosition, stockPosition, bondPosition, otherPosition, preferredPosition, convertiblePosition, holdings[], equityHoldings, bondHoldings, otherHoldings, bondRatings[], sectorWeightings[] (rating and sector rows are {key, value}; equity sector weights are empty for non-equity funds such as GLD and TLT)
  • fundPerformance — asOfDate, benchmark fields, period returns, fund averages and morningStarOverallRating / morningStarRiskRating for mutual funds
  • secFilings[] — date, type, title, edgarUrl, exhibits[]
  • insights — technical outlook, key technicals, valuation, research reports and significant developments
  • relatedSymbols[] — symbol, score
  • requestedTicker — present when an input alias resolved to a different Yahoo symbol (for example BRK.B → BRK-B)

Output: discovery modes

recordType, ticker, sourceUrl, scrapedAt, name, longName, exchange, exchangeDisplay, quoteType, typeDisplay, sector, industry, score, isYahooFinance, optional quote snapshot.

screenerResult (mode = screener or customScreener)

recordType, ticker, sourceUrl, scrapedAt, screenerId, screenerName, rank, plus quote fields such as currentPrice, previousClose, marketCap, trailingPE, forwardPE, dividendYield, fiftyTwoWeekHigh, fiftyTwoWeekLow, volume, averageVolume, dayChange, dayChangePercent, quoteType, exchange, currency, marketState, pre-market/post-market fields and fullday* fields. Custom rows also include region and screenerSort.

recordType, ticker, sourceUrl, scrapedAt, region, rank, plus the same quote fields when Yahoo returns them.

marketSummary (mode = marketSummary)

recordType, ticker, sourceUrl, scrapedAt, shortName, fullExchangeName, quoteType, marketState, currentPrice, dayChange, dayChangePercent, previousClose, regularMarketTime, typeDisplay.

error

recordType: "error", type: "yahoo_finance_error", error, ticker, reason, message, sourceUrl, scrapedAt. error mirrors the legacy short reason (no_data). Invalid or delisted symbols produce this record instead of a partial ticker record.

Input

Field Type Default Description
mode string tickers tickers / search / screener / customScreener / trending / marketSummary
tickers array – Symbols or Yahoo quote URLs (mode=tickers).
searchQuery string – Company or symbol name (mode=search).
maxSearchResults integer 10 Search results to return (1–50).
screenerId string day_gainers One of 22 Yahoo predefined screeners (mode=screener).
screenerSort string intradaymarketcap intradaymarketcap / percentchange / dayvolume (mode=customScreener).
region string US Market region for quotes, search, trending and the custom screener.
language string en-US Language for names, news and labels.
range string 1mo Chart range when no dates are supplied.
startDate string – History start (YYYY-MM-DD); overrides range.
endDate string – History end (YYYY-MM-DD); overrides range.
interval string 1d 1m … 3mo; intraday combinations are range-limited.
includePrePost boolean false Include extended-hours intraday bars.
includeHistory boolean true Include OHLCV history.
includeDividends boolean true Include full dividend history.
includeSplits boolean true Include split history.
includeNews boolean true Include ticker news.
maxNews integer 25 News items per ticker (1–200).
includeFinancials boolean false Include annual statements.
includeQuarterlyFinancials boolean false Add quarterly statements; requires includeFinancials.
includeHolders boolean false Include holder summaries.
includeInsiders boolean false Include insider transactions and net purchase activity.
includeOptions boolean false Include option chains.
optionExpirations integer 1 Upcoming expirations to fetch (1–25).
maxOptionContracts integer 50 Calls and puts per expiration (1–500 each).
optionContractType string both both / calls / puts.
minStrike number – Minimum option strike.
maxStrike number – Maximum option strike.
minVolume integer – Minimum option volume.
minOpenInterest integer – Minimum option open interest.
minImpliedVolatilityPercent number – Minimum IV, e.g. 25 = 25%.
includeRecommendations boolean true Recommendation summary and trend.
includeUpgradesDowngrades boolean false Analyst rating changes.
includeAnalystPriceTargets boolean true Price-target summary.
includeEarningsHistory boolean true Recent EPS actuals vs estimates.
includeEarningsEstimates boolean false Forward EPS/revenue estimates.
includeEarningsCalendar boolean true Upcoming earnings and dividend dates.
includeFundData boolean false ETF/mutual-fund profile, holdings and performance.
includeSecFilings boolean false Recent SEC filings.
includeInsights boolean false Technical outlook, reports and developments.
includeRelatedSymbols boolean false Yahoo related-symbol recommendations.
maxResults integer 50 Record cap for discovery modes (1–5000).
concurrency integer 4 Tickers processed in parallel (1–16).

Example: daily watchlist

{
  "mode": "tickers",
  "tickers": ["AAPL", "MSFT", "NVDA"],
  "range": "5d",
  "interval": "1d",
  "includeHistory": true,
  "includeNews": false
}

Example: full fundamentals and ownership

{
  "mode": "tickers",
  "tickers": ["AAPL"],
  "includeFinancials": true,
  "includeQuarterlyFinancials": true,
  "includeHolders": true,
  "includeInsiders": true,
  "includeEarningsEstimates": true,
  "includeSecFilings": true
}

Example: option chain with filters

{
  "mode": "tickers",
  "tickers": ["TSLA"],
  "includeOptions": true,
  "optionExpirations": 3,
  "maxOptionContracts": 25,
  "optionContractType": "both",
  "minStrike": 200,
  "maxStrike": 500,
  "minOpenInterest": 100,
  "minImpliedVolatilityPercent": 20
}

Example: ETF research

{
  "mode": "tickers",
  "tickers": ["SPY", "QQQ"],
  "includeFundData": true,
  "includeDividends": true,
  "includeHistory": false
}

Example: discover symbols and market movers

{
  "mode": "screener",
  "screenerId": "day_gainers",
  "maxResults": 25
}
{
  "mode": "customScreener",
  "region": "JP",
  "screenerSort": "percentchange",
  "maxResults": 100
}
{
  "mode": "search",
  "searchQuery": "electric vehicles",
  "maxSearchResults": 10
}
{
  "mode": "trending",
  "region": "GB",
  "maxResults": 10
}

Use cases

  • Watchlist monitoring — schedule a small ticker list for daily quote, pre-market and news snapshots
  • Backtesting and charting — export OHLCV bars with adjusted close across 13 intervals and 11 ranges
  • Fundamental screening — pull annual and quarterly statements, margins, growth and analyst targets into a warehouse
  • Options research — collect multiple expirations and filter by strike, volume, open interest or implied volatility
  • ETF and fund due diligence — compare expense ratios, top holdings, sector exposure and trailing returns
  • Market discovery — feed screener, search, trending and market-summary rows into alerting or research dashboards
  • Ownership and insider tracking — monitor institutional positions, insider holders and net purchase activity
  • Compliance and filing research — collect SEC filing links and exhibits for a list of companies

Known hard limits

These are limits of Yahoo's public data, verified during the revamp; the actor does not fabricate values for them:

  • Options history and source greeks: only current option chains are served, and there are no source greeks (no delta/gamma/theta/vega in Yahoo's contract payload). Historical chains are unavailable.
  • US-only options: option chains exist only for optionable US-listed symbols; no HK/EU/index/FX/crypto chains.
  • Statements for funds, indices, FX, crypto and futures: Yahoo has no income, balance-sheet or cash-flow statements for these instrument types. Fund profiles and holdings are the substitute.
  • ESG/sustainability: Yahoo retired the ESG modules and page; the field is not emitted.
  • Predefined screener region: the predefined endpoint is US-centric and ignores region; use customScreener.
  • CJK direct search: /v1/finance/search rejects non-Latin text with HTTP 400; the localized /v1/finance/lookup fallback is the supported path and can still return zero documents.
  • Screener page size: Yahoo accepts at most 250 rows per request; the actor paginates to reach maxResults.
  • News source cap: the graph is paginated by cursor and is capped at 200 items per ticker by this actor; the search fallback is smaller.
  • Trending sparsity: several regions return only 1–4 symbols upstream.

FAQ

Do I need an API key, login, cookies or a proxy? No. The actor reads Yahoo Finance's public web data without an account. It uses no user cookies or API keys, and it works without a proxy by default.

Are quotes real-time? Most Yahoo quotes are delayed, often by about 15 minutes for US equities. The record's quoteSource, exchangeDataDelayedBy and marketState fields tell you what Yahoo reported for that snapshot.

Can I get pre-market and after-hours prices? Pre-market fields are included when Yahoo publishes them. postMarket* fields (postMarketPrice, postMarketChange, postMarketChangePercent, postMarketTime) are mapped from Yahoo's quote summary (with the quote-v7 fields as fallback). Post-market values were verified for US-listed equities and ETFs (12/12) and were absent for non-US listings, indices, FX, crypto and futures (0/18), so treat these fields as US-only. Intraday history can include pre/post-market bars with includePrePost.

Why are some fields missing for my ticker? Not every instrument type has every data type. Indices, currencies, futures and crypto usually have quotes and charts but no company statements, holders or options. ETFs have fund data instead of company statements. The actor omits a field when Yahoo has no value for it.

How many news items can I get? The actor reads Yahoo's Finance Nexus graph first and paginates its cursor, so maxNews supports up to 200 items per symbol (AAPL returned 148, MSFT 132, NVDA 182 and SPY 138 in verification). News works for equities, ETFs, indices, FX and crypto on this path. If the graph returns nothing, the actor falls back to Yahoo's search feed (about 50 items) and then the HTML news page. Results are deduplicated by URL; news can mention related tickers, so use relatedTickers when you need to filter relevance.

Why is the options chain missing? Options exist only for optionable US-listed symbols. Foreign listings, indices, currencies, futures and crypto do not have a Yahoo option chain. Yahoo exposes only current expirations, not historical chains, and its contract payload contains no delta, gamma, theta or vega. Historical options, source-provided greeks and non-US option chains are confirmed hard limits; the actor does not invent them.

Why are quarterly statements missing? Quarterly statements require both includeFinancials and includeQuarterlyFinancials. Operating companies, not funds, indices, FX, crypto or futures, publish them; those instrument types have no Yahoo income/balance/cash-flow statements (a confirmed hard limit). Use includeFundData for fund profiles and holdings. Some foreign issuers report only annual periods.

What does financials contain? financials.income, financials.balance and financials.cashflow are keyed by fiscal period. Values are in the reporting currency shown in financials.currency; financials.periods lists the available dates. Quarterly groups sit under financials.quarterly. Item keys keep the legacy underscore labels such as Total_Revenue, Net_Income and Operating_Cash_Flow, so existing spreadsheet and API integrations continue to work.

Why is dividendYield a small number like 0.31? For backward compatibility, dividendYield keeps Yahoo's percentage number: 0.31 means 0.31%. The additive trailingAnnualDividendYield is a fraction: 0.0031 means the same yield. heldPercentInsiders and heldPercentInstitutions are fractions; debtToEquity is a percentage number.

Why is the sustainability/ESG field gone? Yahoo retired its ESG endpoints and the sustainability page no longer returns scores. The actor does not advertise or emit a sustainability field, and an old task that sends includeSustainability continues to run with a logged no-op.

Can I search in any language? Company names and news localize through the language and region inputs, and unicode names are preserved in output. Yahoo's /v1/finance/search endpoint rejects non-Latin text with HTTP 400 (a confirmed source limit), so for Japanese, Chinese or Korean queries the actor automatically falls back to /v1/finance/lookup with the selected language and region. Lookup returned documents for most JA/ZH-Hans/ZH-Hant/KO probes. If it returns none, the run status says so explicitly; try a ticker (7203.T), an English name, or another region/language.

How are fund and option values expressed? Fund positions (cashPosition, stockPosition, holdingPercent) are fractions: 0.0836 means 8.36%. fundProfile.totalNetAssets is absolute fund assets (USD for US-listed funds), normalized from Yahoo's raw millions when that is the only value available. Option impliedVolatility uses Yahoo's percentage number: 2.0859 means 208.59%, while the minImpliedVolatilityPercent input is a percent: 25 means 25%. marketSummary.dayChangePercent is also Yahoo's percentage number. postMarketChangePercent is normalized to the same percentage-number convention (0.63 means 0.63%). Statement values are in financials.currency.

Why do predefined screeners return US rows even when I pick another region? Yahoo's predefined screener endpoint is US-centric and ignores the region parameter (confirmed hard limit). Use mode: "customScreener" instead: it posts a region operand to Yahoo's custom screener and returned regional rows for 30 of 31 region codes (JP 3,814; IN 8,553; PE 0). The actor paginates in 250-row requests until maxResults or source exhaustion. Predefined screeners are unchanged.

Why does trending return only a few symbols for some regions? Yahoo's trending feed is sparse outside the US. A region with one to three symbols is a genuine upstream result, not an early stop. The run status reports the shortfall, and mode: "customScreener" provides a region-wide fallback.

What happens to a delisted or invalid symbol? The actor emits an explicit error record with reason: "no_data" and continues with the other symbols. It does not emit a silent partial ticker record. Aliases such as BRK.B are resolved to Yahoo's spelling (BRK-B) and return data. Rare-symbol HTTP 500 quote pages were not reproduced locally (306 of 306 rare/crypto pages returned 200); the actor still keeps the quote-v7, chart and HTML fallbacks and reports an error rather than fabricating values.

Why are some fund fields missing? topHoldings.bondRatings and topHoldings.sectorWeightings are present when Yahoo publishes them; equity sector weights are empty for non-equity funds such as GLD and TLT. fundProfile.totalNetAssets is normalized to absolute assets and omitted when Yahoo only returns a zero sentinel; fundProfile.inceptionDate comes from Yahoo's fund inception field, not the current manager's start date, and is omitted when unavailable. Morningstar overall/risk ratings are populated for mutual funds but empty for most ETFs, so they are omitted when absent rather than emitted as zero. SEC filings can be attached to one share class only; for example GOOGL's secFilings module is empty while GOOG returns filings, so the actor falls back to the sibling class and records secFilingsSourceSymbol.

Is this affiliated with Yahoo? No. This is an independent, third-party actor that reads Yahoo Finance's publicly available data and is not affiliated with or endorsed by Yahoo.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build z23J6rGwf21tmdpCT. Documentation is regenerated from the default published build; private drafts are not included.