# US Stock Price Scraper (`jungle_synthesizer/us-stock-price-scraper`) Actor

Download historical OHLCV stock price data (open, high, low, close, volume, dividends, splits) for US stocks, ETFs, and indices from Yahoo Finance. Supports any ticker, any interval (1m to 1mo), and any date range.

- **URL**: https://apify.com/jungle\_synthesizer/us-stock-price-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 83.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## US Stock Price Scraper

Download historical OHLCV (open, high, low, close, volume) stock price data for US stocks, ETFs, and indices from Yahoo Finance. Supports any ticker symbol, any interval from 1 minute to 1 month, and any date range going back decades. Includes dividends and stock splits.

### What you get

Each record in the dataset contains:

| Field | Description |
|-------|-------------|
| `ticker` | Ticker symbol (e.g. `AAPL`, `SPY`, `^GSPC`) |
| `date` | Trading date in `YYYY-MM-DD` format |
| `datetime` | Full ISO timestamp (intraday intervals only) |
| `open` | Opening price |
| `high` | Highest price during the interval |
| `low` | Lowest price during the interval |
| `close` | Closing price |
| `adj_close` | Adjusted close (accounts for splits and dividends) |
| `volume` | Shares traded during the interval |
| `dividend_amount` | Dividend paid on this date, or `null` |
| `split_ratio` | Split ratio as a string (e.g. `"2:1"`), or `null` |
| `currency` | Trading currency (e.g. `USD`) |
| `exchange` | Exchange name (e.g. `NMS`, `PCX`) |
| `interval` | Data interval used (e.g. `1d`, `1wk`) |
| `source_url` | Yahoo Finance history URL for the ticker |

### How to use

#### Basic run

1. Set **Tickers** to one or more symbols: `["AAPL", "SPY", "MSFT"]`
2. Choose an **Interval** (`1d` for daily, `1wk` for weekly, etc.)
3. Choose a **Range** (`1mo`, `1y`, `5y`, etc.) or set a custom **Start Date** / **End Date**
4. Enable **Include Events** to get dividends and stock split data alongside OHLCV rows

#### Input parameters

| Parameter | Type | Description | Default |
|-----------|------|-------------|---------|
| `tickers` | array | List of ticker symbols (required) | `["AAPL", "SPY", "MSFT"]` |
| `interval` | string | Price interval: `1m`, `2m`, `5m`, `15m`, `30m`, `60m`, `90m`, `1h`, `1d`, `5d`, `1wk`, `1mo`, `3mo` | `1d` |
| `range` | string | Shortcut range: `1d`, `5d`, `1mo`, `3mo`, `6mo`, `1y`, `2y`, `5y`, `10y`, `ytd`, `max` | `1mo` |
| `startDate` | string | Custom start date `YYYY-MM-DD` — overrides `range` when used with `endDate` | — |
| `endDate` | string | Custom end date `YYYY-MM-DD` | — |
| `includeEvents` | boolean | Include dividends and stock splits in the output | `true` |
| `maxItems` | integer | Total record cap across all tickers. `0` = unlimited | `0` |

#### Example inputs

**Last month of Apple daily OHLCV:**
```json
{
  "tickers": ["AAPL"],
  "interval": "1d",
  "range": "1mo"
}
````

**5-year weekly data for a portfolio:**

```json
{
  "tickers": ["AAPL", "MSFT", "GOOGL", "AMZN", "TSLA"],
  "interval": "1wk",
  "range": "5y",
  "includeEvents": true
}
```

**Custom date range for S\&P 500:**

```json
{
  "tickers": ["^GSPC"],
  "interval": "1d",
  "startDate": "2020-01-01",
  "endDate": "2021-12-31",
  "includeEvents": false
}
```

**Intraday 1-hour bars:**

```json
{
  "tickers": ["SPY"],
  "interval": "1h",
  "range": "5d"
}
```

### Supported tickers

Any ticker listed on Yahoo Finance works, including:

- **US stocks**: `AAPL`, `MSFT`, `TSLA`, `NVDA`
- **ETFs**: `SPY`, `QQQ`, `IWM`, `GLD`
- **Indices**: `^GSPC` (S\&P 500), `^DJI` (Dow Jones), `^IXIC` (NASDAQ)
- **Crypto** (via Yahoo Finance): `BTC-USD`, `ETH-USD`

### Notes

- **Intraday data** (`1m`–`1h` intervals) is only available for approximately the last 60 days; requesting longer ranges for intraday will return whatever is available.
- Data is sourced directly from the Yahoo Finance chart API. All prices reflect Yahoo Finance's data as of the time of the run.
- Stock prices before splits are not adjusted in the `close` field, but `adj_close` applies all historical splits and dividends.

# Actor input Schema

## `sp_intended_usage` (type: `string`):

Please describe how you plan to use the data extracted by this crawler.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

Provide your email address so we can get in touch with you.

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

List of stock/ETF/index ticker symbols (e.g. \["AAPL", "SPY", "^GSPC"])

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

Price interval: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo

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

Date range shortcut (ignored if startDate/endDate are set): 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max

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

Start date for historical data (YYYY-MM-DD). Overrides range if both startDate and endDate are set.

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

End date for historical data (YYYY-MM-DD). Overrides range if both startDate and endDate are set.

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

Include dividend and stock split events in the output.

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

Maximum number of OHLCV records to return (across all tickers combined). 0 = unlimited.

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "tickers": [
    "AAPL",
    "SPY",
    "MSFT"
  ],
  "interval": "1d",
  "range": "1mo",
  "includeEvents": true,
  "maxItems": 15
}
```

