# Yahoo Finance Scraper - Stocks, Quotes, Financials & News (`scrapesage/yahoo-finance-scraper`) Actor

Scrape Yahoo Finance for stocks, ETFs, crypto, currencies, indices & futures: live quotes, company profiles, valuation, full financial statements, analyst ratings & price targets, holders, earnings, dividends, historical OHLCV prices, news & trending. Monitor mode, no login, no key, no browser.

- **URL**: https://apify.com/scrapesage/yahoo-finance-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** News, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 ticker records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Yahoo Finance Scraper — Stocks, Quotes, Financials & News

Extract **complete Yahoo Finance data** for any **stock, ETF, crypto, currency, index or future** — real-time quotes, full company profiles, valuation multiples, **complete financial statements**, analyst price targets & ratings, institutional & insider holders, earnings, dividends, **historical OHLCV prices**, news and trending tickers.

One record carries what most finance scrapers split across five — the **richest Yahoo Finance dataset in the category**. No login, no API key, no browser — fast JSON extraction with automatic rate-limit handling.

### Why this Yahoo Finance scraper?

Most scrapers return a bare price and a name. This actor pulls Yahoo's full internal data graph and ships it as one clean, flat, spreadsheet/LLM-ready record:

| Data | Typical scrapers | This actor |
|---|---|---|
| Live quote (price, change, volume, pre/post-market) | ✅ | ✅ |
| Valuation (P/E, P/B, PEG, EV/EBITDA, market cap) | partial | ✅ |
| Full financial statements (income, balance, cash-flow, 4y) | ❌ | ✅ |
| Margins, ROE/ROA, debt, free cash flow | ❌ | ✅ |
| Analyst price targets + buy/hold/sell trend | ❌ | ✅ |
| Upgrade / downgrade history | ❌ | ✅ |
| Institutional & insider holders | ❌ | ✅ |
| Earnings history + next earnings date | ❌ | ✅ |
| Dividends, yield, payout, ex-date | partial | ✅ |
| Company profile (sector, employees, officers, website) | ❌ | ✅ |
| Historical OHLCV (any range & interval) | partial | ✅ |
| News + trending tickers | ❌ | ✅ |
| Stocks **and** ETFs, crypto, FX, indices, futures | partial | ✅ |
| Monitor mode (only new / changed) | ❌ | ✅ |

### Use cases

- **Portfolio & watchlist monitoring** — schedule a daily run over your watchlist and (with monitor mode) get only the new price bars, fresh analyst actions, or upcoming earnings.
- **Quant & ML datasets** — pull historical OHLCV across hundreds of symbols, or build a fundamentals panel (valuation, margins, growth, statements) for screening and backtesting.
- **Fintech & dashboards** — power apps, Sheets and BI dashboards with structured, LLM-ready financial data without paying for a market-data API.
- **Equity research & screening** — compare valuation, analyst targets, profitability and balance-sheet strength across a peer set in one export.
- **News & sentiment pipelines** — stream the latest headlines per ticker into your own alerting or NLP workflow.
- **Trend discovery** — surface today's trending tickers by region and enrich them into full records.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Yahoo Finance Scraper**, choose a **mode**, enter ticker symbols (or company names / Yahoo Finance URLs), and click **Start**.
3. Watch records stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Modes

- **tickers** *(default)* — one rich record per symbol: live quote + profile + valuation + financial statements + analyst ratings + holders + earnings + optional news.
- **historical** — OHLCV price history per symbol for any `range` (1d → max) and `interval` (1m → 1mo).
- **news** — recent news articles per symbol.
- **search** — resolve company names / keywords to ticker symbols.
- **trending** — today's trending tickers for a region (optionally enriched into full records).

### Input

