Get market trades
curl --request GET \
--url https://api.mainnet.kuru.io/api/v1/markets/{marketAddress}/tradesconst options = {method: 'GET'};
fetch('https://api.mainnet.kuru.io/api/v1/markets/{marketAddress}/trades', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.mainnet.kuru.io/api/v1/markets/{marketAddress}/trades"
response = requests.get(url)
print(response.text){
"feedEpoch": 0,
"marketSeq": null,
"data": [],
"pagination": {
"nextCursor": null
}
}
Data Source REST methods
List market trades
Read finalized fills and obtain the market WebSocket cursor.
GET
/
api
/
v1
/
markets
/
{marketAddress}
/
trades
Get market trades
curl --request GET \
--url https://api.mainnet.kuru.io/api/v1/markets/{marketAddress}/tradesconst options = {method: 'GET'};
fetch('https://api.mainnet.kuru.io/api/v1/markets/{marketAddress}/trades', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.mainnet.kuru.io/api/v1/markets/{marketAddress}/trades"
response = requests.get(url)
print(response.text){
"feedEpoch": 0,
"marketSeq": null,
"data": [],
"pagination": {
"nextCursor": null
}
}
The response below was observed for WETHUSDC on mainnet on 17 October 2026. Trades and replay cuts change as new blocks finalize; query the selected server for current state.
(marketAddress, tradeId, recordIdx).
string
required
Lowercase 20-byte market contract address.
integer
default:"100"
Page size from
1 through 1000.string
Opaque exclusive continuation cursor from
pagination.nextCursor.integer
Inclusive Unix time in seconds.
integer
Inclusive Unix time in seconds. When both bounds are present,
to must be
greater than from.integer | null
required
Feed epoch containing
marketSeq.string | null
required
Finalized market sequence covered by the materialized response.
array
required
Trade fills ordered newest first by block timestamp, block number,
transaction index, log index, and record index.
string | null
required
Opaque continuation cursor, or
null when no continuation is available.price is an integer in market price precision (pp). filledSize and remainingSize use the market’s native size
precision. isBuy=true means the taker bought the base token. blockTimestamp is
Unix time in seconds.
When both cursor fields are non-null, install this page and subscribe to
trades@f with the same feedEpoch and marketSeq.
{
"feedEpoch": 0,
"marketSeq": null,
"data": [],
"pagination": {
"nextCursor": null
}
}