The official JavaScript client library for the DexPaprika API, providing easy access to decentralized exchange data across multiple blockchain networks.
Developed and maintained by Coinpaprika.
npm install dexpaprika-sdk
import { DexPaprikaClient } from 'dexpaprika-sdk';
// Create client
const client = new DexPaprikaClient();
// Get supported networks
const networks = await client.networks.list();
console.log(networks);
// Get top pools on Ethereum
const pools = await client.pools.listByNetwork('ethereum', {
page: 0,
limit: 10
});
console.log(pools.pools);
// Search for tokens
const results = await client.search.search('bitcoin');
console.log(`Found ${results.tokens.length} tokens`);
The DexPaprika SDK uses an options pattern for API method parameters, which provides better flexibility, readability, and extensibility:
import { DexPaprikaClient } from 'dexpaprika-sdk';
const client = new DexPaprikaClient();
// Get top pools with pagination and sorting
const pools = await client.pools.listByNetwork('ethereum', {
page: 0,
limit: 10,
sort: 'desc',
orderBy: 'volume_usd'
});
// Get pool details with options
const poolDetails = await client.pools.getDetails(
'ethereum',
'0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640',
{ inversed: false }
);
// Get token pools with additional filters
const tokenPools = await client.tokens.getPools(
'ethereum',
'0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH
{
limit: 5,
sort: 'desc',
orderBy: 'volume_usd',
pairWith: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' // Filter for USDC pairs
}
);
// Get OHLCV data with options
const ohlcv = await client.pools.getOHLCV(
'ethereum',
'0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640',
{
start: '2023-01-01',
end: '2023-01-07',
limit: 7,
interval: '24h',
inversed: false
}
);
The SDK supports automatic retry with exponential backoff and response caching, both enabled by default:
import { DexPaprikaClient } from 'dexpaprika-sdk';
// Custom configuration
const client = new DexPaprikaClient(
'https://api.dexpaprika.com', // Default API URL
{}, // Axios options (optional)
{
// Retry configuration (optional)
retry: {
maxRetries: 4, // Maximum retry attempts
delaySequenceMs: [100, 500, 1000, 5000], // Specific delay for each retry (in ms)
retryableStatuses: [408, 429, 500, 502, 503, 504] // HTTP statuses to retry
},
// Cache configuration (optional)
cache: {
ttl: 5 * 60 * 1000, // Time-to-live: 5 minutes
maxSize: 1000, // Maximum cache entries
enabled: true // Enable/disable caching
}
}
);
// Working with cache
const firstCall = await client.networks.list(); // Hits API
const secondCall = await client.networks.list(); // Uses cache
// Manual cache operations
client.clearCache(); // Clear all cached data
console.log(client.cacheSize); // Get current cache size
client.setCacheEnabled(false); // Temporarily disable caching
For detailed API documentation, visit docs.dexpaprika.com
// Networks
const networks = await client.networks.list();
// DEXes on a network
const dexes = await client.dexes.listByNetwork('ethereum', {
limit: 10
});
// Top pools with pagination
const topPools = await client.pools.list({
page: 0,
limit: 10,
sort: 'desc',
orderBy: 'volume_usd'
});
// Pool details
const poolDetails = await client.pools.getDetails(
'ethereum',
'0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640'
);
// Transactions
const txs = await client.pools.getTransactions(
'ethereum',
'0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640',
{ limit: 20 }
);
For price charts:
// Price history (daily candles for a week)
const startDate = new Date();
startDate.setDate(startDate.getDate() - 7);
const ohlcv = await client.pools.getOHLCV(
'ethereum',
'0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640',
{
start: startDate.toISOString(),
interval: '24h',
limit: 7
}
);
// Token details (WETH)
const token = await client.tokens.getDetails(
'ethereum',
'0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
);
// Find WETH-USDC pools
const pools = await client.tokens.getPools(
'ethereum',
'0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH
{
page: 0,
limit: 10,
sort: 'desc',
orderBy: 'volume_usd',
pairWith: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' // USDC
}
);
// Search
const results = await client.search.search('bitcoin');
// Stats
const stats = await client.utils.getStats();
The SDK includes TypeScript types for easier development. See the documentation for response type details.
Basic error handling:
try {
const pools = await client.pools.list();
// Process results
} catch (error) {
console.error('API error:', error.message);
}
Using the error helper:
import { parseError } from 'dexpaprika-sdk/dist/utils/helpers';
try {
// API calls
} catch (err) {
console.error(parseError(err));
}
Helper functions:
import { formatVolume, formatPair } from 'dexpaprika-sdk/dist/utils/helpers';
// Format volume like $1.23M
console.log(formatVolume(1234567)); // $1.23M
// Format token pair
console.log(formatPair('ETH', 'USDC')); // ETH/USDC
You can also use the retry and caching utilities directly:
import { withRetry, Cache } from 'dexpaprika-sdk';
// Retry a function with custom settings
const result = await withRetry(
async () => {
// Your async operation here
return await someAsyncFunction();
},
{ maxRetries: 4, delaySequenceMs: [100, 200, 300, 400] }
);
// Create a standalone cache
const cache = new Cache({ ttl: 60 * 1000 }); // 1 minute TTL
cache.set('key', value);
const cachedValue = cache.get('key');
- Official Documentation - Comprehensive API reference
- DexPaprika Website - Main product website
- CoinPaprika - Related cryptocurrency data platform
- Discord Community - Get support and connect with other developers
MIT
Contributions are welcome! Please read our contributing guidelines before submitting a Pull Request.
The SDK includes a comprehensive test suite to verify functionality:
# Run basic functionality tests
npm test
# Run real-world API tests
npx ts-node tests/test-real-world.ts
# Run all tests sequentially
npm run test:all
All test files are located in the tests/
directory:
test-after-fixes.ts
- Basic API functionality teststest-real-world.ts
- Tests with actual API calls and simulated failures
For issues, questions, or feedback, please:
- Open an issue on our GitHub repository
- Reach out to the DexPaprika team at [email protected]
This SDK is created and maintained by Coinpaprika. While we strive to provide accurate and up-to-date data, we make no guarantees regarding the accuracy, reliability, or completeness of the data provided through the DexPaprika API.