GET
/v1/last/close/:venue/:symbolPrevious daily close
Get the close price for the most recent completed trading day across stocks, crypto, FX, and commodities, including the close, the UTC day it belongs to, symbol, and timestamp.
- Auth
X-API-Keyheader- Format
- JSON
- Rate limits
- Per-key, see limits
Example
request · shell
curl -H "X-API-Key: $KEY" \
"https://api.sifting.io/v1/last/close/crypto/BTCUSD"200OKapplication/json
{ "s": "BTCUSD", "c": "67450.5", "d": "2026-06-30", "t": 1751241600000}Loading runner…
First load onlyParameters
ParameterDescription
Parameter
venuerequiredenum · path- stocks | crypto | forex | commodities.
symbolrequiredstring · path- 6–12 alphanumeric characters, no separators (e.g. BTCUSD). Case-insensitive.
Response fields
FieldDescription
Field
sstring- Symbol.
cstring- Close price, precision-normalized.
dstring (YYYY-MM-DD)- UTC day the close belongs to.
tint64 (epoch ms)- Timestamp of the close, Unix epoch milliseconds.
Reference
Close price is a string, cast before mathDescription
Close price is a string, cast before math
- Why
- c (close price) comes back as a JSON string to preserve exact precision. Only t is a number (epoch ms).
- The trap
- Math on the raw field breaks: Python raises TypeError, JavaScript + silently joins the strings instead of adding.
- Python
- close = float(data["c"])
- JavaScript
- const close = Number(data.c);
- cURL / jq
- Cast in jq too: jq '.c | tonumber'
- Historical bars differ
- Bars from /v1/hist/* already return t, o, h, l, c, v as plain numbers, do not cast those.
Error responses
StatusCodeMeaning
- 400
invalid_symbolSymbol fails format validation for the venue.
{ "error": "invalid symbol for venue" } - 404
unknown_venueVenue path segment isn't one of stocks | crypto | forex | commodities.
{ "error": "unknown venue" } - 404
symbol_not_foundValid venue and symbol, but no close is available for it yet.
{ "error": "symbol not found" }