```json
{
    "mode": "tickers",
    "tickers": ["AAPL", "MSFT", "NVDA", "BTC-USD", "SPY"],
    "searchQueries": ["Tesla", "Coinbase"],
    "includeFinancials": true,
    "includeAnalystRatings": true,
    "includeHolders": true,
    "includeNews": true,
    "maxResults": 50,
    "monitorMode": false
}
````

- **mode** — `tickers`, `historical`, `news`, `search` or `trending`.
- **tickers** — Yahoo Finance symbols: stocks (`AAPL`), ETFs (`SPY`), crypto (`BTC-USD`), currencies (`EURUSD=X`), indices (`^GSPC`), futures (`CL=F`).
- **searchQueries** — company names / keywords, auto-resolved to symbols.
- **startUrls** — Yahoo Finance quote URLs (`https://finance.yahoo.com/quote/AAPL`); the symbol is extracted.
- **includeProfile / includeFinancials / includeAnalystRatings / includeHolders / includeNews** — toggle the heavy blocks in *tickers* mode.
- **range / interval** — *historical* mode window and candle size.
- **trendingRegion / enrichTrending** — *trending* mode region and whether to pull full records.
- **monitorMode / monitorStoreName** — emit only new / changed items across runs (see below).
- **maxResults / maxConcurrency / proxyConfiguration** — run controls.

### Output

One record per symbol in *tickers* mode (`type: "ticker"`), with the other modes emitting `historical`, `news` and `lookup` records:

```json
{
    "type": "ticker",
    "symbol": "AAPL",
    "name": "Apple Inc.",
    "quoteType": "EQUITY",
    "exchange": "NasdaqGS",
    "currency": "USD",
    "marketState": "REGULAR",
    "url": "https://finance.yahoo.com/quote/AAPL",
    "price": 299.24,
    "change": 1.83,
    "changePercent": 0.6153,
    "previousClose": 297.41,
    "dayHigh": 301.1,
    "dayLow": 296.5,
    "volume": 41892100,
    "fiftyTwoWeekHigh": 301.0,
    "fiftyTwoWeekLow": 169.21,
    "marketCap": 4460000000000,
    "marketCapFmt": "4.46T",
    "trailingPE": 32.1,
    "forwardPE": 28.4,
    "priceToBook": 58.2,
    "pegRatio": 2.1,
    "beta": 1.24,
    "trailingEps": 6.31,
    "dividendRate": 1.04,
    "dividendYield": 0.35,
    "exDividendDate": "2026-05-12T00:00:00.000Z",
    "totalRevenue": 416160000000,
    "revenueGrowth": 6.2,
    "grossMargins": 46.7,
    "profitMargins": 26.1,
    "returnOnEquity": 149.8,
    "totalCash": 48500000000,
    "totalDebt": 98200000000,
    "freeCashflow": 97300000000,
    "targetMeanPrice": 285.4,
    "targetHighPrice": 350.0,
    "targetLowPrice": 200.0,
    "numberOfAnalystOpinions": 41,
    "recommendationKey": "buy",
    "recommendationTrend": [{ "period": "0m", "strongBuy": 12, "buy": 21, "hold": 6, "sell": 1, "strongSell": 1 }],
    "upgradeDowngradeHistory": [{ "date": "2026-05-02T00:00:00.000Z", "firm": "Morgan Stanley", "toGrade": "Overweight", "fromGrade": "Equal-Weight", "action": "up" }],
    "earningsDate": "2026-07-30T00:00:00.000Z",
    "earningsHistory": [{ "quarter": "2026-03-31T00:00:00.000Z", "epsActual": 1.65, "epsEstimate": 1.6, "surprisePercent": 3.1 }],
    "sector": "Technology",
    "industry": "Consumer Electronics",
    "fullTimeEmployees": 164000,
    "website": "https://www.apple.com",
    "country": "United States",
    "companyOfficers": [{ "name": "Mr. Timothy D. Cook", "title": "CEO & Director", "totalPay": 16500000 }],
    "heldPercentInstitutions": 62.3,
    "heldPercentInsiders": 2.1,
    "topInstitutionalHolders": [{ "organization": "Vanguard Group Inc", "pctHeld": 8.4, "shares": 1310000000 }],
    "incomeStatement": [{ "endDate": "2025-09-30T00:00:00.000Z", "totalRevenue": 416160000000, "grossProfit": 194000000000, "netIncome": 108500000000 }],
    "balanceSheet": [{ "endDate": "2025-09-30T00:00:00.000Z", "totalAssets": 365000000000, "totalLiabilities": 308000000000 }],
    "cashflowStatement": [{ "endDate": "2025-09-30T00:00:00.000Z", "operatingCashflow": 118000000000, "capitalExpenditures": -10500000000 }],
    "news": [{ "title": "Apple unveils …", "publisher": "Reuters", "link": "https://…", "publishedAt": "2026-06-15T13:20:00.000Z" }],
    "scrapedAt": "2026-06-16T12:00:00.000Z"
}
```

