curl --request POST \
--url https://api.aries.com/v1/etb/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"symbols": [
"AAPL",
"GME",
"msft"
]
}
'{
"results": {
"AAPL": true,
"GME": false,
"MSFT": true
},
"count": 3
}Easy-to-Borrow Search
Checks borrowability for a batch of symbols and returns one true/false answer per symbol. true means easy to borrow (a short sale needs no extra step); false means hard to borrow (the symbol needs a locate first).
Use Case: Decide whether to offer a short-sell action on a ticker page without downloading the full easy-to-borrow list.
curl --request POST \
--url https://api.aries.com/v1/etb/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"symbols": [
"AAPL",
"GME",
"msft"
]
}
'{
"results": {
"AAPL": true,
"GME": false,
"MSFT": true
},
"count": 3
}Overview
This endpoint answers borrowability for a batch of symbols against today’s easy-to-borrow list. Use it rather than fetching the whole list when you only care about a handful of symbols. It is aPOST rather than a GET because a symbol list has no practical URL-length limit.
curl -X POST "https://api.aries.com/v1/etb/search" \
-H "Authorization: Bearer your-token" \
-H "Content-Type: application/json" \
-d '{"symbols":["AAPL","GME","msft"]}'
{
"results": { "AAPL": true, "GME": false, "MSFT": true },
"count": 3
}
| Field | Type | Notes |
|---|---|---|
results | object<string, boolean> | Keyed by the normalized (uppercase) symbol. true = easy to borrow |
count | integer | Number of entries in results |
Normalization and duplicates
Symbols are uppercased and trimmed before the lookup, and duplicates collapse. Asking for["aapl", " AAPL ", "AAPL"] returns one entry:
{
"results": { "AAPL": true },
"count": 1
}
count can be lower than the number of symbols you sent. Read answers out of results by uppercase key — never by zipping results against your request array by index. This is the single easiest thing to get wrong when integrating.Limits
| Limit | Value | Exceeded → |
|---|---|---|
| Symbols per request | 1000 | 400 TOO_MANY_SYMBOLS |
| Request body size | 1 MiB | 400 INVALID_BODY |
Errors
All errors share one envelope:{
"error": {
"type": "validation_error",
"code": "MISSING_SYMBOLS",
"message": "symbols is required and must not be empty"
}
}
| Status | code | Cause |
|---|---|---|
400 | MISSING_BODY | Empty request body |
400 | INVALID_BODY | Malformed JSON, or body over 1 MiB |
400 | MISSING_SYMBOLS | symbols absent, empty, or every entry blank after trimming |
400 | TOO_MANY_SYMBOLS | More than 1000 symbols |
500 | INTERNAL_ERROR | The list store is unreachable |
404. A symbol that is not on the list is a valid false answer, not a missing resource. A query of only blanks — {"symbols": ["", " "]} — is a 400 rather than a 200 with empty results, so an unusable request is never answered with something that looks like a real result.Interpreting the result
Afalse answer means the symbol is hard to borrow: it is not on today’s list, and shares must be located before a short sale. Treat it as “this needs a locate first”, not “this cannot be shorted at all”. Requesting a locate is not currently supported through the API.
This endpoint reads the same underlying set as GET /v1/etb, so the two can never disagree. The set is replaced once per trading day before market open and does not change intraday — see Freshness.Authorizations
OAuth2 Bearer token: obtain an access token from the token endpoint and send it in the Authorization header.
Body
The symbols to check. 1–1000 entries, case-insensitive, whitespace-trimmed.
Batch borrowability query. Symbols are uppercased and trimmed before the lookup, and duplicates that normalize to the same symbol collapse into a single entry in the response.
Symbols to check. Case-insensitive and whitespace-trimmed, so aapl, AAPL, and AAPL are the same symbol and return one entry. A request of only blank strings is rejected with 400 MISSING_SYMBOLS rather than answered with an empty result.
1 - 1000 elements["AAPL", "GME", "msft"]
Response
Borrowability answers keyed by normalized (uppercase) symbol. There is no 404: a symbol that is not on the list is a valid false answer, not a missing resource.
Borrowability answers keyed by normalized (uppercase) symbol.
One entry per distinct normalized symbol. true means easy to borrow (a short sale needs no extra step); false means hard to borrow (the symbol is not on today's list and needs a locate first). Read answers out of this object by uppercase key — do not match them against your request array by index, because normalization collapses duplicates.
Show child attributes
Show child attributes
{ "AAPL": true, "GME": false, "MSFT": true }
Number of entries in results. This can be lower than the number of symbols you sent, because duplicates collapse after normalization.
Was this page helpful?