# Yahoo Finance Scraper — Stock Quotes & Financials (`sian.agency/yahoo-finance-scraper`) Actor

Scrape Yahoo Finance into clean datasets — live stock, ETF, index, currency and crypto quotes, plus company profiles, analyst targets, financials and price history. Overview mode batches hundreds of tickers; Detail mode adds sector, employees, revenue and more. Failed lookups never charged.

- **URL**: https://apify.com/sian.agency/yahoo-finance-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Business, E-commerce, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 quote result (overview)s

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 Quotes, ETFs & Financials 📈

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Zillow Property Scraper](https://img.shields.io/badge/Store-Zillow%20Property%20Scraper-1F4E79)](https://apify.com/sian.agency/zillow-property-scraper?fpr=sian) [![Amazon ASIN Lookup](https://img.shields.io/badge/Store-Amazon%20ASIN%20Lookup-FF9900)](https://apify.com/sian.agency/amazon-asin-lookup?fpr=sian) [![Google Trends Scraper](https://img.shields.io/badge/Store-Google%20Trends%20Scraper-4285F4)](https://apify.com/sian.agency/google-trends-scraper?fpr=sian)

#### 🎉 Pull live market data AND company fundamentals for hundreds of tickers in a single run
##### Built for traders, quant researchers, analysts and fintech builders who need clean, structured Yahoo Finance data — no account, no API key.

---

### 📋 Overview

**Turn Yahoo Finance into a clean, structured dataset** — live quotes, valuation metrics, company fundamentals and price-history coverage for stocks, ETFs, indices, currencies and crypto, in bulk.

**Why thousands of professionals choose us:**
- ✅ **Market data + fundamentals in one tool**: Price, change %, market cap and 52-week range, plus sector, employees, analyst targets and revenue — no second tool needed.
- ⚡ **Bulk by design**: Look up hundreds of tickers per run with a single, fast batched request.
- 🎯 **Search-to-tickers discovery**: Type a theme like "electric vehicle" or "semiconductors" and the actor resolves the matching tickers for you.
- 💰 **Pay-per-result**: Only successful rows are billed — failed or invalid tickers are never charged.
- 💎 **Every asset class**: Stocks (AAPL), ETFs (SPY), indices (^GSPC), currencies (EURUSD=X) and crypto (BTC-USD).
- ✨ **NEW**: Detail mode adds full company profiles, analyst recommendations and price-history coverage.

---

### ✨ Features

- 📊 **Overview Mode**: Fast, batched market quote per ticker — price, change %, market cap, 52-week high/low, day range, volume, trailing/forward P/E, dividend yield, EPS and book value.
- 🏢 **Detail Mode**: Everything in Overview plus sector, industry, HQ location, website, employees, business summary, analyst mean target, recommendation, profit margins and total revenue.
- 🔍 **Search Discovery**: Resolve tickers from a plain-text query — perfect for thematic screening.
- 🚀 **Bulk Input**: Single ticker, an array, a paste-list, or pasted Yahoo Finance quote URLs — all auto-deduplicated.
- 📈 **Price History Coverage**: Choose a window (1 day → max) and granularity for historical sampling in Detail mode.
- 🌐 **Every Asset Class**: Equities, ETFs, indices, FX pairs and cryptocurrencies.
- 💾 **Clean Exports**: One flat row per ticker — export to JSON, CSV or Excel in a click.
- 🛡️ **No Account Needed**: No login, no API key, no setup.

---

### 🎬 Quick Start

Pick a mode, drop in one or many tickers (or a search query), and run. Results land in the dataset as one clean row per ticker, ready to export.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~yahoo-finance-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"mode": "overview", "symbols": ["AAPL", "MSFT", "GOOGL"]}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose your mode

Pick **Overview** for fast market data, or **Detail** for full company profiles and financials.

#### Step 2: Add tickers

Type a single ticker, paste a list, add an array, or enter a search query to discover tickers automatically.

#### Step 3: Run and export

Start the actor and download your results as JSON, CSV or Excel.