*Historical* records embed a `prices` array of `{ date, open, high, low, close, adjClose, volume }` plus period high/low and return; *news* records carry `title`, `publisher`, `link`, `publishedAt` and `relatedTickers`.

### Monitor mode — only new & changed data

Turn on **monitorMode** and the actor remembers what it returned in previous runs (in a named key-value store) and emits only what's new next time:

- **news** → only articles you haven't seen.
- **historical** → only symbols with a new latest bar.
- **trending** → only freshly trending symbols.
- **tickers** → only symbols whose **analyst rating, earnings date, or newest upgrade/downgrade** changed.

This is **orthogonal to [Apify Schedules](https://docs.apify.com/platform/schedules)** — the schedule decides *when* the actor runs; monitor mode decides *what* counts as new. They compose cleanly: schedule a daily run, get a clean feed of only the changes.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it hourly/daily to track a watchlist, monitor earnings, or build a price history; perfect for dashboards and alerts.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (Slack alert, Sheets append, trade signal) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/yahoo-finance-scraper').call({
    mode: 'tickers',
    tickers: ['AAPL', 'MSFT', 'NVDA', 'BTC-USD'],
    includeFinancials: true,
    includeAnalystRatings: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} finance records`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push quotes & alerts into your tools.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored watchlist changes.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "get the latest financials and analyst targets for NVDA and TSLA" and let it run this scraper for you.

### More scrapers from scrapesage

Build a complete **markets & business-intelligence stack**:

- **[SEC EDGAR Scraper](https://apify.com/scrapesage/sec-edgar-scraper)** — official US filings, XBRL financials and company facts.
- **[Levels.fyi Scraper](https://apify.com/scrapesage/levels-fyi-scraper)** — tech salaries, compensation and leveling market data.
- **[Google Patents Scraper](https://apify.com/scrapesage/google-patents-scraper)** — patents, citations and assignees for IP intelligence.
- **[FEC Campaign Finance Scraper](https://apify.com/scrapesage/fec-campaign-finance-scraper)** — donors, PACs, committees and lobbying.
- **[USAspending Scraper](https://apify.com/scrapesage/usaspending-scraper)** — federal awards, contractors and recipients.
- **[Companies House Scraper](https://apify.com/scrapesage/companies-house-scraper)** — UK companies, directors and PSCs.
- **[Product Hunt Scraper](https://apify.com/scrapesage/product-hunt-scraper)** — product launches, makers and traction.
- **[GitHub Scraper](https://apify.com/scrapesage/github-scraper)** — repos, developers and contact leads.

### Tips

- **Batch big watchlists**: pass dozens of symbols in `tickers`. Quotes are fetched in batches and fundamentals in parallel.
- **Intraday history**: intervals from `1m` to `1h` only return data for short ranges (a few days); use `1d`/`1wk`/`1mo` for longer ranges.
- **Crypto & FX**: use Yahoo's suffixes — `BTC-USD`, `ETH-USD`, `EURUSD=X`, `GC=F` (gold futures), `^GSPC` (S\&P 500).
- **Cost control**: turn off `includeFinancials`/`includeHolders` for a lighter, cheaper quote-only record; turn on `monitorMode` so scheduled runs only return changes.
- **Rate limits**: the actor binds a cookie + crumb to each proxy IP and rotates a fresh session automatically on any rate-limit. If you hit persistent limits, switch the proxy to residential.

### FAQ

**Does it need a Yahoo Finance API key or login?** No. It reads the same public endpoints the Yahoo Finance website uses — no key, no login, no browser.

**Which assets are supported?** Stocks, ETFs, mutual funds, crypto, currencies (FX), indices and futures — anything with a Yahoo Finance symbol.

**Can I get historical prices?** Yes — set `mode` to `historical` and choose a `range` and `interval`. Each record embeds the full OHLCV series for one symbol.

**How do I monitor a watchlist for changes?** Create a [Schedule](https://docs.apify.com/platform/schedules) and turn on `monitorMode`. You'll get a clean feed of only new news, new price bars, or changed analyst ratings / earnings dates.

**Can I export to Google Sheets, CSV or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**A field is null — why?** Some fields don't exist for some asset types (crypto has no P/E, indices have no holders) or aren't published for a given company. Fields are `null` only when the data genuinely doesn't exist.

**Is scraping Yahoo Finance legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws and Yahoo's terms. Market data is provided for informational purposes and is not investment advice.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `mode` (type: `string`):

What to scrape. tickers = full record per symbol (quote + profile + valuation + financial statements + analyst ratings + holders + earnings). historical = OHLCV price history per symbol. news = recent news articles per symbol. search = resolve company names/keywords to ticker symbols. trending = today's trending tickers for a region.

## `tickers` (type: `array`):

Yahoo Finance symbols to scrape — stocks (AAPL, MSFT, TSLA), ETFs (SPY, VOO), crypto (BTC-USD, ETH-USD), currencies (EURUSD=X), indices (^GSPC, ^IXIC) or futures (CL=F, GC=F). Used by every mode except search.

## `searchQueries` (type: `array`):

Company names or keywords resolved to ticker symbols automatically (e.g. "Tesla", "Apple", "Coinbase"). In tickers/historical/news mode the best match is scraped; in search mode every match is returned.

## `startUrls` (type: `array`):

Paste Yahoo Finance quote URLs straight from your browser (e.g. https://finance.yahoo.com/quote/AAPL). The symbol is extracted automatically.

## `includeProfile` (type: `boolean`):

Tickers mode: include sector, industry, employees, website, address, business summary, officers and governance risk scores.

## `includeFinancials` (type: `boolean`):

Tickers mode: include condensed annual income statement, balance sheet and cash-flow statement (last 4 fiscal years) plus earnings history.

## `includeAnalystRatings` (type: `boolean`):

Tickers mode: include analyst price targets, recommendation key/mean, the buy/hold/sell trend and recent upgrade/downgrade history.

## `includeHolders` (type: `boolean`):

Tickers mode: include % held by institutions/insiders, the top institutional holders and recent insider holders.

## `includeNews` (type: `boolean`):

Tickers mode: attach the latest headlines (title, publisher, link, date) to each ticker record.

## `newsPerTicker` (type: `integer`):

Max news articles per symbol (used by news mode and by 'attach news').

## `range` (type: `string`):

Historical mode: how far back to pull prices.

## `interval` (type: `string`):

Historical mode: candle size. Intraday intervals (1m–1h) only work with short ranges (≤ a few days).

## `trendingRegion` (type: `string`):

Trending mode: 2-letter region for trending tickers (US, GB, DE, FR, IN, AU, CA, HK, BR, …).

## `enrichTrending` (type: `boolean`):

Trending mode: pull the full ticker record (quote + financials + analyst + holders) for each trending symbol instead of a lightweight lookup.

## `maxLookupsPerQuery` (type: `integer`):

Search mode: how many matching symbols to return per query.

## `maxResults` (type: `integer`):

Global cap on the number of records pushed to the dataset across all inputs.

## `monitorMode` (type: `boolean`):

Remember what was returned in previous runs (in a named key-value store) and emit only NEW or CHANGED items next time: new news articles, new daily price bars, freshly trending symbols, or tickers whose analyst rating / earnings date changed. Pair with an Apify Schedule — the schedule decides WHEN to run, monitor mode decides WHAT is new. They compose without conflict.

## `monitorStoreName` (type: `string`):

Name of the key-value store that holds the monitor's memory. Use different names to track different watchlists independently. Lowercase letters, digits and hyphens only.

## `maxConcurrency` (type: `integer`):

How many symbols to fetch in parallel.

## `proxyConfiguration` (type: `object`):

Proxy settings. Apify Proxy (default) is recommended — Yahoo Finance binds a cookie + crumb to the egress IP, and the actor rotates a fresh sticky session automatically on any rate-limit. The automatic datacenter pool works well; switch to residential if you hit persistent rate-limits.

## Actor input object example

```json
{
  "mode": "tickers",
  "tickers": [
    "AAPL",
    "MSFT",
    "NVDA",
    "BTC-USD",
    "SPY"
  ],
  "searchQueries": [
    "Tesla",
    "Nvidia",
    "Coinbase"
  ],
  "startUrls": [
    "https://finance.yahoo.com/quote/NVDA",
    "https://finance.yahoo.com/quote/BTC-USD"
  ],
  "includeProfile": true,
  "includeFinancials": true,
  "includeAnalystRatings": true,
  "includeHolders": true,
  "includeNews": false,
  "newsPerTicker": 10,
  "range": "1mo",
  "interval": "1d",
  "trendingRegion": "US",
  "enrichTrending": false,
  "maxLookupsPerQuery": 8,
  "maxResults": 50,
  "monitorMode": false,
  "monitorStoreName": "yahoo-finance-monitor",
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped records in the default dataset — tickers, historical prices, news or lookups depending on the selected mode.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "tickers": [
        "AAPL",
        "MSFT",
        "BTC-USD"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/yahoo-finance-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "tickers": [
        "AAPL",
        "MSFT",
        "BTC-USD",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/yahoo-finance-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "tickers": [
    "AAPL",
    "MSFT",
    "BTC-USD"
  ]
}' |
apify call scrapesage/yahoo-finance-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/yahoo-finance-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Yahoo Finance Scraper - Stocks, Quotes, Financials & News",
        "description": "Scrape Yahoo Finance for stocks, ETFs, crypto, currencies, indices & futures: live quotes, company profiles, valuation, full financial statements, analyst ratings & price targets, holders, earnings, dividends, historical OHLCV prices, news & trending. Monitor mode, no login, no key, no browser.",
        "version": "0.1",
        "x-build-id": "yTsi8aDhXAaBcd0ya"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapesage~yahoo-finance-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapesage-yahoo-finance-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapesage~yahoo-finance-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapesage-yahoo-finance-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapesage~yahoo-finance-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapesage-yahoo-finance-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "tickers",
                            "historical",
                            "news",
                            "search",
                            "trending"
                        ],
                        "type": "string",
                        "description": "What to scrape. tickers = full record per symbol (quote + profile + valuation + financial statements + analyst ratings + holders + earnings). historical = OHLCV price history per symbol. news = recent news articles per symbol. search = resolve company names/keywords to ticker symbols. trending = today's trending tickers for a region.",
                        "default": "tickers"
                    },
                    "tickers": {
                        "title": "Ticker symbols",
                        "type": "array",
                        "description": "Yahoo Finance symbols to scrape — stocks (AAPL, MSFT, TSLA), ETFs (SPY, VOO), crypto (BTC-USD, ETH-USD), currencies (EURUSD=X), indices (^GSPC, ^IXIC) or futures (CL=F, GC=F). Used by every mode except search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQueries": {
                        "title": "Company names / keywords",
                        "type": "array",
                        "description": "Company names or keywords resolved to ticker symbols automatically (e.g. \"Tesla\", \"Apple\", \"Coinbase\"). In tickers/historical/news mode the best match is scraped; in search mode every match is returned.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Yahoo Finance quote URLs",
                        "type": "array",
                        "description": "Paste Yahoo Finance quote URLs straight from your browser (e.g. https://finance.yahoo.com/quote/AAPL). The symbol is extracted automatically.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeProfile": {
                        "title": "Include company profile",
                        "type": "boolean",
                        "description": "Tickers mode: include sector, industry, employees, website, address, business summary, officers and governance risk scores.",
                        "default": true
                    },
                    "includeFinancials": {
                        "title": "Include financial statements",
                        "type": "boolean",
                        "description": "Tickers mode: include condensed annual income statement, balance sheet and cash-flow statement (last 4 fiscal years) plus earnings history.",
                        "default": true
                    },
                    "includeAnalystRatings": {
                        "title": "Include analyst ratings",
                        "type": "boolean",
                        "description": "Tickers mode: include analyst price targets, recommendation key/mean, the buy/hold/sell trend and recent upgrade/downgrade history.",
                        "default": true
                    },
                    "includeHolders": {
                        "title": "Include institutional & insider holders",
                        "type": "boolean",
                        "description": "Tickers mode: include % held by institutions/insiders, the top institutional holders and recent insider holders.",
                        "default": true
                    },
                    "includeNews": {
                        "title": "Attach news to ticker records",
                        "type": "boolean",
                        "description": "Tickers mode: attach the latest headlines (title, publisher, link, date) to each ticker record.",
                        "default": false
                    },
                    "newsPerTicker": {
                        "title": "News articles per symbol",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Max news articles per symbol (used by news mode and by 'attach news').",
                        "default": 10
                    },
                    "range": {
                        "title": "Historical range",
                        "enum": [
                            "1d",
                            "5d",
                            "1mo",
                            "3mo",
                            "6mo",
                            "1y",
                            "2y",
                            "5y",
                            "10y",
                            "ytd",
                            "max"
                        ],
                        "type": "string",
                        "description": "Historical mode: how far back to pull prices.",
                        "default": "1mo"
                    },
                    "interval": {
                        "title": "Historical interval",
                        "enum": [
                            "1m",
                            "5m",
                            "15m",
                            "30m",
                            "1h",
                            "1d",
                            "1wk",
                            "1mo"
                        ],
                        "type": "string",
                        "description": "Historical mode: candle size. Intraday intervals (1m–1h) only work with short ranges (≤ a few days).",
                        "default": "1d"
                    },
                    "trendingRegion": {
                        "title": "Trending region",
                        "type": "string",
                        "description": "Trending mode: 2-letter region for trending tickers (US, GB, DE, FR, IN, AU, CA, HK, BR, …).",
                        "default": "US"
                    },
                    "enrichTrending": {
                        "title": "Enrich trending into full records",
                        "type": "boolean",
                        "description": "Trending mode: pull the full ticker record (quote + financials + analyst + holders) for each trending symbol instead of a lightweight lookup.",
                        "default": false
                    },
                    "maxLookupsPerQuery": {
                        "title": "Max matches per query",
                        "minimum": 1,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Search mode: how many matching symbols to return per query.",
                        "default": 8
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Global cap on the number of records pushed to the dataset across all inputs.",
                        "default": 50
                    },
                    "monitorMode": {
                        "title": "Monitor mode (only new / changed)",
                        "type": "boolean",
                        "description": "Remember what was returned in previous runs (in a named key-value store) and emit only NEW or CHANGED items next time: new news articles, new daily price bars, freshly trending symbols, or tickers whose analyst rating / earnings date changed. Pair with an Apify Schedule — the schedule decides WHEN to run, monitor mode decides WHAT is new. They compose without conflict.",
                        "default": false
                    },
                    "monitorStoreName": {
                        "title": "Monitor store name",
                        "type": "string",
                        "description": "Name of the key-value store that holds the monitor's memory. Use different names to track different watchlists independently. Lowercase letters, digits and hyphens only.",
                        "default": "yahoo-finance-monitor"
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 12,
                        "type": "integer",
                        "description": "How many symbols to fetch in parallel.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Apify Proxy (default) is recommended — Yahoo Finance binds a cookie + crumb to the egress IP, and the actor rotates a fresh sticky session automatically on any rate-limit. The automatic datacenter pool works well; switch to residential if you hit persistent rate-limits.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
