curl --request GET \
--url https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactionsimport requests
url = "https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"transactions": [
{
"id": "<string>",
"log_index": 123,
"transaction_index": 123,
"pool_id": "<string>",
"sender": "<string>",
"recipient": 123,
"token_0": "<string>",
"token_0_symbol": "<string>",
"token_1": "<string>",
"token_1_symbol": "<string>",
"amount_0": "<string>",
"amount_1": "<string>",
"price_0": 123,
"price_1": 123,
"price_0_usd": 123,
"price_1_usd": 123,
"created_at_block_number": 123,
"created_at": "2023-11-07T05:31:56Z"
}
],
"page_info": {
"limit": 123,
"page": 123,
"total_items": 123,
"total_pages": 123
}
}Get transactions of a pool on a network. Paging can be used up to 100 pages.
List recent swaps, liquidity adds, and removes for a pool with page or cursor-based pagination. Paid plans only: Dev, Pro and Enterprise keys on api-pro.dexpaprika.com.
curl --request GET \
--url https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactionsimport requests
url = "https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dexpaprika.com/networks/{network}/pools/{pool_address}/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"transactions": [
{
"id": "<string>",
"log_index": 123,
"transaction_index": 123,
"pool_id": "<string>",
"sender": "<string>",
"recipient": 123,
"token_0": "<string>",
"token_0_symbol": "<string>",
"token_1": "<string>",
"token_1_symbol": "<string>",
"amount_0": "<string>",
"amount_1": "<string>",
"price_0": 123,
"price_1": 123,
"price_0_usd": 123,
"price_1_usd": 123,
"created_at_block_number": 123,
"created_at": "2023-11-07T05:31:56Z"
}
],
"page_info": {
"limit": 123,
"page": 123,
"total_items": 123,
"total_pages": 123
}
}Endpoint overview
List recent swaps, adds, and removes for a pool with paging.Plan access
This endpoint is available on paid plans only. Call it onhttps://api-pro.dexpaprika.com with a Dev, Pro or Enterprise key in the Authorization header. Keyless requests and free keys get 403 with the standard error envelope. error is the code to branch on, tier is the plan the request was served as (keyless or free), required_tier the lowest plan that unlocks the endpoint:
{
"error": "plan_required",
"tier": "keyless",
"required_tier": "dev",
"message": "this endpoint requires a Dev or Pro plan",
"links": {
"register": "https://console.dexpaprika.com",
"pricing": "https://dexpaprika.com/api/pricing",
"docs": "https://docs.dexpaprika.com/",
"coupon": "https://dexpaprika.com/api/pricing?coupon=START10"
}
}
"tier": "free" and the same required_tier. A 403 here is not retryable and costs no credits. Plans are on pricing; the host and header changes are in upgrading to Pro. The full list of plan-gated features is on the rate limits page.
FAQs
Which pagination parameters are supported?
Which pagination parameters are supported?
page/limit or the cursor for deep pagination. cursor points to a specific transaction id for resume.Which transaction types are included?
Which transaction types are included?
How to fetch only recent swaps?
How to fetch only recent swaps?
limit (e.g., 20 to 100) and without page to get the latest batch; poll periodically for new entries.How to get only transactions from a time window?
How to get only transactions from a time window?
from and to. Both take unix seconds, a relative offset from now (-1h, -24h, -7d; units s, m, h, d), RFC3339 or YYYY-MM-DD. For example, the last hour of swaps:curl -H "Authorization: $DEXPAPRIKA_API_KEY" \
"https://api-pro.dexpaprika.com/networks/ethereum/pools/0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640/transactions?from=-1h&limit=100"
Is ordering guaranteed?
Is ordering guaranteed?
Why do I get 403 on this endpoint?
Why do I get 403 on this endpoint?
403 with "error": "plan_required" (the message reads this endpoint requires a Dev or Pro plan). Use a Dev, Pro or Enterprise key on api-pro.dexpaprika.com.Tutorial: Get swap transactions for a DEX pool
Path Parameters
Unique pool address or identifier. Such as 0xc7bbec68d12a0d1830360f8ec58fa599ba1b0e9b for WETH / USDT on ethereum.
Query Parameters
Page number, starting at 1. A value of 0 is served as page 1.
0 <= x <= 1000Number of items to return per page (max 100).
1 <= x <= 100Only transactions at or after this time: unix seconds, a relative offset from now such as -24h (units s, m, h, d), RFC3339 (2026-09-24T10:00:00Z) or a date (2026-09-24, 00:00 UTC).
Only transactions at or before this time: unix seconds, a relative offset from now such as -24h (units s, m, h, d), RFC3339 (2026-09-24T10:00:00Z) or a date (2026-09-24, 00:00 UTC).
Cursor is a transaction ID used for pagination. If empty, the first set of results is returned.
Was this page helpful?