# Yahoo Finance Scraper — Quotes, Fundamentals, Options & News (`memo23/yahoo-finance-scraper`) Actor

Scrape all of Yahoo Finance in one actor: live quotes with 60+ fields, historical OHLCV candles, income/balance/cash-flow statements, analyst ratings & price targets, full options chains, news, symbol search & screeners. Stocks, ETFs, crypto, forex, indices. No API key. JSON/CSV.

- **URL**: https://apify.com/memo23/yahoo-finance-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** News, AI, Lead generation
- **Stats:** 19 total users, 19 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 — Quotes, Historicals, Fundamentals, Options & News

Extract **all of Yahoo Finance** with one actor — live quotes with 60+ fields, historical OHLCV candles, full financial statements (income, balance sheet, cash flow), analyst ratings and price targets, complete options chains, ticker news, symbol search, and Yahoo's market screeners. Works with **stocks, ETFs, crypto, forex, indices, and futures**. One clean JSON row per record, exportable to JSON, CSV, or Excel.

![How Yahoo Finance Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-yahoo-finance.png)

> **No API key, no login, no browser.** The actor talks to Yahoo's own JSON endpoints over plain HTTP with browser-grade TLS and built-in residential proxies — it handles Yahoo's session cookie + crumb authentication for you, automatically.

### Why use this Yahoo Finance Scraper?

- **Eight data products in one actor.** Quotes, candles, financial statements, analyst data, options, news, search, and screeners — no need to stitch five different scrapers together.
- **Every asset class.** Equities (`AAPL`), ETFs (`SPY`), crypto (`BTC-USD`), forex (`EURUSD=X`), indices (`^GSPC`), and futures (`GC=F`) all work with the same input.
- **Real fundamentals, not screenshots.** Up to ~10 years of annual and quarterly income-statement, balance-sheet, and cash-flow lines as numeric fields — revenue, EBITDA, EPS, free cash flow, total debt, and 25+ more metrics per period.
- **Analyst intelligence included.** Recommendation trends, price targets (mean/median/high/low), EPS estimate trends, upgrade/downgrade history, and Yahoo's research insights.
- **Options chains, contract by contract.** One row per call/put with strike, bid/ask, volume, open interest, and implied volatility — across as many expirations as you ask for.
- **Schedule-friendly.** Designed for recurring runs: point a daily/hourly schedule at your watchlist and feed dashboards, models, or alerts.

### Overview

Yahoo Finance is the world's most-visited market-data site, covering essentially every listed instrument globally. Since 2023 its API requires a browser-grade TLS fingerprint plus a rotating cookie + crumb handshake, which breaks most scrapers and libraries.

This actor performs that handshake automatically, then reads Yahoo's structured JSON directly — no HTML parsing, no headless browser. Pick one of eight **operations**, pass tickers or a query, and get clean rows.

### Supported inputs

| Operation | Input | One row per |
|---|---|---|
| `quotes` | tickers | ticker — 60+ snapshot fields |
| `historical` | tickers + range/interval | candle (plus optional dividend/split rows) |
| `fundamentals` | tickers | statement period (annual & quarterly) |
| `analysis` | tickers | ticker — ratings, targets, trends, insights |
| `options` | tickers (+ expirations count) | option contract |
| `news` | tickers or query | article |
| `search` | query | matching symbol |
| `screener` | screener id | screened instrument |

Tickers accept plain symbols or full Yahoo URLs (`https://finance.yahoo.com/quote/AAPL/`).

### Use cases

- **Portfolio dashboards** — schedule `quotes` on your watchlist and pipe fresh prices, valuations, and analyst targets into Sheets or BI tools.
- **Backtesting & quant research** — pull years of daily or intraday OHLCV with `historical`, including dividends and splits for total-return math.
- **Fundamental screening** — combine `fundamentals` rows across tickers to rank by revenue growth, margins, or debt.
- **Options analytics** — snapshot full chains with `options` to track IV, open interest, and unusual volume.
- **News monitoring & sentiment** — poll `news` per ticker and feed headlines to an LLM for sentiment scoring.
- **Market movers alerts** — run `screener` (day gainers/losers, most actives) on a schedule and alert on new entrants.

### How it works