**That's it! In seconds, you'll have:**

- Live prices and valuation metrics for every ticker
- Company fundamentals (Detail mode)
- A clean dataset ready for your dashboard or spreadsheet

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| mode | string | No | `overview` (market quote) or `detail` (full profile + financials) |
| symbol | string | No | A single ticker, e.g. `AAPL` |
| symbols | array | No | A list of tickers for bulk lookup |
| bulkSymbols | string | No | Paste many tickers (comma / space / newline separated) |
| query | string | No | Search text to resolve tickers automatically |
| searchLimit | integer | No | How many tickers a query resolves (1–50) |
| includeChart | boolean | No | Detail mode: include price-history coverage |
| chartRange | string | No | Price-history window (`1d`…`max`) |
| chartInterval | string | No | Price-history granularity (`1m`…`3mo`) |
| proxyCountry | string | No | Optional 2-letter country for proxy rotation |

**Example (Overview — bulk):**

```json
{
  "mode": "overview",
  "symbols": ["AAPL", "MSFT", "GOOGL", "TSLA", "NVDA"]
}
```

**Example (Detail — full profile):**

```json
{
  "mode": "detail",
  "symbols": ["AAPL", "MSFT"],
  "chartRange": "1mo"
}
```

**Example (Search discovery):**

```json
{
  "mode": "overview",
  "query": "electric vehicle",
  "searchLimit": 10
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **40+ fields** including:

| Field | Type | Description |
|-------|------|-------------|
| id | string | Ticker symbol |
| title | string | Company / instrument name |
| price | number | Latest market price |
| currency | string | Price currency |
| change\_percent | number | Regular-market change % |
| market\_cap | integer | Market capitalization |
| quote\_type | string | EQUITY, ETF, INDEX, CURRENCY, CRYPTOCURRENCY |
| fifty\_two\_week\_high | number | 52-week high |
| fifty\_two\_week\_low | number | 52-week low |
| trailing\_pe | number | Trailing P/E ratio |
| dividend\_yield | number | Dividend yield (%) |
| sector | string | Business sector (Detail mode) |
| employees | integer | Full-time employees (Detail mode) |
| target\_mean\_price | number | Analyst mean target (Detail mode) |
| recommendation | string | Analyst recommendation (Detail mode) |
| total\_revenue | integer | Total revenue (Detail mode) |

**Example:**

```json
{
  "id": "AAPL",
  "url": "https://finance.yahoo.com/quote/AAPL/",
  "source": "summary",
  "title": "Apple Inc.",
  "price": 298.52,
  "currency": "USD",
  "change_percent": 0.5,
  "market_cap": 4384469286912,
  "quote_type": "EQUITY",
  "exchange": "NasdaqGS",
  "fifty_two_week_high": 317.4,
  "fifty_two_week_low": 199.26,
  "trailing_pe": 36.14,
  "dividend_yield": 0.36,
  "sector": "Technology",
  "industry": "Consumer Electronics",
  "location": "Cupertino, United States",
  "website": "https://www.apple.com",
  "employees": 166000,
  "target_mean_price": 314.42,
  "recommendation": "buy",
  "profit_margins": 0.27,
  "total_revenue": 451442016256,
  "history_points": 20,
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

#### 1. Portfolio & Watchlist Tracking

**Portfolio managers and individual investors monitoring a basket of holdings.**

**Input:** A list of held tickers in Overview mode.
**Output:** Live price, change %, market cap and 52-week range per holding.
**Use:** Run on a schedule for a daily portfolio snapshot piped into a dashboard.

#### 2. Market Screening

**Quant researchers building thematic universes.**

**Input:** A search query like "semiconductors" or "renewable energy".
**Output:** Resolved tickers with full valuation metrics for each.
**Use:** Build and rank candidate sets without hand-typing symbols.

#### 3. Fundamental Research

**Analysts evaluating companies before a deeper dive.**

**Input:** Target tickers in Detail mode.
**Output:** Sector, industry, employees, business summary, analyst target, recommendation, margins and revenue.
**Use:** Assemble a one-page fundamentals brief per company in seconds.

#### 4. Dividend & Valuation Analysis

**Income investors comparing dividend stocks.**

**Input:** A list of dividend candidates in Overview mode.
**Output:** Dividend yield, P/E ratios, EPS and book value side by side.
**Use:** Produce a ranked valuation table for portfolio rebalancing.

#### 5. Fintech Dashboards & Pipelines

**Fintech builders and agencies powering market widgets.**

**Input:** Any ticker set, scheduled.
**Output:** Clean JSON ready for BI tools and spreadsheets.
**Use:** Feed automated market dashboards via N8N, Zapier or Make.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/yahoo-finance-scraper').call({
  mode: 'overview',
  symbols: ['AAPL', 'MSFT', 'GOOGL']
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/yahoo-finance-scraper').call(
    run_input={'mode': 'detail', 'symbols': ['AAPL', 'MSFT']}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~yahoo-finance-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"mode": "overview", "query": "electric vehicle"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle JSON results
4. **Action**: Save, notify, or transform

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **Up to 5 tickers** per run — full feature access, same quality
- No credit card required
- Perfect for testing and small watchlists

#### PAID Tier (Production Ready)

- **Unlimited** tickers per run
- Fast batched lookups, no delays
- Pay-per-result: only charged for successful rows

💰 **Best price on the market** — cheap per-quote Overview pricing for high-volume screening, with a richer Detail tier only when you need fundamentals. Failed lookups are never billed.

🔗 [View current pricing](https://apify.com/sian.agency/yahoo-finance-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many tickers can I process?**
A: FREE tier: 5 per run. PAID tier: unlimited (hundreds per run).

**Q: What asset types are supported?**
A: Stocks, ETFs, indices, currency pairs and cryptocurrencies — anything with a Yahoo Finance ticker.

**Q: What's the difference between Overview and Detail mode?**
A: Overview returns fast market data (price, valuation, volume). Detail adds full company profiles, analyst targets, financials and price-history coverage.

**Q: What output formats are available?**
A: JSON, CSV and Excel — export directly from the Apify dataset.

**Q: Am I charged for invalid or delisted tickers?**
A: No. Failed lookups produce a clear error row and are never billed.

**Q: Is this legal?**
A: Yes — we only extract publicly available market data. See our [legal section](#-is-it-legal-to-scrape-data).

***

### 🐛 Troubleshooting

**No data returned for a ticker**

- Confirm the symbol matches Yahoo Finance exactly (e.g. `^GSPC` for the S\&P 500, `BTC-USD` for Bitcoin).
- Delisted or invalid tickers return an error row with an explanation.

**Search returned no tickers**

- Try a more specific company name or theme, or provide explicit tickers instead.

**Only 5 results on a larger list**

- That's the FREE-tier cap. Upgrade for unlimited tickers per run.

**Missing fundamentals (sector, employees, etc.)**

- Those fields are only populated in **Detail mode**. Switch `mode` to `detail`.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

> **Trademark notice:** Yahoo and Yahoo Finance are trademarks of their respective owners. This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Yahoo. All financial data belongs to its respective owners and is provided for informational purposes only — not financial advice.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

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

🧭 **CHOOSE WHAT YOU GET:**

- **📊 Overview (cheap & fast):** Live market data per ticker — price, change %, market cap, 52-week range, volume, P/E, dividend yield, EPS, book value. Hundreds of tickers batched in one run.
- **🏢 Detail (full profile):** Everything in Overview **plus** sector, industry, HQ location, website, employees, business description, analyst target price, recommendation, profit margins, revenue, and price-history coverage.

💡 **TIP:** Start with Overview for screening, switch to Detail for deep research.

## `symbol` (type: `string`):

🔎 **SINGLE TICKER:** One ticker symbol to look up.

✅ **SUPPORTED:**

- Stocks: `AAPL`, `MSFT`, `TSLA`
- ETFs: `SPY`, `QQQ`, `VTI`
- Indices: `^GSPC` (S\&P 500), `^DJI`, `^IXIC`
- Currencies: `EURUSD=X`, `GBPUSD=X`
- Crypto: `BTC-USD`, `ETH-USD`
- A pasted `https://finance.yahoo.com/quote/AAPL/` URL also works

💡 **TIP:** Use the bulk fields below for many tickers at once.

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

🚀 **BULK TICKERS:** A list of ticker symbols to look up in one run.

📊 **TIER-BASED LIMITS:**

- **FREE users:** Up to 5 symbols per run
- **PAID users:** Unlimited symbols

💡 **TIP:** Click "Bulk edit" to paste many tickers, or use the paste-list field below.

✅ Pasted `finance.yahoo.com/quote/<TICKER>` URLs are accepted too.

## `bulkSymbols` (type: `string`):

📋 **PASTE-LIST:** Paste many tickers separated by commas, spaces, or new lines — handy for copy-paste from a spreadsheet.

Example:

```
AAPL, MSFT, GOOGL
TSLA NVDA AMZN
```

📊 FREE tier caps at 5 symbols per run; PAID is unlimited.

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

🔍 **SEARCH MODE:** Type a company name or theme and the actor resolves matching tickers automatically, then fetches their data.

Examples: `apple`, `electric vehicle`, `semiconductors`, `renewable energy`.

💡 Used only when no explicit symbols are provided above.

## `searchLimit` (type: `integer`):

🔢 How many tickers the search query should resolve (1–50). Only applies when a Search Query is used.

## `includeChart` (type: `boolean`):

📈 **PRICE HISTORY:** When ON (default), Detail mode also fetches the price-history coverage for each ticker (number of samples + first/last timestamp) over the window below.

## `chartRange` (type: `string`):

🗓️ History window for the price-history series in Detail mode.

## `chartInterval` (type: `string`):

⏱️ Sampling granularity for the price-history series in Detail mode.

## `proxyCountry` (type: `string`):

🌍 Optional 2-letter country code for proxy rotation (e.g. `US`, `GB`, `DE`). Leave default unless you need a specific region — Yahoo data is served globally.

## Actor input object example

```json
{
  "mode": "overview",
  "symbol": "AAPL",
  "symbols": [
    "AAPL",
    "MSFT",
    "GOOGL",
    "TSLA",
    "NVDA"
  ],
  "bulkSymbols": "",
  "query": "electric vehicle",
  "searchLimit": 10,
  "includeChart": true,
  "chartRange": "1mo",
  "chartInterval": "1d",
  "proxyCountry": "US"
}
```

# Actor output Schema

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

Clean dataset of quotes, company profiles, financials and price-history coverage — one row per ticker.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics.

# 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 = {
    "symbol": "AAPL"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/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 = { "symbol": "AAPL" }

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/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 '{
  "symbol": "AAPL"
}' |
apify call sian.agency/yahoo-finance-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

````json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Yahoo Finance Scraper — Stock Quotes & Financials",
        "description": "Scrape Yahoo Finance into clean datasets — live stock, ETF, index, currency and crypto quotes, plus company profiles, analyst targets, financials and price history. Overview mode batches hundreds of tickers; Detail mode adds sector, employees, revenue and more. Failed lookups never charged.",
        "version": "1.0",
        "x-build-id": "eaMGwdmJTOXUjonI2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~yahoo-finance-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-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/sian.agency~yahoo-finance-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-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/sian.agency~yahoo-finance-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-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": "🧭 Data Mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "🧭 **CHOOSE WHAT YOU GET:**\n\n- **📊 Overview (cheap & fast):** Live market data per ticker — price, change %, market cap, 52-week range, volume, P/E, dividend yield, EPS, book value. Hundreds of tickers batched in one run.\n- **🏢 Detail (full profile):** Everything in Overview **plus** sector, industry, HQ location, website, employees, business description, analyst target price, recommendation, profit margins, revenue, and price-history coverage.\n\n💡 **TIP:** Start with Overview for screening, switch to Detail for deep research.",
                        "default": "overview"
                    },
                    "symbol": {
                        "title": "🔎 Single Ticker Symbol",
                        "type": "string",
                        "description": "🔎 **SINGLE TICKER:** One ticker symbol to look up.\n\n✅ **SUPPORTED:**\n- Stocks: `AAPL`, `MSFT`, `TSLA`\n- ETFs: `SPY`, `QQQ`, `VTI`\n- Indices: `^GSPC` (S&P 500), `^DJI`, `^IXIC`\n- Currencies: `EURUSD=X`, `GBPUSD=X`\n- Crypto: `BTC-USD`, `ETH-USD`\n- A pasted `https://finance.yahoo.com/quote/AAPL/` URL also works\n\n💡 **TIP:** Use the bulk fields below for many tickers at once.",
                        "default": ""
                    },
                    "symbols": {
                        "title": "🚀 Multiple Ticker Symbols",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "🚀 **BULK TICKERS:** A list of ticker symbols to look up in one run.\n\n📊 **TIER-BASED LIMITS:**\n- **FREE users:** Up to 5 symbols per run\n- **PAID users:** Unlimited symbols\n\n💡 **TIP:** Click \"Bulk edit\" to paste many tickers, or use the paste-list field below.\n\n✅ Pasted `finance.yahoo.com/quote/<TICKER>` URLs are accepted too.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "bulkSymbols": {
                        "title": "📋 Paste Tickers (comma / space / newline)",
                        "type": "string",
                        "description": "📋 **PASTE-LIST:** Paste many tickers separated by commas, spaces, or new lines — handy for copy-paste from a spreadsheet.\n\nExample:\n```\nAAPL, MSFT, GOOGL\nTSLA NVDA AMZN\n```\n\n📊 FREE tier caps at 5 symbols per run; PAID is unlimited.",
                        "default": ""
                    },
                    "query": {
                        "title": "🔍 Search Query (find tickers)",
                        "type": "string",
                        "description": "🔍 **SEARCH MODE:** Type a company name or theme and the actor resolves matching tickers automatically, then fetches their data.\n\nExamples: `apple`, `electric vehicle`, `semiconductors`, `renewable energy`.\n\n💡 Used only when no explicit symbols are provided above.",
                        "default": ""
                    },
                    "searchLimit": {
                        "title": "🔢 Search Result Limit",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "🔢 How many tickers the search query should resolve (1–50). Only applies when a Search Query is used.",
                        "default": 10
                    },
                    "includeChart": {
                        "title": "📈 Include Price History (Detail mode)",
                        "type": "boolean",
                        "description": "📈 **PRICE HISTORY:** When ON (default), Detail mode also fetches the price-history coverage for each ticker (number of samples + first/last timestamp) over the window below.",
                        "default": true
                    },
                    "chartRange": {
                        "title": "🗓️ Price History Window",
                        "enum": [
                            "1d",
                            "5d",
                            "1mo",
                            "3mo",
                            "6mo",
                            "1y",
                            "2y",
                            "5y",
                            "10y",
                            "ytd",
                            "max"
                        ],
                        "type": "string",
                        "description": "🗓️ History window for the price-history series in Detail mode.",
                        "default": "1mo"
                    },
                    "chartInterval": {
                        "title": "⏱️ Price History Granularity",
                        "enum": [
                            "1m",
                            "5m",
                            "15m",
                            "30m",
                            "60m",
                            "1h",
                            "1d",
                            "5d",
                            "1wk",
                            "1mo",
                            "3mo"
                        ],
                        "type": "string",
                        "description": "⏱️ Sampling granularity for the price-history series in Detail mode.",
                        "default": "1d"
                    },
                    "proxyCountry": {
                        "title": "🌍 Proxy Country (optional)",
                        "type": "string",
                        "description": "🌍 Optional 2-letter country code for proxy rotation (e.g. `US`, `GB`, `DE`). Leave default unless you need a specific region — Yahoo data is served globally.",
                        "default": "US"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
````
