# Short Interest Tracker (`gochujang/short-interest-tracker`) Actor

Track short interest data for US-listed stocks: short float %, days-to-cover, shares short, and month-over-month change. Supports screener mode (top shorted stocks) and specific ticker lookups. Data from Finviz.

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

## Pricing

from $20.00 / 1,000 stock 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

## Short Interest Tracker

**Short Interest Tracker** delivers **short float percentage, days-to-cover, and month-over-month short interest changes** for US-listed stocks — sourced from Finviz. Screen for the most heavily shorted stocks in the market, or look up specific tickers to assess their squeeze potential and directional risk. No Bloomberg subscription needed.

Short interest is one of the most actionable market structure signals: high short float + rising price = potential squeeze; rising short interest on a falling stock = momentum confirmation.

***

### Why use Short Interest Tracker?

1. **Short squeeze candidate screening** — Find stocks with short float >30% AND high days-to-cover (>5) where a price spike would force painful covering. Classic squeeze setup.
2. **Squeeze risk monitoring** — If you're short a stock, track whether short interest is rising (crowded) or falling (shorts covering). A rapid short interest decline signals squeeze risk.
3. **Momentum confirmation** — Stocks breaking out of consolidation with high short interest tend to run further as shorts cover. Screen for breakouts + high short float simultaneously.
4. **Risk management** — Before shorting a stock, check the short interest. High existing short float means crowded trade + higher squeeze risk for your position.
5. **Sector short interest trends** — Aggregate short interest across a sector to gauge overall bearish sentiment and potential rotation setups.

***

### How to use

1. Open the actor on Apify Store and click **Try for free**.
2. Choose `mode`: `screener` (find most-shorted stocks) or `tickers` (look up specific tickers).
3. In screener mode, set `minShortFloat` to filter by minimum short float percentage.
4. Click **Start**. Results are structured short interest records with all key metrics.

***

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `mode` | string | `"screener"` | `screener` (find stocks by threshold) or `tickers` (look up specific stocks) |
| `tickers` | string | `""` | Comma-separated tickers for `tickers` mode (e.g. `"GME,AMC,BBBY"`) |
| `minShortFloat` | number | `20` | Minimum short float % for screener mode |
| `maxResults` | number | `25` | Maximum records to return |
| `sortBy` | string | `"short_float_pct"` | Sort field: `short_float_pct`, `days_to_cover`, `short_interest_change_pct` |

***

### Output

```json
{
  "ticker": "GME",
  "company_name": "GameStop Corp.",
  "short_float_pct": 23.8,
  "days_to_cover": 4.2,
  "shares_short": 62000000,
  "shares_short_prior": 58000000,
  "short_interest_change_pct": 6.9,
  "float_shares": 260000000,
  "market_cap": 5200000000,
  "price": 20.0,
  "price_change_pct": 3.5,
  "volume": 4500000,
  "avg_volume": 3800000,
  "sector": "Consumer Cyclical"
}
```

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `ticker` | string | Stock ticker symbol |
| `company_name` | string | Company name |
| `short_float_pct` | float | Short interest as % of float (key metric) |
| `days_to_cover` | float | Shares short ÷ avg daily volume (how many days to cover) |
| `shares_short` | integer | Total shares currently sold short |
| `shares_short_prior` | integer | Shares short in the prior FINRA reporting period |
| `short_interest_change_pct` | float | Month-over-month change in shares short |
| `float_shares` | integer | Total tradeable float shares |
| `market_cap` | float | Market capitalization in USD |
| `price` | float | Current stock price |
| `price_change_pct` | float | Today's price change % |
| `volume` | integer | Today's trading volume |
| `avg_volume` | integer | 3-month average daily volume |
| `sector` | string | GICS sector classification |

***

### Short interest interpretation guide

| Short Float % | Days-to-Cover | Setup |
|---------------|---------------|-------|
| > 30% | > 5 days | High squeeze potential — watch for catalyst |
| 20–30% | 3–5 days | Elevated — momentum can accelerate |
| 10–20% | 1–3 days | Normal elevated — sector-specific |
| < 10% | < 1 day | Low — stock well-understood by market |

**Squeeze signal**: Short float > 25% + Days-to-cover > 4 + Rising volume + Positive catalyst

***

### Data freshness

FINRA requires broker-dealers to report short interest twice monthly (settlement dates around the 15th and end of month). Finviz updates its data within 1-2 days of each FINRA report. Expect **~2 week lag** between actual short positions and displayed data.

***

### Cost estimation

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

| Use case | Records | Estimated cost |
|----------|---------|----------------|
| Top 25 most shorted | 25 | ~$0.50/run |
| Top 100 stocks | 100 | ~$2.00/run |
| Specific 10 tickers | 10 | ~$0.20/run |
| Bi-monthly update | 25 × 2 | ~$1.00/month |

***

### FAQ

**How current is the data?**
FINRA reports short interest bi-monthly. The displayed data is always ~2 weeks behind actual short positions due to this regulatory schedule.

**Does it track naked short selling?**
No — only reported short interest (shares officially borrowed and sold short). Failure-to-deliver (FTD) data from SEC is a different source.

**What's the most reliable squeeze indicator?**
Days-to-cover is often more actionable than short float % alone — a 40% short float with 1M float shares is very different from a 40% short float with 100M shares. Days-to-cover normalizes for liquidity.

***

### Related actors

- [Options Unusual Activity](https://apify.com/gochujang/options-unusual-activity) — Unusual call buying on high-short-interest stocks = squeeze setup
- [Analyst Price Target Tracker](https://apify.com/gochujang/analyst-price-target-tracker) — Analyst upgrades on high-SI stocks trigger violent covering
- [Dark Pool Tracker](https://apify.com/gochujang/dark-pool-tracker) — Dark pool volume can signal institutional covering ahead of squeeze

### Feedback

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

***

**Keywords:** short interest tracker, short float percentage, days to cover ratio, shares short data, Finviz short interest, short squeeze screener, most shorted stocks, stock borrow data, short interest change, NYSE short interest, NASDAQ short interest, high short interest stocks, short seller monitor, short position tracker

# Actor input Schema

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

'screener' to find top shorted stocks above a threshold; 'tickers' to look up specific stocks.

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

Comma or space separated tickers for ticker mode (e.g. GME, AMC, BBBY). Max 50.

## `minShortFloat` (type: `number`):

Only return stocks with short float above this percentage.

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

Maximum number of stock records to return.

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

Field to sort results by (descending).

## Actor input object example

```json
{
  "mode": "screener",
  "tickers": "",
  "minShortFloat": 10,
  "maxResults": 50,
  "sortBy": "short_float_pct"
}
```

# 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/short-interest-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/short-interest-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/short-interest-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gochujang/short-interest-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/IPMvZaJWBAKDgJG65/builds/48HPKFBsew1kVoA1N/openapi.json