1. **Open a Yahoo session** — the actor obtains the `A1`/`A3` session cookie and the matching API crumb, exactly like a real browser.
2. **Call Yahoo's JSON API** for your operation — quoteSummary, chart, timeseries, options, search, or screener endpoints.
3. **Process tickers in parallel** with a sliding window, one consistent session per run.
4. **Normalize** — unwrap Yahoo's `{raw, fmt}` values to plain numbers, convert epoch timestamps to ISO dates.
5. **Auto-recover** — on a rate limit or expired crumb, the actor rotates its residential exit IP and re-establishes the session mid-run.
6. **Push one row per record** to the dataset.

### Input configuration

| Field | Type | Default | Description |
|---|---|---|---|
| `operation` | string | `quotes` | One of `quotes`, `historical`, `fundamentals`, `analysis`, `options`, `news`, `search`, `screener` |
| `tickers` | array of strings | — | Symbols or Yahoo quote URLs |
| `query` | string | — | Free text for `search` (also usable for `news`) |
| `range` | string | `1mo` | Historical lookback: `1d` … `10y`, `ytd`, `max` |
| `interval` | string | `1d` | Candle size: `1m` … `3mo` |
| `startDate` / `endDate` | string | — | Explicit `YYYY-MM-DD` window (overrides `range`) |
| `includeEvents` | boolean | `false` | Emit dividend & split rows too |
| `optionsExpirations` | integer | `1` | Expiration dates per ticker for `options` |
| `screenerId` | string | `day_gainers` | Predefined screener to pull |
| `maxItems` | integer | — | Hard cap on rows for the run |
| `proxy` | object | Residential built-in | Optional override |

#### Example input

