# Dark Pool & Off-Exchange Volume Tracker (`gochujang/dark-pool-tracker`) Actor

Track dark pool and off-exchange trading volume from FINRA ATS data and CBOE market share statistics. Monitor institutional block trading activity. No API key needed.

- **URL**: https://apify.com/gochujang/dark-pool-tracker.md
- **Developed by:** [Hojun Lee](https://apify.com/gochujang) (community)
- **Categories:** Business
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 dark pool record 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/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

## Dark Pool & Off-Exchange Volume Tracker

**Dark Pool & Off-Exchange Volume Tracker** monitors **off-exchange trading activity** using official FINRA Alternative Trading System (ATS) data and CBOE market share statistics. Dark pools and off-exchange venues account for roughly **35–40% of all US equity volume** — this actor makes that institutional trading data accessible to retail traders and researchers without requiring expensive data subscriptions.

***

### Why use Dark Pool & Off-Exchange Volume Tracker?

1. **Detect hidden institutional accumulation** — Dark pool volume spikes in a specific stock can signal institutional buying before a price move, since large funds route orders off-exchange to minimize market impact.
2. **Monitor lit vs dark market share shifts** — A rising dark pool share for a specific venue may indicate improving execution quality, attracting more institutional flow.
3. **ATS-level granularity** — Identify which specific dark pools (IEX, Virtu, UBS ATS, etc.) are handling volume for a given stock — not just aggregate off-exchange totals.
4. **Regulatory and compliance research** — FINRA publishes ATS data with a 2-week delay; this actor surfaces it in structured form for compliance teams tracking venue usage.
5. **Market microstructure analysis** — Compare lit exchange vs dark pool volume ratios across stocks, sectors, or market conditions to study execution dynamics.

***

### How to use

1. Open the actor on Apify Store and click **Try for free**.
2. Choose a `mode`: `market_share`, `ats_volume`, or `otc_summary`.
3. For `ats_volume` mode, optionally set `tickers` to target specific stocks.
4. Click **Start**. Results are returned as structured records for the chosen mode.

***

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `mode` | string | `"market_share"` | Data to fetch: `market_share`, `ats_volume`, or `otc_summary` |
| `tickers` | string | `""` | Comma-separated tickers for `ats_volume` mode (e.g. `"AAPL,SPY,QQQ"`) |
| `maxResults` | number | `100` | Maximum records to return |

#### Modes explained

| Mode | Source | What it returns |
|------|--------|-----------------|
| `market_share` | CBOE US Equities | Exchange vs dark pool % breakdown by venue |
| `ats_volume` | FINRA ATS Transparency | Per-ticker weekly volume by ATS/dark pool name |
| `otc_summary` | FINRA OTC Data | Weekly aggregate off-exchange volume statistics |

***

### Output

**`market_share` mode:**

```json
{
  "venue": "NYSE",
  "market_type": "lit",
  "market_share_pct": 12.4,
  "volume": 1234567890,
  "date": "2026-08-29"
}
```

**`ats_volume` mode:**

```json
{
  "ticker": "AAPL",
  "week": "2026-08-18",
  "ats_name": "IEX",
  "share_quantity": 45230000,
  "trade_count": 12400,
  "week_rank": 1
}
```

**`otc_summary` mode:**

```json
{
  "week": "2026-08-18",
  "total_otc_shares": 98450000000,
  "total_otc_trades": 45200000,
  "ats_shares": 67300000000,
  "non_ats_shares": 31150000000
}
```

#### Output fields — market_share mode

| Field | Description |
|-------|-------------|
| `venue` | Trading venue name (NYSE, NASDAQ, IEX, Virtu, etc.) |
| `market_type` | `lit` (exchange) or `dark` (ATS/internalized) |
| `market_share_pct` | Percentage of total US equity volume |
| `volume` | Total shares traded at this venue |

#### Output fields — ats_volume mode

| Field | Description |
|-------|-------------|
| `ticker` | Stock symbol |
| `week` | Week start date (Monday) |
| `ats_name` | Name of the Alternative Trading System (dark pool) |
| `share_quantity` | Number of shares traded in this ATS this week |
| `trade_count` | Number of individual trades |

***

### Cost estimation

**Pay-Per-Event: $0.005 per actor start + $0.005 per record returned.**

| Use case | Records | Estimated cost |
|----------|---------|----------------|
| Market share snapshot | ~30 venues | ~$0.15/run |
| ATS volume for 5 tickers | ~50 records | ~$0.25/run |
| Weekly OTC summary | 1 record | ~$0.01/run |
| Daily market share monitoring | 30/day | ~$0.15/day |

***

### Data sources and freshness

| Source | Data freshness | Notes |
|--------|----------------|-------|
| CBOE US Equities Market Statistics | Near real-time (T+1) | Exchange and dark pool market share |
| FINRA ATS Transparency Data | 2-week delay (regulatory lag) | Per-ATS volume by ticker |
| FINRA OTC Market Summary | Weekly (Thursday release) | Aggregate off-exchange statistics |

***

### FAQ

**Why is FINRA ATS data delayed by 2 weeks?**
FINRA publishes ATS data with a regulatory-mandated 2-week delay. This prevents HFT firms from front-running ATS-specific information. The data is still highly useful for pattern analysis, compliance, and research.

**What's the difference between ATS and dark pool?**
Dark pools are a subset of Alternative Trading Systems (ATS). All dark pools are ATSs, but not all ATSs are fully dark — some have limited transparency. The FINRA dataset covers all registered ATS venues.

**How often should I run this actor?**
`market_share` mode: daily or weekly. `ats_volume` mode: weekly (matches FINRA's release schedule). `otc_summary` mode: weekly.

***

### Related actors

- [Smart Money Wallet Tracker](https://apify.com/gochujang/smart-money-tracker) — On-chain equivalent: track institutional wallets on Ethereum/Solana
- [Short Interest Tracker](https://apify.com/gochujang/short-interest-tracker) — FINRA short interest data; complements dark pool volume
- [Options Unusual Activity](https://apify.com/gochujang/options-unusual-activity) — Another leading institutional signal alongside dark pool flow

### Feedback

If this actor is useful, a quick review helps other traders find it: [Leave a review on Apify Store](https://apify.com/gochujang/dark-pool-tracker#reviews)

***

**Keywords:** dark pool tracker, FINRA ATS data, off-exchange volume, dark pool share, institutional block trades, dark pool flow signal, OTC trading volume, CBOE market stats, institutional flow tracker, dark pool percentage, block trade frequency, alternative trading system, dark pool vs lit market

# Actor input Schema

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

market_share = exchange vs dark pool breakdown, ats_volume = per-ticker ATS data, otc_summary = FINRA OTC summary.

## `tickers` (type: `string`):

Specific tickers for per-ticker ATS volume lookup.

## `maxResults` (type: `integer`):

Maximum number of records to return.

## `alertMinBlockSize` (type: `number`):

Send Telegram alert for dark pool trades above this size.

## `telegramBotToken` (type: `string`):

Telegram bot token for sending dark pool alerts. Leave empty to disable alerts.

## `telegramChatId` (type: `string`):

Telegram chat ID to send alerts to. Leave empty to disable alerts.

## Actor input object example

```json
{
  "mode": "market_share",
  "tickers": "",
  "maxResults": 50,
  "alertMinBlockSize": 500000
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("gochujang/dark-pool-tracker").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("gochujang/dark-pool-tracker").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 '{}' |
apify call gochujang/dark-pool-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gochujang/dark-pool-tracker"
        }
    }
}
```

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/G8FF9dad1fplCPG05/builds/bFb20DTVl6s0jeEdv/openapi.json
