GET/v1/panel

Export the whole short-position panel for a date range

The complete ASIC short-position panel — every security on every trading date in the window — as CSV or NDJSON, in ONE request. Building a research panel from `GetMarketByDate` costs one request per trading date: about 2,500 for a decade, against an anonymous quota of 500 a month. This endpoint replaces that, and is cheaper for us to serve than the pattern it replaces. It is metered at 50 requests against your quota rather than one, because it does considerably more than one request's work. Rows are streamed and ordered by `(date, product_code)`, so a repeated export of the same window is byte-identical and can be diffed or resumed. `reported_short_positions` is a raw SHARE COUNT and `total_product_in_issue` is the denominator behind `percent_shorted` — shares on issue moves with placements and buybacks, so the percent can change with no change in short positioning at all. Because the response streams, the HTTP status is committed before the first row. A failure part-way through therefore cannot be a 5xx: the body ends with a line beginning `#ERROR`. Check for it before trusting a file to be complete. ```bash curl -A 'my-app/1.0' \ 'https://api.shorted.com.au/v1/panel?from=2015-01-01&to=2025-12-31' \ -o panel.csv ```

Parameters

fromqueryRequired

First trading date to include, YYYY-MM-DD.

string <date>
toqueryRequired

Last trading date to include, YYYY-MM-DD.

string <date>
formatquery

Output encoding.

string [csv, ndjson]default: "csv"
codesquery

Comma-separated ASX codes to restrict the export to. Omit for every security. Case-insensitive.

string
as_ofquery

Point-in-time filter, YYYY-MM-DD. Returns only observations that had been PUBLISHED by this date. ASIC publishes T+4, so an export for a historical window otherwise contains up to four days of data nobody could have had on the dates it is dated — lookahead a backtest cannot detect from the outside. Every row also carries available_from, so the lag can be checked rather than assumed. This covers publication LAG only. ASIC can also revise a position after the fact; the store updates in place, so a historical query returns the as-revised value and no field here identifies it as revised.

string <date>
include_zeroquery

Include securities whose reported short position was zero on a date. Off by default, which suits a "most shorted" view; turn it on when building a research universe, since excluding the zero-interest names biases anything that sorts on short interest.

booleandefault: false

Responses

200The panel, streamed.
application/x-ndjson
string

One JSON object per line, same fields as the CSV columns.

text/csv
string

Header row followed by one row per (date, security): date, available_from, product_code, product_name, reported_short_positions, total_product_in_issue, percent_shorted.

400Missing or unparseable from/to, a reversed window, a window longer than 30 years, or an unknown format.
429Rate limit exceeded. This endpoint costs 50 units.
curl -X GET "https://api.shorted.com.au/v1/panel" \
  -H "Content-Type: application/json"