```json
{
  "operation": "quotes",
  "tickers": ["AAPL", "MSFT", "BTC-USD", "^GSPC"]
}
````

```json
{
  "operation": "historical",
  "tickers": ["TSLA"],
  "range": "5y",
  "interval": "1d",
  "includeEvents": true
}
```

### Output overview

Every dataset item is one record of the chosen operation — one quote snapshot, one candle, one statement period, one option contract, one article, one screened instrument. No padding rows; you are only charged for rows actually delivered.

### Output samples

**`quotes`** (truncated — 60+ fields per row):

```json
{
  "symbol": "AAPL",
  "longName": "Apple Inc.",
  "quoteType": "EQUITY",
  "currency": "USD",
  "exchange": "NasdaqGS",
  "marketState": "REGULAR",
  "regularMarketPrice": 333.74,
  "regularMarketChangePercent": 1.02,
  "marketCap": 3160000000000,
  "trailingPE": 32.9,
  "forwardPE": 28.4,
  "fiftyTwoWeekHigh": 360.1,
  "dividendYield": 0.0051,
  "beta": 1.21,
  "totalRevenue": 416160000000,
  "grossMargins": 0.469,
  "freeCashflow": 98767000000,
  "recommendationKey": "buy",
  "numberOfAnalystOpinions": 43,
  "targetMeanPrice": 318.25,
  "sector": "Technology",
  "industry": "Consumer Electronics",
  "website": "https://www.apple.com"
}
```

**`historical`**:

```json
{
  "symbol": "AAPL",
  "type": "candle",
  "date": "2026-06-18T13:30:00.000Z",
  "open": 298.11,
  "high": 300.57,
  "low": 295.62,
  "close": 298.01,
  "adjClose": 298.01,
  "volume": 85962200,
  "interval": "1d",
  "currency": "USD"
}
```

**`fundamentals`**:

```json
{
  "symbol": "AAPL",
  "period": "annual",
  "endDate": "2025-09-30",
  "currency": "USD",
  "totalRevenue": 416160000000,
  "grossProfit": 195234000000,
  "netIncome": 112010000000,
  "eBIT": 133050000000,
  "freeCashFlow": 98767000000,
  "totalDebt": 106629000000,
  "stockholdersEquity": 73733000000,
  "capitalExpenditure": -12715000000
}
```

**`options`**:

```json
{
  "symbol": "AAPL",
  "underlyingPrice": 333.74,
  "type": "call",
  "contractSymbol": "AAPL260720C00205000",
  "expiration": "2026-07-20T00:00:00.000Z",
  "strike": 205,
  "lastPrice": 127.1,
  "bid": 127.35,
  "ask": 130.5,
  "volume": 2,
  "openInterest": 2,
  "impliedVolatility": 2.83
}
```

**`news`**:

```json
{
  "query": "TSLA",
  "title": "Tesla Remains One of the Last Great Founder-Led Tech Giants…",
  "publisher": "Motley Fool",
  "link": "https://finance.yahoo.com/m/…/elon-musk%27s-tesla-remains-one.html",
  "publishedAt": "2026-07-19T19:25:00.000Z",
  "relatedTickers": ["TSLA", "MSFT", "NVDA"]
}
```

### Key output fields

| Field | Operation | Description |
|---|---|---|
| `regularMarketPrice` / `marketCap` / `trailingPE` | quotes | Live price and valuation snapshot |
| `targetMeanPrice` / `recommendationKey` | quotes, analysis | Analyst consensus target and rating |
| `open` `high` `low` `close` `adjClose` `volume` | historical | OHLCV per candle, adjusted close included |
| `type` = `dividend` / `split` | historical | Corporate action rows when `includeEvents` is on |
| `period` + `endDate` | fundamentals | `annual` or `quarterly` statement period |
| `totalRevenue` … `freeCashFlow` | fundamentals | 30+ statement line items per period |
| `strike` / `impliedVolatility` / `openInterest` | options | Per-contract options data |
| `earningsTrend` / `upgradeDowngradeHistory` | analysis | EPS estimate revisions and rating changes |
| `publishedAt` / `relatedTickers` | news | Article metadata |

### FAQ

**Do I need a Yahoo account or API key?**
No. The actor establishes a guest session (cookie + crumb) automatically, the same way a browser does.

**Which markets are covered?**
Everything Yahoo Finance lists — US, European, and Asian equities and ETFs, crypto pairs, forex, world indices, commodities futures, and mutual funds. Use the ticker exactly as it appears on Yahoo (e.g. `BMW.DE`, `7203.T`, `BTC-USD`).

**How far back does historical data go?**
Daily candles: decades (use `range: "max"`). Intraday is limited by Yahoo itself — roughly 30 days of 1-minute data and ~2 years of hourly.

**Are financial statements available for every symbol?**
Statements exist for operating companies. Crypto, forex, and indices have quotes and candles but no fundamentals — the actor tells you when a symbol has none.

**What about the pre/post-market price?**
`quotes` rows include `preMarketPrice` and `postMarketPrice` when the market is in those sessions.

**Why do some option contracts show `null` bid/ask?**
Illiquid contracts often have no standing quotes on Yahoo — the fields are passed through honestly rather than invented.

**Can I run this on a schedule?**
Yes — that's the intended use. Create an Apify Schedule (e.g. every 15 minutes for quotes, daily for fundamentals) and connect the dataset to Sheets, a webhook, or your own pipeline.

### Support

Found a bug or need another Yahoo endpoint (earnings calendar, holders, ESG)? Open an issue on the actor's Issues tab in the Apify Console — requests are usually turned around quickly.

### Additional services

Need a custom output shape, delivery to your own database/webhook, or a merged multi-operation pipeline (e.g. quotes + news + sentiment in one run)? These can be added on request.

### Explore more scrapers

This actor is part of a large portfolio of data-extraction actors — market data, company registries, job boards, real estate, and lead generation. Check the publisher's other actors on the Apify Store.

### 🤖 For AI Agents & LLM Apps

This actor is agent-friendly: a single `operation` switch, flat JSON rows, and stable field names make it easy to call as a tool. Typical agent patterns:

- **Financial research agent** — `search` to resolve a company name to a ticker, then `quotes` + `analysis` + `news` for a full briefing.
- **RAG over fundamentals** — pull `fundamentals` rows and let your LLM answer questions grounded in real statement data.
- **Signal watcher** — poll `screener` and `quotes`, let the agent decide when a threshold merits a notification.

Connect it via the Apify MCP server or call it with the Apify API from any agent framework (LangChain, LlamaIndex, CrewAI, n8n, Make).

### ⚠️ Disclaimer

This actor collects **publicly available** market data from Yahoo Finance for legitimate purposes such as research, analytics, and personal portfolio tracking. Market data may be delayed per exchange rules. Nothing this actor outputs is investment advice. Users are responsible for complying with Yahoo's Terms of Service and any exchange or data-vendor regulations that apply to their use of the data. This actor is not affiliated with, endorsed by, or connected to Yahoo.

### SEO Keywords

Yahoo Finance scraper, yahoo finance API, stock price scraper, historical stock data, OHLCV download, financial statements scraper, income statement API, balance sheet data, cash flow data, analyst ratings scraper, price target data, options chain scraper, implied volatility data, stock news scraper, stock screener API, day gainers scraper, crypto price scraper, forex data scraper, market data without API key, yfinance alternative, finance data for LLM agents.

# Actor input Schema

## `operation` (type: `string`):

What to scrape. <b>quotes</b> = one rich snapshot row per ticker (price, valuation, margins, analyst targets, company profile). <b>historical</b> = OHLCV candles (+ optional dividends/splits). <b>fundamentals</b> = income statement, balance sheet & cash flow rows (annual + quarterly, up to 10 years). <b>analysis</b> = analyst ratings, price targets, EPS trends, upgrades/downgrades & research insights. <b>options</b> = full option chains, one row per contract. <b>news</b> = latest articles per ticker or query. <b>search</b> = symbol lookup by name/ISIN. <b>screener</b> = Yahoo's predefined market screeners (gainers, losers, most active…).

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

Ticker symbols or full Yahoo Finance quote URLs. Works with stocks (<code>AAPL</code>), ETFs (<code>SPY</code>), crypto (<code>BTC-USD</code>), forex (<code>EURUSD=X</code>), indices (<code>^GSPC</code>) and futures (<code>GC=F</code>). Used by quotes, historical, fundamentals, analysis, options and news.

## `query` (type: `string`):

Free-text query for the <b>search</b> operation (company name, ticker or ISIN), also usable for <b>news</b> instead of tickers. Example: <code>apple</code>, <code>US0378331005</code>.

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

How far back to fetch candles. Ignored when an explicit start date is set.

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

Candle size. Intraday intervals (1m–1h) are only available for recent periods — Yahoo keeps ~30 days of 1m data and ~2 years of 1h data.

## `startDate` (type: `string`):

Explicit start date <code>YYYY-MM-DD</code> — overrides Range when set.

## `endDate` (type: `string`):

Explicit end date <code>YYYY-MM-DD</code> — defaults to today. Only used together with Start date.

## `includeEvents` (type: `boolean`):

Also emit one row per dividend payment and stock split inside the selected period (historical operation).

## `optionsExpirations` (type: `integer`):

How many upcoming expiration dates to fetch per ticker — each expiration is a full call + put chain (often 50–200 contracts). Default 1 = nearest expiration only.

## `screenerId` (type: `string`):

Which predefined Yahoo screener to pull for the screener operation.

## `maxItems` (type: `integer`):

Hard cap on dataset rows for the whole run (you are only charged per row actually pushed). Leave empty for no cap.

## `proxy` (type: `object`):

Optional override. The actor already routes through premium residential proxies by default — only set this if you must use your own.

## Actor input object example

```json
{
  "operation": "quotes",
  "tickers": [
    "AAPL",
    "MSFT",
    "TSLA"
  ],
  "range": "1mo",
  "interval": "1d",
  "includeEvents": false,
  "optionsExpirations": 1,
  "screenerId": "day_gainers"
}
```

# 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 = {
    "operation": "quotes",
    "tickers": [
        "AAPL",
        "MSFT",
        "TSLA"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/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 = {
    "operation": "quotes",
    "tickers": [
        "AAPL",
        "MSFT",
        "TSLA",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/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 '{
  "operation": "quotes",
  "tickers": [
    "AAPL",
    "MSFT",
    "TSLA"
  ]
}' |
apify call memo23/yahoo-finance-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Yahoo Finance Scraper — Quotes, Fundamentals, Options & News",
        "description": "Scrape all of Yahoo Finance in one actor: live quotes with 60+ fields, historical OHLCV candles, income/balance/cash-flow statements, analyst ratings & price targets, full options chains, news, symbol search & screeners. Stocks, ETFs, crypto, forex, indices. No API key. JSON/CSV.",
        "version": "0.0",
        "x-build-id": "coofwWiynFnVCwn4X"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~yahoo-finance-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-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/memo23~yahoo-finance-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-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/memo23~yahoo-finance-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-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",
                "required": [
                    "operation"
                ],
                "properties": {
                    "operation": {
                        "title": "Operation",
                        "enum": [
                            "quotes",
                            "historical",
                            "fundamentals",
                            "analysis",
                            "options",
                            "news",
                            "search",
                            "screener"
                        ],
                        "type": "string",
                        "description": "What to scrape. <b>quotes</b> = one rich snapshot row per ticker (price, valuation, margins, analyst targets, company profile). <b>historical</b> = OHLCV candles (+ optional dividends/splits). <b>fundamentals</b> = income statement, balance sheet & cash flow rows (annual + quarterly, up to 10 years). <b>analysis</b> = analyst ratings, price targets, EPS trends, upgrades/downgrades & research insights. <b>options</b> = full option chains, one row per contract. <b>news</b> = latest articles per ticker or query. <b>search</b> = symbol lookup by name/ISIN. <b>screener</b> = Yahoo's predefined market screeners (gainers, losers, most active…).",
                        "default": "quotes"
                    },
                    "tickers": {
                        "title": "Tickers",
                        "type": "array",
                        "description": "Ticker symbols or full Yahoo Finance quote URLs. Works with stocks (<code>AAPL</code>), ETFs (<code>SPY</code>), crypto (<code>BTC-USD</code>), forex (<code>EURUSD=X</code>), indices (<code>^GSPC</code>) and futures (<code>GC=F</code>). Used by quotes, historical, fundamentals, analysis, options and news.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Free-text query for the <b>search</b> operation (company name, ticker or ISIN), also usable for <b>news</b> instead of tickers. Example: <code>apple</code>, <code>US0378331005</code>."
                    },
                    "range": {
                        "title": "Range (historical)",
                        "enum": [
                            "1d",
                            "5d",
                            "1mo",
                            "3mo",
                            "6mo",
                            "1y",
                            "2y",
                            "5y",
                            "10y",
                            "ytd",
                            "max"
                        ],
                        "type": "string",
                        "description": "How far back to fetch candles. Ignored when an explicit start date is set.",
                        "default": "1mo"
                    },
                    "interval": {
                        "title": "Interval (historical)",
                        "enum": [
                            "1m",
                            "2m",
                            "5m",
                            "15m",
                            "30m",
                            "60m",
                            "90m",
                            "1h",
                            "1d",
                            "5d",
                            "1wk",
                            "1mo",
                            "3mo"
                        ],
                        "type": "string",
                        "description": "Candle size. Intraday intervals (1m–1h) are only available for recent periods — Yahoo keeps ~30 days of 1m data and ~2 years of 1h data.",
                        "default": "1d"
                    },
                    "startDate": {
                        "title": "Start date (historical)",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Explicit start date <code>YYYY-MM-DD</code> — overrides Range when set."
                    },
                    "endDate": {
                        "title": "End date (historical)",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Explicit end date <code>YYYY-MM-DD</code> — defaults to today. Only used together with Start date."
                    },
                    "includeEvents": {
                        "title": "Include dividends & splits",
                        "type": "boolean",
                        "description": "Also emit one row per dividend payment and stock split inside the selected period (historical operation).",
                        "default": false
                    },
                    "optionsExpirations": {
                        "title": "Expirations per ticker (options)",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many upcoming expiration dates to fetch per ticker — each expiration is a full call + put chain (often 50–200 contracts). Default 1 = nearest expiration only.",
                        "default": 1
                    },
                    "screenerId": {
                        "title": "Screener (screener)",
                        "enum": [
                            "day_gainers",
                            "day_losers",
                            "most_actives",
                            "growth_technology_stocks",
                            "undervalued_growth_stocks",
                            "undervalued_large_caps",
                            "aggressive_small_caps",
                            "small_cap_gainers",
                            "solid_large_growth_funds",
                            "top_mutual_funds",
                            "conservative_foreign_funds",
                            "high_yield_bond"
                        ],
                        "type": "string",
                        "description": "Which predefined Yahoo screener to pull for the screener operation.",
                        "default": "day_gainers"
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on dataset rows for the whole run (you are only charged per row actually pushed). Leave empty for no cap."
                    },
                    "proxy": {
                        "title": "Proxy override",
                        "type": "object",
                        "description": "Optional override. The actor already routes through premium residential proxies by default — only set this if you must use your own."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
