# Stock, Crypto & Forex Screener (`goat255/stock-screener`) Actor

Screen any market with your own filters and columns. Returns a ranked table of matching tickers with the exact data fields you request.

- **URL**: https://apify.com/goat255/stock-screener.md
- **Developed by:** [Goutam Soni](https://apify.com/goat255) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 ticker returneds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Stock, Crypto & Forex Screener

Screen any market with your own filters and columns, and get back a ranked table of matching tickers. Pick the market, choose exactly which data fields you want, add optional numeric filters, and rank the results by any column. Works for equities, crypto pairs, and forex pairs from a single input.

Use it to build watchlists, feed a trading dashboard, power lead lists of companies by market cap or sector, or run scheduled screens for movers and gainers.

### What you get

- One row per ticker, ranked by the column you choose.
- Every column you request, labelled and returned in order.
- A stable `symbol` (exchange + ticker) and a `rank` on every row.
- Any market: equities across dozens of countries, crypto, and forex.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `market` | string | `america` | Market to screen. E.g. `america`, `crypto`, `forex`, `uk`, `india`, `germany`, `japan`, `canada`, `australia`. |
| `columns` | array | `["name","close","change","volume","market_cap_basic"]` | Data fields to return per ticker, in order. |
| `sortBy` | string | `market_cap_basic` | Column to rank by. Use a numeric column (for crypto/forex use `volume` or `change`). |
| `sortOrder` | string (`desc`/`asc`) | `desc` | Ranking direction. |
| `limit` | integer | `50` | Number of tickers to return (1 to 500). |
| `filters` | array | `[]` | Optional numeric filters to narrow the screen. |

#### Common columns

`name`, `close`, `change`, `change_abs`, `volume`, `market_cap_basic`, `price_earnings_ttm`, `dividend_yield_recent`, `sector`, `industry`, `RSI`, `exchange`, `description`.

#### Example input

```json
{
  "market": "america",
  "columns": ["name", "close", "change", "volume", "market_cap_basic", "sector"],
  "sortBy": "market_cap_basic",
  "sortOrder": "desc",
  "limit": 50,
  "filters": [
    { "left": "market_cap_basic", "operation": "greater", "right": 1000000000 }
  ]
}
```

### Output

Each dataset row contains `symbol`, `rank`, and one key per requested column.

| Field | Description |
|---|---|
| `symbol` | Exchange-qualified ticker, e.g. `NASDAQ:AAPL`. |
| `rank` | Position in the ranked result (1 = top). |
| `name` | Ticker symbol / short name (when requested). |
| `close` | Latest price (when requested). |
| `change` | Percent change (when requested). |
| `volume` | Traded volume (when requested). |
| `market_cap_basic` | Market capitalization (when requested). |
| ...any other requested column | Returned under its own key. |

#### Example output row

```json
{
  "symbol": "NASDAQ:AAPL",
  "rank": 2,
  "name": "AAPL",
  "close": 317.31,
  "change": 0.63,
  "volume": 43257535,
  "market_cap_basic": 4660445181914.07
}
```

### Pricing

This Actor uses pay per event:

| Event | Price (USD) |
|---|---|
| Ticker returned | $0.001 per ticker row |

You are charged once per ticker row returned in the ranked table. A screen returning 50 tickers costs $0.05.

### Notes

- `columns` are returned in the exact order you request them, each under its own key.
- For crypto and forex, market-cap ranking is not meaningful. Sort by `volume` or `change` instead.
- `filters` accept objects like `{ "left": "<column>", "operation": "greater", "right": <number> }`. Leave empty to screen the whole market.

**Found this useful?** [Leave a quick review](https://apify.com/goat255/stock-screener/reviews). It takes a few seconds and it genuinely helps other people find the actor.

# Actor input Schema

## `market` (type: `string`):

The market to screen. Common values: america, crypto, forex, uk, india, germany, japan, canada, australia, france, italy, spain, brazil, china, hongkong, korea, russia, turkey, uae. Any market slug supported by the data source works.

## `columns` (type: `array`):

The data fields to return for each ticker, in order. Examples: name, close, change, change\_abs, volume, market\_cap\_basic, price\_earnings\_ttm, dividend\_yield\_recent, sector, industry, RSI, exchange, description.

## `sortBy` (type: `string`):

The column to rank results by. Should be a numeric column (e.g. market\_cap\_basic, volume, change, close). For crypto/forex where market cap is not available, use volume or change.

## `sortOrder` (type: `string`):

Ranking direction.

## `limit` (type: `integer`):

How many matching tickers to return.

## `filters` (type: `array`):

Optional raw filter objects to narrow the screen, each like {"left":"market\_cap\_basic","operation":"greater","right":1000000000}. Leave empty to screen the whole market.

## Actor input object example

```json
{
  "market": "america",
  "columns": [
    "name",
    "close",
    "change",
    "volume",
    "market_cap_basic"
  ],
  "sortBy": "market_cap_basic",
  "sortOrder": "desc",
  "limit": 50,
  "filters": []
}
```

# 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 = {
    "columns": [
        "name",
        "close",
        "change",
        "volume",
        "market_cap_basic"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("goat255/stock-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 = { "columns": [
        "name",
        "close",
        "change",
        "volume",
        "market_cap_basic",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("goat255/stock-screener").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 '{
  "columns": [
    "name",
    "close",
    "change",
    "volume",
    "market_cap_basic"
  ]
}' |
apify call goat255/stock-screener --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Dvv91dbA11GMcKv5X/builds/fgK2LIBNsp7cUhdVg/openapi.json
