FINRA short volume
One ticker day of short-sale volume, total volume and off-exchange ratios.
One row is
One ticker day of short-sale volume, total volume and off-exchange ratios
Example response
Trimmed real output. No key needed.
GET /v1/datasets/short-volume/sample
Dates reflect the example, not current coverage.
{
"data": {
"version": 1,
"symbol": "AAPL",
"finraSymbol": "AAPL",
"scope": "nms",
"status": "partial",
"fetchedAt": "2026-09-22T12:00:00.000Z",
"asOf": "2026-09-21",
"sourceAsOf": "2026-09-21",
"source": {
"name": "FINRA consolidated NMS off-exchange volume",
"url": "https://www.finra.org/finra-data/browse-catalog/short-sale-volume",
"cadence": "Daily, no later than 18:00 America/New_York; later corrections possible"
},
"latest": {
"date": "2026-09-21",
"shortVolume": "5442428.346356",
"shortExemptVolume": "23826",
"totalVolume": "12178460.751537",
"ratioPercent": 44.68896732,
"markets": [
"B",
"Q",
"N"
],
"fetchedAt": "2026-09-22T00:00:00.000Z",
"sourceUrl": "https://cdn.finra.org/equity/regsho/daily/CNMSshvol20260921.txt",
"refreshFailed": false,
"unavailableReason": null,
"changePp": null,
"previousDate": null,
"percentile": {
"value": null,
"rank": null,
"sampleCount": 1,
"windowStart": "2025-09-21",
"windowEnd": "2026-09-21",
"historyStart": "2026-09-21",
"historyEnd": "2026-09-21",
"completeWindow": false,
"min": 44.68896732,
"max": 44.68896732,
"mean": 44.68896732
}
},
"coverage": {
"windowStart": "2025-09-21",
"windowEnd": "2026-09-21",
"expectedFiles": 1,
"ingestedFiles": 1,
"missingFiles": 0,
"expectedMonths": 13,
"discoveredMonths": 0,
"completeWindow": false
},
"history": [
{
"date": "2026-09-21",
"shortVolume": "5442428.346356",
"shortExemptVolume": "23826",
"totalVolume": "12178460.751537",
"ratioPercent": 44.68896732,
"markets": [
"B",
"Q",
"N"
],
"fetchedAt": "2026-09-22T00:00:00.000Z",
"sourceUrl": "https://cdn.finra.org/equity/regsho/daily/CNMSshvol20260921.txt",
"refreshFailed": false,
"unavailableReason": null
}
],
"warnings": [
"Publication-index discovery is incomplete; the one-year file coverage is still being established.",
"At least 20 observed ratios are required for a percentile.",
"This symbol has limited usable history; percentile sample count and actual history dates remain explicit."
]
},
"meta": {
"dataset": "short-volume",
"asOf": "2026-09-21",
"source": [
{
"id": "short-volume",
"attribution": "Public trading activity reports",
"licence": "Use subject to Gloom Datasets terms"
}
],
"historyStarts": "2026-09-21",
"coverage": {
"windowStart": "2025-09-21",
"windowEnd": "2026-09-21",
"expectedFiles": 1,
"ingestedFiles": 1,
"missingFiles": 0,
"expectedMonths": 13,
"discoveredMonths": 0,
"completeWindow": false
},
"lastUpdated": "2026-09-22T00:00:00.000Z",
"disclaimer": "Short-sale volume is not short interest and does not measure open short positions."
}
}Routes
Base URL https://api.gloom.sh. Send a key with each call; the key's account needs a plan.
GET /v1/short-volume/{symbol}2 credits
Daily off-exchange short-sale volume and ratios. Reads the existing dataset service and needs a key on an account with a plan; every plan reads every live dataset in full. Cached market reads can refresh their source data. Unknown, empty and repeated parameters are rejected. History and coverage metadata are null when the stored service cannot establish them.
- Parameter
symbol- In
path, required
- Type
string
^[A-Za-z0-9.:-]{1,32}$- Notes
Company symbol; normalized to uppercase.
- Parameter
scope- In
query
- Type
nms,otc
- Parameter
limit- In
query
- Type
integer 1 to 1000
| Parameter | In | Type | Notes |
|---|---|---|---|
| path, required | string | Company symbol; normalized to uppercase. |
| query |
| |
| query | integer 1 to 1000 |
- Credits: 2 (history x1)
- Plans: Basic, Desk, Enterprise
Meta fields
- Field
dataset- Here
The dataset id
- In the example
"short-volume"
- Field
asOf- Here
The observation date established by the service; otherwise null
- In the example
"2026-09-21"
- Field
source- Here
Attribution and usage terms of each source
- In the example
1 source
- Field
historyStarts- Here
Earliest stored history when established by the service; otherwise null.
- In the example
"2026-09-21"
- Field
coverage- Here
Service-established coverage; null when unavailable.
- In the example
{"windowStart":"2025-09-21","windowEnd":"2026-09-21","expectedFiles":1,"ingestedFiles":1,"missingFiles":0,"expectedMonths":13,"discoveredMonths":0,"completeWindow":false}
- Field
lastUpdated- Here
The source update time established by the service; otherwise null
- In the example
"2026-09-22T00:00:00.000Z"
| Field | Here | In the example |
|---|---|---|
| The dataset id |
|
| The observation date established by the service; otherwise null |
|
| Attribution and usage terms of each source | 1 source |
| Earliest stored history when established by the service; otherwise null. |
|
| Service-established coverage; null when unavailable. |
|
| The source update time established by the service; otherwise null |
|
Sources
- Source
Public trading activity reports
- Usage terms
Use subject to Gloom Datasets terms
| Source | Usage terms |
|---|---|
Public trading activity reports | Use subject to Gloom Datasets terms |
Errors
These routes can answer 400, 401, 402, 403, 404, 429, 503. See Errors for the codes.
Gloom Datasets reads stored data only: a call never starts a collection.