# Yahoo Finance Market Movers & Screener Lists Scraper (`chain_link/yahoo-finance-market-movers-screener`) Actor

Bulk-export Yahoo Finance market lists such as most active, gainers, losers, trending tickers, 52-week movers, ETFs, crypto and more. Paginates the full list and returns price, change, volume, market cap and P/E per ticker.

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

## Pricing

$0.40 / 1,000 quote row scrapeds

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 Market Movers & Screener Lists Scraper

Export entire Yahoo Finance market lists - most active, top gainers, top losers, trending tickers, 52-week movers, ETFs, crypto and more - into a clean spreadsheet-ready table. You do **not** need to know any ticker symbols in advance: pick a list and get every ticker on it, ranked. You can also add your own tickers to get a quick quote snapshot for each.

### What it does

- Opens each Yahoo Finance list you choose (for example `https://finance.yahoo.com/markets/stocks/most-active/`) and reads its table page by page until your limit or the end of the list.
- Returns one row per ticker with price, day change, % change, volume, average 3-month volume, market cap, P/E ratio and 52-week range - whichever of these columns that list displays.
- Tags every row with the list it came from and its position (rank) in that list, so daily movers dashboards and comparisons are easy.
- For tickers you type in yourself, it fetches a snapshot from Yahoo's public chart data: price, day change, % change, volume, 52-week low/high and currency.

### Price

**$0.0004 per result row** - that is $0.40 per 1,000 rows. You pay only for rows actually delivered, and the **Max results** setting caps your spend.

### Input

| Field | What it means |
|---|---|
| **Market lists** (`lists`) | Yahoo Finance list paths (the part after `/markets/`). Examples: `stocks/most-active`, `stocks/gainers`, `stocks/losers`, `stocks/trending`, `stocks/52-week-gainers`, `etfs/most-active`, `crypto/all`, `world-indices`. A full list URL also works. Default: most active, gainers and losers. Leave empty to only fetch your own tickers. |
| **Extra tickers** (`tickers`) | Optional symbols such as `AAPL`, `MSFT`, `BTC-USD`, `^GSPC`. Each gets one quote snapshot row. |
| **Max results** (`maxItems`) | Maximum number of rows for the whole run, across all lists and tickers. Default 50. |
| **Max rows per list** (`maxItemsPerList`) | Maximum rows taken from any one list. Default 200. |

### Example input

```json
{
  "lists": ["stocks/most-active", "stocks/gainers", "stocks/losers"],
  "tickers": ["AAPL", "BTC-USD"],
  "maxItems": 300,
  "maxItemsPerList": 100
}
```

### Output fields

| Field | Description |
|---|---|
| `symbol` | Ticker symbol |
| `name` | Company or instrument name |
| `price` | Latest regular market price |
| `change` | Price change on the day |
| `changePercent` | Percent change on the day |
| `volume` | Day trading volume |
| `avgVolume3m` | Average 3-month volume (list rows only) |
| `marketCap` | Market capitalisation as a plain number (list rows only) |
| `peRatio` | Trailing P/E ratio (list rows only) |
| `fiftyTwoWeekLow` | 52-week low |
| `fiftyTwoWeekHigh` | 52-week high |
| `currency` | Quote currency (filled for your own tickers) |
| `sourceList` | The list the row came from, or `ticker` for symbols you supplied |
| `rank` | Position in the list (empty for your own tickers) |
| `url` | Yahoo Finance quote page |
| `scrapedAt` | Time the row was collected (UTC, ISO format) |

Fields a list does not show are left empty (null).

### Example output row

Values are illustrative.

```json
{
  "symbol": "MRNA",
  "name": "Moderna, Inc.",
  "price": 225.0,
  "change": 28.0,
  "changePercent": 14.21,
  "volume": 31520000,
  "avgVolume3m": 12840000,
  "marketCap": 87300000000,
  "peRatio": null,
  "fiftyTwoWeekLow": 23.15,
  "fiftyTwoWeekHigh": 231.4,
  "currency": null,
  "sourceList": "stocks/most-active",
  "rank": 3,
  "url": "https://finance.yahoo.com/quote/MRNA/",
  "scrapedAt": "2025-06-02T15:42:10.512000+00:00"
}
```

### Typical uses

- Daily or intraday snapshots of the market's biggest gainers, losers and most traded names.
- Building movers dashboards or alerts in a spreadsheet or BI tool.
- Discovering unusual activity in ETFs or crypto without maintaining a watchlist.
- Adding a quick price check for a handful of your own symbols in the same run.

### Limits

- Data is what Yahoo Finance shows publicly and may be delayed. It is not suitable as a basis for trading decisions.
- Columns differ between lists (crypto lists, for example, have no P/E), so some fields will be empty.
- Rows for your own tickers come from Yahoo's public chart data, which has no market cap, P/E or 3-month volume; those fields stay empty and `rank` is empty.
- Rows without a price are skipped and not charged.
- If Yahoo refuses access, keeps rate-limiting, shows a cookie-consent page (common for requests from the EU) or returns an empty page, the run logs this clearly and stops instead of trying to get around it. You are only charged for rows already delivered.
- If Yahoo changes its page layout, results may be incomplete until the tool is updated.

### Terms

This tool is independent and not affiliated with or endorsed by Yahoo. Yahoo's Terms of Service restrict automated access and redistribution of its content, and some market data is licensed from exchanges for personal use only. You are responsible for making sure your use of the data complies with those terms and any applicable law. The tool collects market data only, no personal data.

# Actor input Schema

## `lists` (type: `array`):

Yahoo Finance list paths under /markets/ to scrape, e.g. stocks/most-active, stocks/gainers, stocks/losers, stocks/trending, stocks/52-week-gainers, etfs/most-active, crypto/all, world-indices.

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

Optional ticker symbols (e.g. AAPL, MSFT, BTC-USD) for which a quote snapshot is fetched from the public chart endpoint.

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

Maximum total rows to output across all lists and tickers.

## `maxItemsPerList` (type: `integer`):

Cap on rows per market list (pages of 100 are fetched until reached or the list ends).

## Actor input object example

```json
{
  "lists": [
    "stocks/most-active",
    "stocks/gainers",
    "stocks/losers"
  ],
  "tickers": [],
  "maxItems": 500,
  "maxItemsPerList": 200
}
```

# 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 = {
    "lists": [
        "stocks/most-active",
        "stocks/gainers",
        "stocks/losers"
    ],
    "tickers": [],
    "maxItems": 500,
    "maxItemsPerList": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("chain_link/yahoo-finance-market-movers-screener").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 = {
    "lists": [
        "stocks/most-active",
        "stocks/gainers",
        "stocks/losers",
    ],
    "tickers": [],
    "maxItems": 500,
    "maxItemsPerList": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("chain_link/yahoo-finance-market-movers-screener").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 '{
  "lists": [
    "stocks/most-active",
    "stocks/gainers",
    "stocks/losers"
  ],
  "tickers": [],
  "maxItems": 500,
  "maxItemsPerList": 200
}' |
apify call chain_link/yahoo-finance-market-movers-screener --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,chain_link/yahoo-finance-market-movers-screener"
        }
    }
}
```

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/GbdZNVjc4huySZlJk/builds/TL196KetTyCqI43ee/openapi.json
