Recent Public Trades
Description
Returns the most recent fills for a market, newest first. Each entry represents one completed trade and shows the taker side.
HTTP Request
GET /spot/trades (public — no auth required)
Weight
0 — public market-data endpoints have no per-IP weight limit today (MVP).
Request Parameters
| Name | Type | Required | Description |
|---|---|---|---|
symbol | STRING | YES | Market id (e.g. DFUSDT). Case-sensitive. See GET /spot/markets. |
limit | NUMBER | NO | Number of trades to return. Default 50, range 1–1000. |
Response Example
200 OK
[
{
"trade_id": "9f2a1c4e-5b67-4d8a-bf93-2e1f4a6c8d10",
"symbol": "DFUSDT",
"side": "buy",
"price": "0.5000",
"quantity": "30",
"ts": 1778400000123
},
{
"trade_id": "3e761331-0cec-481c-81be-f62ab572757b",
"symbol": "DFUSDT",
"side": "sell",
"price": "0.4999",
"quantity": "50",
"ts": 1778399990456
}
]
| Field | Notes |
|---|---|
trade_id | Server-generated UUID uniquely identifying this fill. |
side | The taker side of the fill — the side that initiated the cross. |
ts | Unix milliseconds. This is the only millisecond-precision timestamp in the spot REST API; all other timestamps use unix seconds. |
Error Responses
| HTTP | error |
|---|---|
500 | DB_ERROR |
Full list: Error Codes.
Code Examples
cURL
curl -s "https://api-sepolia.p99.world/api/v1/spot/trades?symbol=DFUSDT&limit=5"
Python
import requests
BASE = "https://api-sepolia.p99.world/api/v1"
trades = requests.get(f"{BASE}/spot/trades", params={"symbol": "DFUSDT", "limit": 5}).json()
for t in trades:
print(t["trade_id"], t["side"], t["price"], "×", t["quantity"], "@", t["ts"], "ms")