# Actor output Schema

## `results` (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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "tickers": [
        "AAPL",
        "SPY",
        "MSFT"
    ],
    "interval": "1d",
    "range": "1mo",
    "startDate": "",
    "endDate": "",
    "includeEvents": true,
    "maxItems": 15
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/us-stock-price-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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "tickers": [
        "AAPL",
        "SPY",
        "MSFT",
    ],
    "interval": "1d",
    "range": "1mo",
    "startDate": "",
    "endDate": "",
    "includeEvents": True,
    "maxItems": 15,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/us-stock-price-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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "tickers": [
    "AAPL",
    "SPY",
    "MSFT"
  ],
  "interval": "1d",
  "range": "1mo",
  "startDate": "",
  "endDate": "",
  "includeEvents": true,
  "maxItems": 15
}' |
apify call jungle_synthesizer/us-stock-price-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "US Stock Price Scraper",
        "description": "Download historical OHLCV stock price data (open, high, low, close, volume, dividends, splits) for US stocks, ETFs, and indices from Yahoo Finance. Supports any ticker, any interval (1m to 1mo), and any date range.",
        "version": "0.1",
        "x-build-id": "i3LuzhMAeHMt3f8Gx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jungle_synthesizer~us-stock-price-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jungle_synthesizer-us-stock-price-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/jungle_synthesizer~us-stock-price-scraper/runs": {
            "post": {
                "operationId": "runs-sync-jungle_synthesizer-us-stock-price-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/jungle_synthesizer~us-stock-price-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-jungle_synthesizer-us-stock-price-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "tickers"
                ],
                "properties": {
                    "sp_intended_usage": {
                        "title": "What is the intended usage of this data?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Please describe how you plan to use the data extracted by this crawler."
                    },
                    "sp_improvement_suggestions": {
                        "title": "How can we improve this crawler for you?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide any feedback or suggestions for improvements."
                    },
                    "sp_contact": {
                        "title": "Contact Email",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide your email address so we can get in touch with you."
                    },
                    "tickers": {
                        "title": "Tickers",
                        "type": "array",
                        "description": "List of stock/ETF/index ticker symbols (e.g. [\"AAPL\", \"SPY\", \"^GSPC\"])",
                        "items": {
                            "type": "string"
                        }
                    },
                    "interval": {
                        "title": "Interval",
                        "enum": [
                            "1m",
                            "2m",
                            "5m",
                            "15m",
                            "30m",
                            "60m",
                            "90m",
                            "1h",
                            "1d",
                            "5d",
                            "1wk",
                            "1mo",
                            "3mo"
                        ],
                        "type": "string",
                        "description": "Price interval: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo"
                    },
                    "range": {
                        "title": "Range",
                        "enum": [
                            "1d",
                            "5d",
                            "1mo",
                            "3mo",
                            "6mo",
                            "1y",
                            "2y",
                            "5y",
                            "10y",
                            "ytd",
                            "max"
                        ],
                        "type": "string",
                        "description": "Date range shortcut (ignored if startDate/endDate are set): 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max"
                    },
                    "startDate": {
                        "title": "Start Date",
                        "type": "string",
                        "description": "Start date for historical data (YYYY-MM-DD). Overrides range if both startDate and endDate are set."
                    },
                    "endDate": {
                        "title": "End Date",
                        "type": "string",
                        "description": "End date for historical data (YYYY-MM-DD). Overrides range if both startDate and endDate are set."
                    },
                    "includeEvents": {
                        "title": "Include Events (Dividends / Splits)",
                        "type": "boolean",
                        "description": "Include dividend and stock split events in the output."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "type": "integer",
                        "description": "Maximum number of OHLCV records to return (across all tickers combined). 0 = unlimited.",
                        "default": 0
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
