# Nasdaq Short Interest Scraper (`confidential_gnat/nasdaq-short-interest-scraper`) Actor

Scrapes short interest history from Nasdaq (nasdaq.com) for any Nasdaq-listed stock or ETF, including settlement date, short interest, average daily volume, days to cover and period-over-period change.

- **URL**: https://apify.com/confidential_gnat/nasdaq-short-interest-scraper.md
- **Developed by:** [ActorFlow](https://apify.com/confidential_gnat) (community)
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

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/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

## Nasdaq Short Interest Scraper

**Scrape short interest history from Nasdaq (nasdaq.com)** for any Nasdaq-listed stock or ETF. Each row gives the settlement date, short interest, average daily volume, days to cover and the change versus the previous period, exported as **JSON, CSV or Excel** and callable as an **API**. Enter a ticker, press Start.

**Target website:** [nasdaq.com](https://www.nasdaq.com)

### ✨ Features of this Nasdaq short interest scraper

- **Short interest history extraction** — up to 24 semi-monthly settlements per symbol, newest first. Nasdaq only provides the last 12 months of data, so older history is not available.
- **Period-over-period change** — absolute change and percentage change versus the previous settlement are pre-computed.
- **Spreadsheet-ready dates** — every settlement carries both the original MM/DD/YYYY date and an ISO YYYY-MM-DD date.
- **Multiple symbols and URLs** — pass a list of tickers, or paste nasdaq.com quote pages.
- **Stock and ETF support** — choose the asset class, or let it be detected from a pasted URL.
- **Incremental cache** — name a cache project and repeat runs return only settlement dates you have not collected yet.
- **Clear "no data" rows** — symbols Nasdaq has no short interest for (such as NYSE-listed tickers) return an explicit message instead of silently disappearing.
- **Proxy support** — optional, off by default.
- **No browser required** — runs are fast and cheap.

### 🚀 How to scrape Nasdaq short interest in 5 steps

1. [Sign up](https://apify.com/sign-up) for a free Apify account — includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Enter one or more **Ticker symbols** (or paste Nasdaq quote URLs).
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### 💰 Pricing

This actor uses **pay-per-result** billing based on the compute units a run consumes.

- New Apify accounts include **$5 of free monthly credit**.
- It costs significantly less to run than browser-based scrapers.
- Proxies are disabled by default, which keeps runs cheapest.

### 🔧 Input configuration

| Field                                      | Type    | Required | Default  | Description                                                                                                                                                            |
| ------------------------------------------ | ------- | -------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ticker symbols (`symbols`)                 | array   | —        | AAPL     | Nasdaq-listed tickers, for example AAPL, MSFT, QQQ.                                                                                                                    |
| Nasdaq quote URLs (`startUrls`)            | array   | —        | —        | Optional nasdaq.com quote pages. Stock or ETF is detected from the URL.                                                                                                |
| Asset class (`assetClass`)                 | string  | —        | stocks   | `stocks` or `etf`, applied to the tickers above.                                                                                                                       |
| Max settlements per symbol (`maxItems`)    | integer | —        | 5        | Settlements returned per symbol, newest first. Nasdaq only provides the last 12 months (up to 24 settlements), so that is the maximum. 0 returns everything available. |
| Cache project name (`cacheProjectName`)    | string  | —        | —        | Remember scraped settlement dates across runs so repeat runs return only new ones.                                                                                     |
| Proxy configuration (`proxyConfiguration`) | object  | —        | no proxy | Optional proxy settings.                                                                                                                                               |

**Supported URL types:**

- `https://www.nasdaq.com/market-activity/stocks/aapl/short-interest`
- `https://www.nasdaq.com/market-activity/etf/qqq/short-interest`

### 📦 Nasdaq short interest scraper output data

Results are available as JSON, CSV or Excel with the fields `symbol`, `assetClass`, `settlement_date`, `settlement_date_iso`, `short_interest`, `avg_daily_volume`, `days_to_cover`, `short_interest_change`, `change`, `previous_settlement_date`, `url` and `scrapedAt`. Symbols with no data return `symbol`, `assetClass`, `message`, `url` and `scrapedAt`. The dataset has 2 views: **Overview** is a compact table of the key metrics, and **Full short interest details** lists every field.

**Sample output:**

```json
[
    {
        "symbol": "AAPL",
        "assetClass": "stocks",
        "settlement_date": "09/15/2026",
        "settlement_date_iso": "2026-09-15",
        "short_interest": 128753092,
        "avg_daily_volume": 45135477,
        "days_to_cover": 2.852592,
        "short_interest_change": -10996005,
        "change": -7.87,
        "previous_settlement_date": "08/31/2026",
        "url": "https://www.nasdaq.com/market-activity/stocks/aapl/short-interest",
        "scrapedAt": "2026-10-01T14:23:10.000Z"
    },
    {
        "symbol": "AAPL",
        "assetClass": "stocks",
        "settlement_date": "08/31/2026",
        "settlement_date_iso": "2026-08-31",
        "short_interest": 139749097,
        "avg_daily_volume": 39537335,
        "days_to_cover": 3.534611,
        "short_interest_change": 23421344,
        "change": 20.13,
        "previous_settlement_date": "08/14/2026",
        "url": "https://www.nasdaq.com/market-activity/stocks/aapl/short-interest",
        "scrapedAt": "2026-10-01T14:23:10.000Z"
    }
]
```

### 🐍 How to scrape Nasdaq short interest with Python, JavaScript or the API

Run the actor programmatically with the official Apify clients. Replace `<YOUR_API_TOKEN>` with the token from your [Apify Console](https://console.apify.com/account/integrations).

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("<username>/nasdaq-short-interest-scraper").call(run_input={
    "symbols": ["AAPL", "MSFT"],
    "maxItems": 5,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript** (`npm install apify-client`):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('<username>/nasdaq-short-interest-scraper').call({
    symbols: ['AAPL', 'MSFT'],
    maxItems: 5,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**cURL:**

```bash
curl -X POST "https://api.apify.com/v2/acts/<username>~nasdaq-short-interest-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"symbols": ["AAPL", "MSFT"], "maxItems": 5}'
```

### 💡 What you can use Nasdaq short interest data for

- Screening for heavily shorted stocks and squeeze candidates
- Tracking how short interest trends ahead of earnings
- Comparing days to cover across a watchlist
- Feeding short interest into quant models and dashboards
- Monitoring ETF short positioning over time

Traders, quantitative analysts, fintech builders and financial researchers typically use this data.

### ⚠️ Limitations & known issues

- **Nasdaq-listed only** — Nasdaq publishes short interest for Nasdaq-listed securities only. NYSE-listed tickers such as SPY return a "not available" row.
- **12-month window** — Nasdaq only provides the last 12 months of short interest data, which is at most 24 settlements per symbol. Older history is not available from this source.
- **Semi-monthly data** — short interest is reported twice a month, so it is not a real-time signal.

### ❓ Frequently asked questions

#### Can I scrape Nasdaq legally?

The actor only collects data that is already publicly visible on nasdaq.com — no login, paywall, or private content is accessed. Scraping publicly available data is generally considered lawful (see *hiQ Labs v. LinkedIn*), but you are responsible for complying with Nasdaq's Terms of Service and applicable laws.

#### Why does my ticker return "Short interest is not available"?

Nasdaq only publishes short interest for Nasdaq-listed securities. NYSE and other exchange-listed tickers, including many ETFs, have no data.

#### How many settlements can I get per symbol?

Up to 24, which is the 12 months of semi-monthly reports Nasdaq provides. Nasdaq does not offer older history. Set Max settlements per symbol to 0 to return everything available.

#### Do I need a proxy to scrape nasdaq.com?

No. The actor works without a proxy by default. You can enable one in the Proxy configuration field if you run into blocks.

#### How do I scrape Nasdaq short interest with Python?

Use the Apify client shown above: call the actor with a list of symbols and iterate over the dataset items.

#### Can I run this Nasdaq scraper on a schedule?

Yes. Use Apify Schedules to run it after each bi-monthly settlement release. Set a Cache project name and each scheduled run returns only the settlement dates you have not collected yet.

#### What output formats are supported?

JSON, CSV, Excel, XML and RSS, either from the **Output** tab or through the Apify API.

### 🔗 Other actors you may find useful

| Scraper | Description |
|----------|-------------|
| [🏛️ BidNet Direct Open Bid Opportunities Scraper](https://apify.com/confidential_gnat/bidnetdirect-open-bid-opportunities-scraper) | Scrapes open government bid and RFP solicitations from BidNet Direct, including title, publication date, closing date and other relevant data. |
| [🏛️ BidNet Direct Closed Bid Opportunities Scraper](https://apify.com/confidential_gnat/bidnetdirect-closed-bid-opportunities-scraper) | Scrapes closed government bid and RFP solicitations from BidNet Direct, including title, publication date, closing date and other relevant data. |
| [⚖️ Law Library of Ireland Barrister Scraper](https://apify.com/confidential_gnat/lawlibrary-scraper) | Scrapes barrister profiles from the Law Library of Ireland, including name, qualifications, areas of practice, phone, address and email. |
| [🚗 Cheapest Cars & Bids Scraper](https://apify.com/confidential_gnat/cheapest-carsandbids-scraper) | Scrapes the cheapest vehicle listings from Cars & Bids, making it easy to discover the best-value auction deals. |
| [🔍 Incidecoder Scraper](https://apify.com/confidential_gnat/incidecoder-scraper) | Extracts cosmetic ingredient and product information from Incidecoder for research and analysis. |
| [🎟️ Gametime Events Website Scraper](https://apify.com/confidential_gnat/gametime-events-scraper) | Collects event listings, ticket availability, and pricing data from Gametime. |
| [🏠 Rightmove Scraper](https://apify.com/confidential_gnat/riccycaunce-rightmove-scrapy) | Extracts property listings, prices, locations, and other real estate details from Rightmove. |
| [🌐 WHOIS Domain Lookup Scraper](https://apify.com/confidential_gnat/whois-com) | Bulk WHOIS lookups via whois.com, returning registration dates, registrar, name servers, status codes and contact details. |
| [⛪ Church Finder Scraper](https://apify.com/confidential_gnat/churchfinder-scraper) | Finds and extracts church listings and details. |

### 💬 Support & contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/nasdaq-short-interest-scraper/issues/open) or reach out via the [Apify Community Forum](https://community.apify.com/).

You can also find more of our actors on the [Apify Store](https://apify.com/confidential_gnat).

# Actor input Schema

## `symbols` (type: `array`):

Nasdaq-listed tickers to scrape, for example AAPL, MSFT, QQQ. NYSE-listed tickers have no short interest data on Nasdaq.

## `startUrls` (type: `array`):

Optional. Paste nasdaq.com quote pages instead of (or in addition to) tickers, for example https://www.nasdaq.com/market-activity/stocks/aapl/short-interest. Stock or ETF is detected from the URL.

## `assetClass` (type: `string`):

Whether the tickers above are stocks or ETFs. Quote URLs carry their own asset class.

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

Maximum number of settlement dates to return for each symbol, newest first. Nasdaq only provides the last 12 months of data (up to 24 semi-monthly settlements), so no more than that is available. Set to 0 for everything available.

## `cacheProjectName` (type: `string`):

Optional. Name a project to remember which settlement dates have already been scraped across runs, so repeated runs only return newly published ones.

## `proxyConfiguration` (type: `object`):

Proxy settings. Nasdaq's data is reachable without a proxy, so proxies are disabled by default to keep runs cheap.

## Actor input object example

```json
{
  "symbols": [
    "AAPL"
  ],
  "assetClass": "stocks",
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "symbols": [
        "AAPL"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/nasdaq-short-interest-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 = { "symbols": ["AAPL"] }

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/nasdaq-short-interest-scraper").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 '{
  "symbols": [
    "AAPL"
  ]
}' |
apify call confidential_gnat/nasdaq-short-interest-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_gnat/nasdaq-short-interest-scraper"
        }
    }
}
```

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/on6J2g1QbwKDcK6xh/builds/g96SoqNLzv5OYvI3o/openapi.json
