# Yahoo Finance Scraper — Stock, ETF & Crypto Data (`logiover/yahoo-finance-scraper`) Actor

Scrape Yahoo Finance by ticker symbol or search query. Extract OHLCV historical prices, live quotes, and symbol lookup. Covers stocks, ETFs, indices, forex, and crypto. No API key, no login.

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

## Pricing

from $1.50 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 — Stock, ETF & Crypto OHLCV + Live Quotes

Extract historical price data, live quotes, and symbol search results from Yahoo Finance — covering stocks, ETFs, indices, forex pairs, and cryptocurrencies. No API key required, no login, no external subscription.

### What does Yahoo Finance Scraper do?

Yahoo Finance Scraper connects directly to Yahoo Finance's undocumented JSON endpoints (`query1.finance.yahoo.com` and `query2.finance.yahoo.com`) without any API key or authentication. In **historical mode**, it calls the `/v8/finance/chart/{symbol}` endpoint to retrieve full OHLCV (Open, High, Low, Close, Adjusted Close, Volume) time-series bars for each ticker you specify. Supported ranges span from one day to the full available history, with intervals ranging from 1-minute intraday bars to monthly bars. In **quote mode**, it fetches live market data via `/v7/finance/quote` (with automatic fallback to the chart meta endpoint if the batch endpoint is blocked). In **search mode**, it hits `/v1/finance/search` to look up symbols by keyword. A worker-pool design lets you process multiple symbols concurrently, easily generating thousands of OHLCV rows per run.

### Who is it for?

- **Quant traders and algo developers** who need bulk OHLCV data for backtesting strategies without paying for a commercial data subscription.
- **Financial analysts and portfolio managers** who want automated daily/weekly price pulls for spreadsheet models or BI dashboards.
- **Data scientists and ML engineers** building predictive models on equity, ETF, crypto, or forex price series.
- **Fintech developers** who need to embed market data in apps, bots, or notification systems without a paid data vendor.
- **Academic researchers** studying market microstructure, volatility, or cross-asset correlations using free public data.

### Use cases

- Backtest a moving-average crossover strategy across 50 stocks using 5 years of daily OHLCV data pulled in one run.
- Build a Google Sheets dashboard that auto-refreshes live quotes for your personal portfolio every morning via a scheduled run.
- Download 1-minute intraday bars for crypto pairs (BTC-USD, ETH-USD) to feed a machine-learning volatility model.
- Monitor 52-week high/low breakouts across a list of ETFs with a daily scheduled actor run and Slack webhook alert.
- Look up the correct ticker symbol for an obscure foreign equity or index before adding it to a watchlist.

### Why use Yahoo Finance Scraper?

- **Fully keyless**: no Yahoo Finance API key, no sign-up, no credit card — just run it.
- **Rich output**: up to 21 fields per row covering price, volume, change, market cap, exchange, currency, and asset type.
- **Bulk-ready**: feed dozens or hundreds of symbols at once; one historical run easily produces 10,000+ OHLCV rows.
- **Multi-asset class**: works for stocks (NYSE, NASDAQ, LSE, etc.), ETFs, major indices (^GSPC, ^DJI), forex pairs (EURUSD=X), and crypto (BTC-USD, ETH-USD).
- **Flexible time ranges**: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max with intervals from 1m to 3mo.
- **Export anywhere**: download results as CSV, JSON, Excel, or XML from the Apify dataset; integrate with Google Sheets, Slack, Zapier, Make, and more.

### What data can you extract?

#### Historical mode fields

| Field | Type | Description |
|-------|------|-------------|
| symbol | string | Ticker symbol (e.g., AAPL) |
| name | string | Company or asset full name |
| mode | string | Always "historical" for this mode |
| date | string | ISO date of the bar (YYYY-MM-DD) |
| open | number | Opening price |
| high | number | Intraday high price |
| low | number | Intraday low price |
| close | number | Closing price |
| adjClose | number | Adjusted closing price (accounts for splits/dividends) |
| volume | number | Number of shares/units traded |
| currency | string | Pricing currency (USD, EUR, GBP, etc.) |
| exchange | string | Exchange name (NasdaqGS, NYSEArca, etc.) |
| quoteType | string | EQUITY, ETF, INDEX, CRYPTOCURRENCY, CURRENCY, etc. |

