Skip to main content
GET
Get Easy-to-Borrow List

Why borrowability matters

Some US equities cannot be sold short without first borrowing shares. Aries receives a daily list of the symbols that are freely borrowable from its clearing broker, and this endpoint exposes it. The list answers one question: is this symbol freely short-sellable today? Borrowability is a property of the symbol, not of an account — this endpoint takes no account ID and every authenticated caller gets the same answer.

Absence is an answer, not missing data

The list is the complete borrowable universe for the trading day. A symbol not being on it is a positive statement that it is hard to borrow — not “unknown”. Integrators frequently assume the opposite, so treat a missing symbol as a definite HTB result.

Response fields

The order is imposed by the service, so two calls on the same day return the same order. Symbols carrying a leading . (for example .VFV) are non-US listings and are returned as-is.
An empty list is a real 200, not an error. Before the day’s list has loaded, this endpoint returns {"symbols": [], "count": 0}. That means the list is not loaded yet — it does not mean everything is borrowable, and it does not mean nothing is borrowable. Handle count: 0 as “unknown” and retry rather than acting on it.

Response size

The borrowable universe runs to thousands of symbols, so the response can be a few hundred KB. If you only need to check a handful of symbols, use Easy-to-Borrow Search instead of filtering this payload yourself.

Freshness

  • The list is replaced once per trading day, before market open, and does not change intraday.
  • A failed daily update leaves the previous day’s list in place. The list is never emptied on failure, so a stale list is possible but a wrongly-empty one is not.
  • No caching headers are set. If you cache, cache for the trading day and refresh after the next market open.

Choosing between the two endpoints

Fetch the whole list

Use GET /v1/etb when you are building a screener or filtering a large watchlist. Fetch once per trading day and check membership locally.

Check specific symbols

Use POST /v1/etb/search when you only care about a handful of symbols — for example, whether to show a short-sell option on a ticker page.
Both endpoints read the same underlying set, so they can never disagree with each other.
When a symbol comes back as hard to borrow, treat it as “this needs a locate first”, not “this can never be shorted”. Requesting a locate is not currently supported through the API.

Authorizations

Authorization
string
header
required

OAuth2 Bearer token: obtain an access token from the token endpoint and send it in the Authorization header.

Response

The borrowable universe currently in effect. An empty list is a valid 200: before the day's list has loaded this returns {"symbols": [], "count": 0} rather than an error, which means the list is not loaded yet — it must not be read as "nothing is borrowable". No caching headers are set; cache for the trading day and refresh after the next market open.

The complete set of easy-to-borrow symbols in effect for the current trading day. Membership in the list is the whole signal: a symbol on the list can be sold short normally, and a symbol absent from it is hard to borrow. There is no per-symbol status field, quantity, or borrow rate.

symbols
string[]

Every borrowable symbol currently in effect — uppercase, sorted ascending, and free of duplicates. The order is imposed by the service, so two calls on the same day return the same order. Always an array, never null. An empty array means the day's list has not loaded yet, NOT that nothing is borrowable.

count
integer

Number of entries in symbols.