List markets
curl --request GET \
--url https://api.mainnet.kuru.io/api/v1/marketsconst options = {method: 'GET'};
fetch('https://api.mainnet.kuru.io/api/v1/markets', 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"
response = requests.get(url)
print(response.text){
"feedEpoch": null,
"data": [
{
"marketAddress": "0x8121ee960066e4344a213f9ac7502395502aee7a",
"symbol": "WETHUSDC",
"baseToken": {
"tokenAddress": "0xee8c0e9f1bffb4eb878d8f15f368a02a35481242",
"name": "",
"symbol": "WETH",
"decimals": 18,
"logoUrl": "https://d1zzuytetv7tb9.cloudfront.net/WETH.png",
"description": null,
"websiteUrl": null,
"verified": false,
"contractRenounced": false,
"isErc20": true,
"isMintable": true,
"isStrict": false,
"firstPoolAddress": "0x8121ee960066e4344a213f9ac7502395502aee7a"
},
"quoteToken": {
"tokenAddress": "0x754704bc059f8c67012fed69bc8a327a5aafb603",
"name": "",
"symbol": "USDC",
"decimals": 6,
"logoUrl": "https://d1zzuytetv7tb9.cloudfront.net/USDC.png",
"description": null,
"websiteUrl": null,
"verified": false,
"contractRenounced": false,
"isErc20": true,
"isMintable": true,
"isStrict": false,
"firstPoolAddress": null
},
"status": "active",
"pricePrecision": "10000",
"sizePrecision": "10000000000",
"tickSize": "100",
"minQuoteNotionalX18": "10000000000000000000",
"takerFeePps": 100000,
"makerFeePps": 100000,
"createdAt": 1792022400,
"lastPrice": null,
"priceChange24hPct": null,
"volume24h": "0",
"tradeCount24h": 0
}
],
"pagination": {
"nextCursor": "<opaque continuation cursor>"
}
}
Data Source REST methods
List markets
Browse spot markets and trailing 24-hour statistics.
GET
/
api
/
v1
/
markets
List markets
curl --request GET \
--url https://api.mainnet.kuru.io/api/v1/marketsconst options = {method: 'GET'};
fetch('https://api.mainnet.kuru.io/api/v1/markets', 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"
response = requests.get(url)
print(response.text){
"feedEpoch": null,
"data": [
{
"marketAddress": "0x8121ee960066e4344a213f9ac7502395502aee7a",
"symbol": "WETHUSDC",
"baseToken": {
"tokenAddress": "0xee8c0e9f1bffb4eb878d8f15f368a02a35481242",
"name": "",
"symbol": "WETH",
"decimals": 18,
"logoUrl": "https://d1zzuytetv7tb9.cloudfront.net/WETH.png",
"description": null,
"websiteUrl": null,
"verified": false,
"contractRenounced": false,
"isErc20": true,
"isMintable": true,
"isStrict": false,
"firstPoolAddress": "0x8121ee960066e4344a213f9ac7502395502aee7a"
},
"quoteToken": {
"tokenAddress": "0x754704bc059f8c67012fed69bc8a327a5aafb603",
"name": "",
"symbol": "USDC",
"decimals": 6,
"logoUrl": "https://d1zzuytetv7tb9.cloudfront.net/USDC.png",
"description": null,
"websiteUrl": null,
"verified": false,
"contractRenounced": false,
"isErc20": true,
"isMintable": true,
"isStrict": false,
"firstPoolAddress": null
},
"status": "active",
"pricePrecision": "10000",
"sizePrecision": "10000000000",
"tickSize": "100",
"minQuoteNotionalX18": "10000000000000000000",
"takerFeePps": 100000,
"makerFeePps": 100000,
"createdAt": 1792022400,
"lastPrice": null,
"priceChange24hPct": null,
"volume24h": "0",
"tradeCount24h": 0
}
],
"pagination": {
"nextCursor": "<opaque continuation cursor>"
}
}
The example below shows the first WETHUSDC result from a mainnet request with
status=active&limit=1 on 17 October 2026. The continuation cursor is represented schematically because cursors expire; always use the current response’s pagination.nextCursor.string
default:"active"
active, paused, or all.integer
default:"100"
Page size from
1 through 500.string
Opaque exclusive continuation cursor from
pagination.nextCursor.null
required
Catalog responses are not Exchange Gateway replay cuts.
array
required
Markets ordered by creation time and then market address.
string
required
Lowercase 20-byte market contract address.
string
required
Display symbol for the market pair.
object
required
object
required
string
required
Current market status:
active or paused.string
required
Integer precision used to interpret native order price ticks.
string
required
Integer precision used to interpret native base sizes.
string
required
Minimum price-tick increment in native price-precision units.
string
required
Minimum quote notional scaled by
1e18.integer
required
Configured market taker fee rate in PPS, where
10,000,000 represents
100%. This is a rate, not a charged fee amount. Zero means no configured fee.integer
required
Configured market maker fee rate in PPS, where
10,000,000 represents
100%. This is a rate, not a charged fee amount. Zero means no configured fee.integer
required
Market creation time in Unix seconds.
string | null
required
Price from the 24-hour summary when available; otherwise the market’s latest raw trade price, with no timestamp cutoff. Returned in market price precision (pp), or
null when neither source has a price. The 24-hour statistics retain their existing window.string | null
required
Rolling 24-hour decimal price-change ratio. For example,
"0.01" means one percent.string
required
Rolling 24-hour quote volume scaled by
1e18.integer
required
Number of fills included in the rolling 24-hour window.
object
required
Pagination metadata for this page.
string | null
required
Opaque continuation cursor, or
null when no continuation is available.{
"feedEpoch": null,
"data": [
{
"marketAddress": "0x8121ee960066e4344a213f9ac7502395502aee7a",
"symbol": "WETHUSDC",
"baseToken": {
"tokenAddress": "0xee8c0e9f1bffb4eb878d8f15f368a02a35481242",
"name": "",
"symbol": "WETH",
"decimals": 18,
"logoUrl": "https://d1zzuytetv7tb9.cloudfront.net/WETH.png",
"description": null,
"websiteUrl": null,
"verified": false,
"contractRenounced": false,
"isErc20": true,
"isMintable": true,
"isStrict": false,
"firstPoolAddress": "0x8121ee960066e4344a213f9ac7502395502aee7a"
},
"quoteToken": {
"tokenAddress": "0x754704bc059f8c67012fed69bc8a327a5aafb603",
"name": "",
"symbol": "USDC",
"decimals": 6,
"logoUrl": "https://d1zzuytetv7tb9.cloudfront.net/USDC.png",
"description": null,
"websiteUrl": null,
"verified": false,
"contractRenounced": false,
"isErc20": true,
"isMintable": true,
"isStrict": false,
"firstPoolAddress": null
},
"status": "active",
"pricePrecision": "10000",
"sizePrecision": "10000000000",
"tickSize": "100",
"minQuoteNotionalX18": "10000000000000000000",
"takerFeePps": 100000,
"makerFeePps": 100000,
"createdAt": 1792022400,
"lastPrice": null,
"priceChange24hPct": null,
"volume24h": "0",
"tradeCount24h": 0
}
],
"pagination": {
"nextCursor": "<opaque continuation cursor>"
}
}