#### Quote mode fields (all of the above plus)

| Field | Type | Description |
|-------|------|-------------|
| price | number | Current market price |
| change | number | Price change from previous close |
| changePercent | number | Percentage change |
| dayHigh | number | Day's high price |
| dayLow | number | Day's low price |
| fiftyTwoWeekHigh | number | 52-week high price |
| fiftyTwoWeekLow | number | 52-week low price |
| marketCap | number | Total market capitalization |

#### Historical output example

```json
{
  "symbol": "AAPL",
  "name": "Apple Inc.",
  "mode": "historical",
  "date": "2024-01-15",
  "open": 183.920006,
  "high": 185.089996,
  "low": 181.0,
  "close": 182.320007,
  "adjClose": 182.05069,
  "volume": 65421000,
  "price": null,
  "change": null,
  "changePercent": null,
  "dayHigh": null,
  "dayLow": null,
  "fiftyTwoWeekHigh": null,
  "fiftyTwoWeekLow": null,
  "marketCap": null,
  "currency": "USD",
  "exchange": "NasdaqGS",
  "quoteType": "EQUITY"
}
````

### How to use

#### Option A — Historical OHLCV (most popular)

Run the actor with `mode: "historical"`, a list of ticker symbols, a time range, and a bar interval.

**Steps:**

1. Open the actor on Apify and click **Try for free**.
2. Set **Mode** to `historical`.
3. Enter your ticker symbols (comma-separated or as a list): `AAPL, MSFT, TSLA, BTC-USD`.
4. Choose a **Range** (e.g., `6mo`) and **Interval** (e.g., `1d`).
5. Click **Start** and download the dataset as CSV or JSON when complete.

**Input JSON:**

```json
{
  "mode": "historical",
  "symbols": ["AAPL", "MSFT", "TSLA", "BTC-USD", "ETH-USD"],
  "range": "6mo",
  "interval": "1d",
  "proxy": { "useApifyProxy": true }
}
```

With 5 symbols × 6 months of daily bars, you get roughly 650 rows in a single run.

#### Option B — Live Quotes

Use `mode: "quote"` to get the latest price, change, and market metadata for a list of symbols.

**Steps:**

1. Set **Mode** to `quote`.
2. Enter your symbols list.
3. Run the actor — results are typically ready in under 30 seconds.

**Input JSON:**

```json
{
  "mode": "quote",
  "symbols": ["AAPL", "MSFT", "GOOGL", "AMZN", "NVDA", "EURUSD=X", "^GSPC"],
  "proxy": { "useApifyProxy": true }
}
```

#### Option C — Symbol Search

Use `mode: "search"` to look up ticker symbols by company name or keyword.

**Input JSON:**

```json
{
  "mode": "search",
  "query": "Nvidia",
  "proxy": { "useApifyProxy": true }
}
```

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| mode | string | historical | Scraping mode: `historical`, `quote`, or `search` |
| symbols | array | \["AAPL","MSFT","TSLA"] | Ticker symbols for historical/quote modes |
| range | string | 1mo | Time range: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max |
| interval | string | 1d | Bar interval: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo |
| query | string | — | Search term for `search` mode |
| proxy | object | useApifyProxy: true | Apify proxy configuration |

**Full input JSON example:**

```json
{
  "mode": "historical",
  "symbols": ["AAPL", "MSFT", "TSLA", "AMZN", "NVDA", "^GSPC", "EURUSD=X", "BTC-USD"],
  "range": "1y",
  "interval": "1wk",
  "proxy": { "useApifyProxy": true }
}
```

### Output example

A fully populated quote-mode output row:

```json
{
  "symbol": "NVDA",
  "name": "NVIDIA Corporation",
  "mode": "quote",
  "date": null,
  "open": null,
  "high": null,
  "low": null,
  "close": null,
  "adjClose": null,
  "volume": 42318900,
  "price": 875.4,
  "change": 23.15,
  "changePercent": 2.7132,
  "dayHigh": 879.99,
  "dayLow": 850.21,
  "fiftyTwoWeekHigh": 974.0,
  "fiftyTwoWeekLow": 394.45,
  "marketCap": 2158000000000,
  "currency": "USD",
  "exchange": "NasdaqGS",
  "quoteType": "EQUITY"
}
```

### Tips for best results

- **Use standard tickers**: Yahoo Finance uses suffixes for non-US stocks (e.g., `ASML.AS` for Amsterdam, `7203.T` for Tokyo). Look up the correct symbol via `search` mode first.
- **Crypto pairs**: use the `-USD` suffix (e.g., `BTC-USD`, `ETH-USD`, `SOL-USD`). Yahoo Finance covers hundreds of crypto pairs.
- **Forex**: append `=X` (e.g., `EURUSD=X`, `GBPJPY=X`).
- **Indices**: prefix with `^` (e.g., `^GSPC` for S\&P 500, `^DJI` for Dow Jones, `^VIX` for VIX).
- **Intraday data**: short intervals (1m, 5m) are only available for the past 7–60 days depending on the interval. Use daily/weekly intervals for multi-year history.
- **Bulk runs**: put all your symbols in one run rather than many small runs — each symbol only takes a few seconds.
- **Adjusted vs unadjusted**: the `adjClose` field is adjusted for dividends and splits. Use it for calculating returns. Use `close` for the raw price.
- **Schedule your runs**: set up a daily schedule on Apify to auto-pull EOD data every trading day. Combine with a Google Sheets integration to auto-update your models.
- **Max history**: use `range: "max"` to get the full historical record for a ticker — for large-cap US stocks this can go back to the 1980s.
- **Zero results**: if a symbol returns 0 rows, double-check the ticker spelling and try the `search` mode to find the correct symbol.

### Integrations

Yahoo Finance Scraper works natively with all Apify integrations:

- **Google Sheets**: use the Apify Google Sheets integration to auto-sync your dataset into a spreadsheet after each run.
- **Slack**: configure a webhook to post a message when your run completes (ideal for daily price alert workflows).
- **Zapier / Make**: trigger downstream workflows — send data to Airtable, Notion, a database, or any app in your stack.
- **Webhooks**: set a webhook URL in actor settings to POST the run result to your own server or API endpoint.
- **Apify Scheduler**: schedule daily, weekly, or custom-cron runs to keep your price data fresh automatically.

### API usage

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/logiover~yahoo-finance-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"historical","symbols":["AAPL","MSFT"],"range":"6mo","interval":"1d"}'
```

