DEX API
We have two main APIs to get DEX trading data.
- DEXTrades
- DEXTradeByTokens
To learn the difference between two APIs, please check this doc.
Get all the DEXs info on a Ethereum network
This query will fetch you all the DEXs info for the selected network. You can test the query here.
query DexMarkets($network: evm_network) {
EVM(network: $network) {
DEXTradeByTokens {
Trade {
Dex {
ProtocolFamily
}
}
buyers: uniq(of: Trade_Buyer)
sellers: uniq(of: Trade_Sender)
count(if: {Trade: {Side: {Type: {is: buy}}}})
}
}
}
{
"network": "eth"
}
You can check the data here on DEXrabbit.
Get a specific DEX statistics
This query will fetch you a specific DEX stats for the selected network. You can test the query here.
query DexMarkets($network: evm_network, $market: String) {
EVM(network: $network) {
DEXTradeByTokens(
orderBy: {ascendingByField: "Block_Time"}
where: {Trade: {Dex: {ProtocolFamily: {is: $market}}}}
) {
Block {
Time(interval: {count: 1, in: hours})
}
trades: count
buyers: uniq(of: Trade_Buyer)
sellers: uniq(of: Trade_Sender)
tokens: uniq(of: Trade_Currency_SmartContract)
}
}
}
{
"market": "Uniswap",
"network": "eth"
}
You can check the data here on DEXrabbit.
Get All Trading Pairs on a particular DEX
This query will fetch you all trading pairs on a particular DEX for the selected network. You can test the query here.
query DexMarkets($network: evm_network, $market: String, $time_10min_ago: DateTime, $time_1h_ago: DateTime, $time_3h_ago: DateTime) {
EVM(network: $network) {
DEXTradeByTokens(
orderBy: {descendingByField: "usd"}
where: {Trade: {Dex: {ProtocolFamily: {is: $market}}}, Block: {Time: {after: $time_3h_ago}}}
limit: {count: 200}
) {
Trade {
Currency {
Symbol
Name
SmartContract
Fungible
}
Side {
Currency {
Symbol
Name
SmartContract
}
}
price_usd: PriceInUSD(maximum: Block_Number)
price_last: Price(maximum: Block_Number)
price_10min_ago: Price(
maximum: Block_Number
if: {Block: {Time: {before: $time_10min_ago}}}
)
price_1h_ago: Price(
maximum: Block_Number
if: {Block: {Time: {before: $time_1h_ago}}}
)
price_3h_ago: PriceInUSD(minimum: Block_Number)
}
usd: sum(of: Trade_AmountInUSD)
count
}
}
}
{
"market": "Uniswap",
"network": "eth",
"time_10min_ago": "2024-09-22T13:21:39Z",
"time_1h_ago": "2024-09-22T12:31:39Z",
"time_3h_ago": "2024-09-22T10:31:39Z"
}
You can check the data here on DEXrabbit.
Top Traders on a DEX
This query will fetch you Top Traders on a particular DEX for the selected network. You can test the query here.
query DexMarkets($network: evm_network, $market: String) {
EVM(network: $network) {
DEXTradeByTokens(
orderBy: {descendingByField: "volumeUsd"}
limit: {count: 100}
where: {Trade: {Dex: {ProtocolFamily: {is: $market}}}}
) {
Trade {
Dex {
OwnerAddress
ProtocolFamily
ProtocolName
}
Currency {
SmartContract
Symbol
Name
}
Side {
Currency {
SmartContract
Symbol
Name
}
}
}
volumeUsd: sum(of: Trade_Side_AmountInUSD)
}
}
}
{
"market": "Uniswap",
"network": "eth"
}
You can check the data here on DEXrabbit.
Latest Trades on a DEX
This query will fetch you latest trades on a particular DEX for the selected network. You can test the query here.
query LatestTrades($network: evm_network, $market: String) {
EVM(network: $network) {
DEXTradeByTokens(
orderBy: {descending: Block_Time}
limit: {count: 50}
where: {Trade: {Dex: {ProtocolFamily: {is: $market}}}}
) {
Block {
Time
}
Transaction {
Hash
}
Trade {
Dex {
OwnerAddress
ProtocolFamily
ProtocolName
}
AmountInUSD
Price
Amount
Side {
Type
Currency {
Symbol
SmartContract
Name
}
AmountInUSD
Amount
}
Currency {
Symbol
SmartContract
Name
}
}
}
}
}
{
"market": "Uniswap",
"network": "eth"
}
You can check the data here on DEXrabbit.