# Yahoo Finance API | Prices, Fundamentals & News (`xtech/yahoo-finance-scraper-pro`) Actor

Export Yahoo Finance prices, company fundamentals, financial statements, news, earnings, and holder data for stocks and crypto in structured JSON.

- **URL**: https://apify.com/xtech/yahoo-finance-scraper-pro.md
- **Developed by:** [Xtech](https://apify.com/xtech) (community)
- **Categories:** Developer tools, Automation, Agents
- **Features:** Limited permissions
- **Stats:** 29 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Yahoo Finance API | Prices, Fundamentals & News

Export structured Yahoo Finance data for stocks and crypto: prices, fundamentals, financial statements, news, earnings, and holders. Each paid ticker row bundles every requested feature that Yahoo returns.

### Pricing

- **$0.01 per ticker result** saved to the default dataset, plus a **$0.01** Actor start event.
- One result can contain company info, price history, statements, news, holders, and the other selected features for that symbol.
- Example: a run that returns 10 ticker results costs **$0.11**.

### 🎯 What You Get

- **Complete Stock Info**: Extract name, sector, industry, market cap, and over 100+ data points for any ticker.
- **Historical Data**: Fetch daily historical prices and volume with customizable periods.
- **Financial Statements**: Extract Income Statement, Balance Sheet, and Cash Flow statements.
- **Market Insights**: Get recommendations, news, dividends, splits, and calendar events.
- **Holder Information**: Analyze major and institutional holders.
- **Cryptocurrency Support**: Scrape data for BTC-USD, ETH-USD, and other crypto pairs.
- **Bounded Bulk Processing**: Process up to 25 symbols with at most four ticker requests running concurrently.

### 🔧 Features

- **info**: General company information and statistics.
- **history**: Historical price data.
- **financials**: Yearly and quarterly income statements.
- **balance_sheet**: Yearly and quarterly balance sheets.
- **cashflow**: Yearly and quarterly cash flow statements.
- **recommendations**: Analyst recommendations.
- **news**: Latest news articles related to the ticker.
- **actions**: Dividend and stock split history.
- **major_holders**: Breakdown of major shareholders.
- **institutional_holders**: List of institutional investors.
- **calendar**: Upcoming earnings, dividends, and other events.
- **earnings**: Historical earnings data.

### 💡 Example Output

```json
{
  "symbol": "AAPL",
  "scraped_at": "2026-01-14T12:00:00Z",
  "info": {
    "longName": "Apple Inc.",
    "sector": "Technology",
    "industry": "Consumer Electronics",
    "currentPrice": 185.92,
    "marketCap": 2874650656768
  },
  "history": [
    {
      "Date": "2025-12-14 00:00:00",
      "Open": 184.50,
      "High": 186.20,
      "Low": 184.10,
      "Close": 185.92,
      "Volume": 52345600
    }
  ]
}
```

### ⚡ Quick Start

1. Enter the stock symbols (e.g., `AAPL, MSFT, GOOGL`).
2. Select the data features you want to extract.
3. Choose the historical period (e.g., `1mo`, `1y`, `max`).
4. Run the scraper and get your financial data!

#### A safe first run

Use one liquid ticker and only the two lightweight features below to verify the
symbol and output shape before requesting statements or news:

```json
{
  "symbols": ["AAPL"],
  "features": ["info", "history"],
  "history_period": "1mo"
}
```

This produces one billable ticker row plus the $0.01 start event. Set a maximum
run charge of **$0.03** in the Store form for this check. Add features or symbols
only after confirming that the returned fields meet your use case.

For API clients, submit the same input to the Apify run endpoint:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/xtech~yahoo-finance-scraper-pro/runs?token=$APIFY_TOKEN&maxTotalChargeUsd=0.03" \
  -H "Content-Type: application/json" \
  -d '{"symbols":["AAPL"],"features":["info","history"],"history_period":"1mo"}'
```

### 📝 Configuration

```json
{
  "symbols": ["AAPL", "MSFT", "TSLA", "BTC-USD"],
  "features": ["info", "history", "financials", "news"],
  "history_period": "1mo"
}
```

#### Parameters

- **symbols**: List of stock symbols to scrape. Can be a list of strings or a comma-separated string.
- **features**: List of data types to extract (options: `info`, `history`, `financials`, `balance_sheet`, `cashflow`, `recommendations`, `news`, `actions`, `major_holders`, `institutional_holders`, `calendar`, `earnings`).
- **history_period**: The period for historical data (e.g., `1d`, `5d`, `1mo`, `3mo`, `6mo`, `1y`, `2y`, `5y`, `10y`, `ytd`, `max`).

#### Recommended first run

Start with one ticker and the default `info` + `history` features:

```json
{
  "symbols": ["AAPL"],
  "features": ["info", "history"],
  "history_period": "1mo"
}
```

The Actor returns one billable dataset item per symbol when at least one requested
feature succeeds. A ticker with some unavailable features is preserved as a
partial result with `features_succeeded` and `feature_errors`. If every requested
feature fails, the unbillable diagnostic is written to `sourceResults` instead
of the default dataset. You are not charged separate result events for every
feature inside the same ticker row. Add financial statements, news, or holder
features only when you need those larger payloads. No Yahoo API key is required.

The `RUN_SUMMARY` value records requested, successful, partial, and failed
symbols. Use `features_succeeded` to accept partial rows safely and inspect
`feature_errors` before retrying only missing features. Yahoo Finance can
temporarily omit fields or rate-limit requests, so a successful run does not
imply that every requested feature was available.

#### Ready-to-run recipes

Current price and one-month history:

```json
{"symbols":["AAPL"],"features":["info","history"],"history_period":"1mo"}
```

Crypto snapshot:

```json
{"symbols":["BTC-USD","ETH-USD"],"features":["info","history"],"history_period":"5d"}
```

Fundamental research:

```json
{"symbols":["MSFT"],"features":["info","financials","balance_sheet","cashflow"]}
```

### 📊 Perfect For

- **Investors**: Deep dive into company fundamentals and price action.
- **Data Analysts**: Build financial models with clean JSON data.
- **FinTech Developers**: Power your apps with reliable Yahoo Finance data.
- **Market Researchers**: Track institutional holdings and analyst sentiment.

Use the input presets to start with a small set of tickers, then schedule the Actor for recurring market monitoring.

# Changelog

This Actor's version history is a separate document: https://apify.com/xtech/yahoo-finance-scraper-pro/changelog.md

# Actor input Schema

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

Enter one or more Yahoo Finance symbols (e.g., AAPL, MSFT, BTC-USD). Start with one to keep the first run fast; one result is saved per symbol.

## `features` (type: `array`):

Choose the fields for each ticker. Info + history is the recommended first run; financial statements and holder data can make a run larger.

## `history_period` (type: `string`):

The period for historical price data. One month is a fast, useful default for a first run.

## Actor input object example

```json
{
  "symbols": [
    "AAPL"
  ],
  "features": [
    "info",
    "history"
  ],
  "history_period": "1mo"
}
```

# Actor output Schema

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

One billable default-dataset row per ticker with at least one successfully retrieved feature.

## `sourceResults` (type: `string`):

Unbillable diagnostics for tickers whose requested features all failed.

## `runSummary` (type: `string`):

No description

# 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"
    ],
    "features": [
        "info",
        "history"
    ],
    "history_period": "1mo"
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtech/yahoo-finance-scraper-pro").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"],
    "features": [
        "info",
        "history",
    ],
    "history_period": "1mo",
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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"
  ],
  "features": [
    "info",
    "history"
  ],
  "history_period": "1mo"
}' |
apify call xtech/yahoo-finance-scraper-pro --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,xtech/yahoo-finance-scraper-pro"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/m7UrWyLRI6DwKmhlq/builds/2S5FQyAtcLO8W0hYg/openapi.json