#### Node.js

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

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

const run = await client.actor('logiover/yahoo-finance-scraper').call({
  mode: 'historical',
  symbols: ['AAPL', 'MSFT', 'TSLA'],
  range: '1y',
  interval: '1wk',
});

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

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient(token='YOUR_TOKEN')

run = client.actor('logiover/yahoo-finance-scraper').call(run_input={
    'mode': 'historical',
    'symbols': ['AAPL', 'MSFT', 'TSLA', 'BTC-USD'],
    'range': '6mo',
    'interval': '1d',
})

items = list(client.dataset(run['defaultDatasetId']).iterate_items())
print(f'Got {len(items)} OHLCV rows')
```

### Use with AI agents (MCP)

Yahoo Finance Scraper is compatible with the Apify MCP (Model Context Protocol) server, which lets AI agents and LLM-powered tools call it directly. Connect the Apify MCP server to your agent framework and then ask: *"Get 6 months of daily OHLCV data for AAPL, MSFT, and TSLA, then calculate which had the highest total return."* The agent will run the actor, retrieve the dataset, and perform the calculation — all in one automated workflow.

### FAQ

#### Does this actor require an API key?

No. Yahoo Finance Scraper uses Yahoo Finance's publicly accessible JSON endpoints which do not require authentication. You do not need a Yahoo Finance API subscription or any credentials.

#### What asset classes does it cover?

It covers US and international stocks (NYSE, NASDAQ, LSE, TSX, ASX, etc.), ETFs, major and minor indices, forex currency pairs, and hundreds of cryptocurrencies — anything available on Yahoo Finance.

#### How many results can I get per run?

In historical mode with 10 symbols at daily interval over 5 years, you get roughly 12,500 rows per run. With max range and 50+ symbols, a single run can easily produce 100,000+ rows. There is no hard cap — the actor paginates automatically.

#### Why are some bars null or missing?

Some bars may be null for market holidays, trading halts, or symbols with thin liquidity. The actor automatically skips null bars so your output contains only clean, tradeable data points.

#### What ranges and intervals can I use?

Ranges: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max. Intervals: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo. Note: short intraday intervals (1m–90m) are only available for recent data (up to ~60 days back).

#### How do I export data to Excel or CSV?

After the run completes, click the **Export** button in your Apify dataset. You can download CSV, JSON, XML, Excel, or RSS. You can also use the Apify API to pull data programmatically.

#### How fast is the actor?

Each symbol typically takes 1–3 seconds in historical mode. For 20 symbols, expect a run to complete in under 60 seconds. Quote mode is faster — a batch of 20+ symbols takes 2–5 seconds.

#### Is this faster than yfinance (Python library)?

The actor runs in the cloud on Apify infrastructure, so there is no local setup. For large bulk downloads, it can process symbols concurrently without rate-limit issues that sometimes affect local yfinance runs.

#### What if a symbol returns zero results?

First, verify the ticker is correct using `mode: "search"`. Check that the symbol uses the right exchange suffix for non-US stocks. If a ticker was recently delisted or renamed, Yahoo Finance may no longer have data for it.

#### How often is Yahoo Finance data updated?

Quote data is delayed by approximately 15 minutes for most equity markets (real-time for some). Historical OHLCV data is typically finalized by the next trading day. The actor reflects whatever Yahoo Finance currently serves.

#### Can I use this for automated trading?

This actor is suitable for data collection, backtesting, and research. Yahoo Finance data is delayed — do not use it for real-time automated order execution. For live trading, use a brokerage API.

#### Is it legal to scrape Yahoo Finance?

This actor accesses Yahoo Finance's publicly available, non-login-protected JSON endpoints — the same data your browser loads when you visit finance.yahoo.com. It does not bypass any authentication, CAPTCHA, or paywall. Use it responsibly, respect Yahoo's Terms of Service, and do not use the data for commercial redistribution without reviewing Yahoo's licensing terms.

### Related scrapers

- **[Logiover LinkedIn Company Scraper](https://apify.com/logiover)** — extract company financials and headcount from LinkedIn profiles.
- **[Logiover CVE Advisory Scraper](https://apify.com/logiover)** — monitor NVD/OSV vulnerability feeds for security research.
- **[Logiover Company Dossier Actor](https://apify.com/logiover)** — AI-powered company intelligence combining multiple public data sources.

# Actor input Schema

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

What to scrape: 'historical' for OHLCV price history, 'quote' for live quotes, 'search' for symbol lookup.

## `symbols` (type: `array`):

List of ticker symbols (e.g. AAPL, MSFT, BTC-USD, EURUSD=X). Used in 'historical' and 'quote' modes. Leave empty to load a default set of popular tickers.

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

Time range for historical data (historical mode only).

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

Bar interval for historical data (historical mode only). Intraday intervals only work with short ranges.

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

Search term for 'search' mode (e.g. 'Apple', 'S\&P 500', 'Bitcoin'). Leave empty to browse popular tickers.

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

Apify proxy configuration. Automatic (AUTO) proxy is recommended for Yahoo Finance; a direct connection is used as a final fallback.

## Actor input object example

```json
{
  "mode": "historical",
  "symbols": [
    "AAPL",
    "MSFT",
    "TSLA",
    "AMZN",
    "NVDA",
    "GOOGL",
    "META",
    "JPM",
    "BRK-B",
    "V",
    "UNH",
    "XOM",
    "JNJ",
    "PG",
    "KO",
    "WMT",
    "BTC-USD",
    "ETH-USD",
    "^GSPC",
    "SPY"
  ],
  "range": "6mo",
  "interval": "1d",
  "proxy": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All records extracted by this run. Open the Dataset tab to browse, filter, and export as CSV, JSON, or Excel.

# 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 = {
    "symbols": [
        "AAPL",
        "MSFT",
        "TSLA",
        "AMZN",
        "NVDA",
        "GOOGL",
        "META",
        "JPM",
        "BRK-B",
        "V",
        "UNH",
        "XOM",
        "JNJ",
        "PG",
        "KO",
        "WMT",
        "BTC-USD",
        "ETH-USD",
        "^GSPC",
        "SPY"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/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 = {
    "symbols": [
        "AAPL",
        "MSFT",
        "TSLA",
        "AMZN",
        "NVDA",
        "GOOGL",
        "META",
        "JPM",
        "BRK-B",
        "V",
        "UNH",
        "XOM",
        "JNJ",
        "PG",
        "KO",
        "WMT",
        "BTC-USD",
        "ETH-USD",
        "^GSPC",
        "SPY",
    ],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/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 '{
  "symbols": [
    "AAPL",
    "MSFT",
    "TSLA",
    "AMZN",
    "NVDA",
    "GOOGL",
    "META",
    "JPM",
    "BRK-B",
    "V",
    "UNH",
    "XOM",
    "JNJ",
    "PG",
    "KO",
    "WMT",
    "BTC-USD",
    "ETH-USD",
    "^GSPC",
    "SPY"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call logiover/yahoo-finance-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Yahoo Finance Scraper — Stock, ETF & Crypto Data",
        "description": "Scrape Yahoo Finance by ticker symbol or search query. Extract OHLCV historical prices, live quotes, and symbol lookup. Covers stocks, ETFs, indices, forex, and crypto. No API key, no login.",
        "version": "1.0",
        "x-build-id": "cNHwjSBCCbfTD5v2s"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~yahoo-finance-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-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/logiover~yahoo-finance-scraper/runs": {
            "post": {
                "operationId": "runs-sync-logiover-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/logiover~yahoo-finance-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-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": [
                            "historical",
                            "quote",
                            "search"
                        ],
                        "type": "string",
                        "description": "What to scrape: 'historical' for OHLCV price history, 'quote' for live quotes, 'search' for symbol lookup.",
                        "default": "historical"
                    },
                    "symbols": {
                        "title": "Ticker Symbols",
                        "type": "array",
                        "description": "List of ticker symbols (e.g. AAPL, MSFT, BTC-USD, EURUSD=X). Used in 'historical' and 'quote' modes. Leave empty to load a default set of popular tickers.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "range": {
                        "title": "Historical Range",
                        "enum": [
                            "1d",
                            "5d",
                            "1mo",
                            "3mo",
                            "6mo",
                            "1y",
                            "2y",
                            "5y",
                            "10y",
                            "ytd",
                            "max"
                        ],
                        "type": "string",
                        "description": "Time range for historical data (historical mode only).",
                        "default": "6mo"
                    },
                    "interval": {
                        "title": "Historical Interval",
                        "enum": [
                            "1m",
                            "2m",
                            "5m",
                            "15m",
                            "30m",
                            "60m",
                            "90m",
                            "1h",
                            "1d",
                            "5d",
                            "1wk",
                            "1mo",
                            "3mo"
                        ],
                        "type": "string",
                        "description": "Bar interval for historical data (historical mode only). Intraday intervals only work with short ranges.",
                        "default": "1d"
                    },
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search term for 'search' mode (e.g. 'Apple', 'S&P 500', 'Bitcoin'). Leave empty to browse popular tickers."
                    },
                    "proxy": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Automatic (AUTO) proxy is recommended for Yahoo Finance; a direct connection is used as a final fallback.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
