Back to Blog
#DexScreener#API#Developer#Market Data#Tokens

DexScreener API Guide: Token Data, Pairs, and Market Intelligence

7 min read
By ScreenerBot Team

DexScreener API Guide: Token Data, Pairs, and Market Intelligence

DexScreener is one of the most popular platforms for tracking decentralized exchange data. Their free API provides access to token prices, trading pairs, volume data, and more across 80+ blockchains including Solana.

This guide covers everything you need to know to integrate DexScreener's API into your applications.


🎯 What You'll Learn

  • DexScreener API overview and capabilities
  • All available endpoints with examples
  • Rate limits and best practices
  • Practical integration patterns

📡 API Overview

Key Features

  • Multi-chain support: 80+ blockchains
  • Real-time data: Prices updated constantly
  • Free to use: No API key required
  • Comprehensive: Tokens, pairs, profiles, boosts

Base URL

https://api.dexscreener.com

No Authentication Required

DexScreener's API is completely free and doesn't require an API key. Just make HTTP GET requests to the endpoints.


🔗 API Endpoints

Rate Limits

Endpoint Category Rate Limit
Token/Pair Data 300 requests/minute
Profiles/Boosts 60 requests/minute

💹 Token and Pair Endpoints

Get Token Pairs by Address

Fetch all trading pairs for a specific token.

Endpoint: GET /token-pairs/v1/{chainId}/{tokenAddress}

Parameters:

  • chainId: Blockchain identifier (e.g., solana)
  • tokenAddress: Token's mint address

Example:

GET https://api.dexscreener.com/token-pairs/v1/solana/JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN

Response:

[
  {
    "chainId": "solana",
    "dexId": "raydium",
    "url": "https://dexscreener.com/solana/...",
    "pairAddress": "ABC123...",
    "baseToken": {
      "address": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
      "name": "Jupiter",
      "symbol": "JUP"
    },
    "quoteToken": {
      "address": "So11111111111111111111111111111111111111112",
      "name": "Wrapped SOL",
      "symbol": "SOL"
    },
    "priceNative": "0.0045",
    "priceUsd": "0.89",
    "txns": {
      "h24": { "buys": 5420, "sells": 4890 },
      "h6": { "buys": 1200, "sells": 1100 },
      "h1": { "buys": 180, "sells": 165 },
      "m5": { "buys": 15, "sells": 12 }
    },
    "volume": {
      "h24": 12500000,
      "h6": 3200000,
      "h1": 450000,
      "m5": 35000
    },
    "priceChange": {
      "h24": 5.5,
      "h6": 2.1,
      "h1": 0.3,
      "m5": -0.1
    },
    "liquidity": {
      "usd": 8500000,
      "base": 9500000,
      "quote": 42500
    },
    "fdv": 890000000,
    "marketCap": 890000000,
    "pairCreatedAt": 1699920000000
  }
]

Get Multiple Tokens

Fetch data for multiple tokens at once (up to 30).

Endpoint: GET /tokens/v1/{chainId}/{tokenAddresses}

Parameters:

  • chainId: Blockchain identifier
  • tokenAddresses: Comma-separated token addresses (max 30)

Example:

GET https://api.dexscreener.com/tokens/v1/solana/So11111111111111111111111111111111111111112,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Get Pair by Address

Fetch specific pair data using the pair address.

Endpoint: GET /latest/dex/pairs/{chainId}/{pairId}

Parameters:

  • chainId: Blockchain identifier
  • pairId: Pool/pair address

Example:

GET https://api.dexscreener.com/latest/dex/pairs/solana/7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX

Response:

{
  "schemaVersion": "1.0.0",
  "pairs": [
    {
      "chainId": "solana",
      "dexId": "raydium",
      "pairAddress": "7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX",
      "baseToken": { ... },
      "quoteToken": { ... },
      "priceNative": "200.50",
      "priceUsd": "200.50",
      "liquidity": { ... },
      "volume": { ... }
    }
  ]
}

🔍 Search Endpoint

Search for tokens or pairs by name, symbol, or address.

Endpoint: GET /latest/dex/search

Parameters:

  • q: Search query (token name, symbol, or address)

Example:

GET https://api.dexscreener.com/latest/dex/search?q=JUP

Response:

{
  "schemaVersion": "1.0.0",
  "pairs": [
    {
      "chainId": "solana",
      "dexId": "raydium",
      "baseToken": {
        "address": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
        "name": "Jupiter",
        "symbol": "JUP"
      },
      ...
    }
  ]
}

Search Tips

  • Search by symbol: ?q=SOL
  • Search by name: ?q=jupiter
  • Search by address: ?q=JUPyiwrYJFskUPi...
  • Search by pair: ?q=SOL/USDC

🚀 Boost and Profile Endpoints

These endpoints return tokens that have paid for promotion on DexScreener.

Latest Boosted Tokens

Endpoint: GET /token-boosts/latest/v1

Rate Limit: 60 requests/minute

Response:

{
  "url": "https://dexscreener.com/...",
  "chainId": "solana",
  "tokenAddress": "ABC123...",
  "amount": 50,
  "totalAmount": 200,
  "icon": "https://...",
  "description": "...",
  "links": [
    { "type": "website", "url": "https://..." },
    { "type": "twitter", "url": "https://..." }
  ]
}

Top Boosted Tokens

Get tokens with the most active boosts.

Endpoint: GET /token-boosts/top/v1

Latest Token Profiles

Endpoint: GET /token-profiles/latest/v1

Response:

{
  "url": "https://dexscreener.com/...",
  "chainId": "solana",
  "tokenAddress": "ABC123...",
  "icon": "https://...",
  "header": "https://...",
  "description": "Token description here",
  "links": [
    { "type": "website", "label": "Official Site", "url": "https://..." }
  ]
}

Community Takeovers

Tokens where the community has "taken over" the token profile.

Endpoint: GET /community-takeovers/latest/v1


📊 Orders Endpoint

Check if a token has paid orders (ads, boosts).

Endpoint: GET /orders/v1/{chainId}/{tokenAddress}

Example:

GET https://api.dexscreener.com/orders/v1/solana/JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN

Response:

[
  {
    "type": "tokenProfile",
    "status": "approved",
    "paymentTimestamp": 1699920000
  }
]

📈 Understanding Response Data

Price Fields

Field Description
priceNative Price in terms of quote token
priceUsd Price in USD

Volume Fields

Field Description
volume.m5 5-minute volume in USD
volume.h1 1-hour volume in USD
volume.h6 6-hour volume in USD
volume.h24 24-hour volume in USD

Transaction Fields

Field Description
txns.m5.buys Buy transactions in last 5 min
txns.m5.sells Sell transactions in last 5 min
txns.h1.buys Buy transactions in last hour
txns.h24.buys Buy transactions in last 24 hours

Liquidity Fields

Field Description
liquidity.usd Total liquidity in USD
liquidity.base Base token amount in pool
liquidity.quote Quote token amount in pool

Market Cap Fields

Field Description
fdv Fully Diluted Valuation
marketCap Circulating Market Cap

🛠️ Integration Examples

Fetching Token Price

async function getTokenPrice(tokenAddress) {
  const response = await fetch(
    `https://api.dexscreener.com/token-pairs/v1/solana/${tokenAddress}`
  );
  const pairs = await response.json();
  
  if (pairs.length === 0) {
    return null;
  }
  
  // Get the pair with highest liquidity
  const mainPair = pairs.reduce((best, pair) => 
    (pair.liquidity?.usd || 0) > (best.liquidity?.usd || 0) ? pair : best
  );
  
  return {
    priceUsd: parseFloat(mainPair.priceUsd),
    priceNative: parseFloat(mainPair.priceNative),
    liquidity: mainPair.liquidity?.usd,
    volume24h: mainPair.volume?.h24
  };
}

Batch Token Lookup

async function getMultipleTokens(tokenAddresses) {
  // DexScreener allows up to 30 tokens per request
  const chunks = [];
  for (let i = 0; i < tokenAddresses.length; i += 30) {
    chunks.push(tokenAddresses.slice(i, i + 30));
  }
  
  const results = [];
  for (const chunk of chunks) {
    const addresses = chunk.join(',');
    const response = await fetch(
      `https://api.dexscreener.com/tokens/v1/solana/${addresses}`
    );
    const data = await response.json();
    results.push(...data);
    
    // Respect rate limits
    await sleep(200);
  }
  
  return results;
}

Search Implementation

async function searchTokens(query) {
  const response = await fetch(
    `https://api.dexscreener.com/latest/dex/search?q=${encodeURIComponent(query)}`
  );
  const data = await response.json();
  
  // Filter for Solana tokens only
  return data.pairs.filter(pair => pair.chainId === 'solana');
}

⚠️ Best Practices

1. Handle Rate Limits

class DexScreenerClient {
  constructor() {
    this.lastRequestTime = 0;
    this.minRequestInterval = 200; // 300 req/min = 1 per 200ms
  }
  
  async request(endpoint) {
    const now = Date.now();
    const timeSinceLastRequest = now - this.lastRequestTime;
    
    if (timeSinceLastRequest < this.minRequestInterval) {
      await sleep(this.minRequestInterval - timeSinceLastRequest);
    }
    
    this.lastRequestTime = Date.now();
    return fetch(`https://api.dexscreener.com${endpoint}`);
  }
}

2. Cache Responses

Token data doesn't change every second. Cache appropriately:

const priceCache = new Map();
const CACHE_TTL = 10000; // 10 seconds

async function getCachedPrice(tokenAddress) {
  const cached = priceCache.get(tokenAddress);
  if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
    return cached.data;
  }
  
  const price = await getTokenPrice(tokenAddress);
  priceCache.set(tokenAddress, {
    data: price,
    timestamp: Date.now()
  });
  
  return price;
}

3. Use the Right Endpoint

Need Endpoint
All pairs for a token /token-pairs/v1/{chain}/{token}
Specific pair data /latest/dex/pairs/{chain}/{pair}
Multiple tokens /tokens/v1/{chain}/{tokens}
Find tokens /latest/dex/search

4. Handle Missing Data

Not all tokens have complete data:

const price = pair.priceUsd || pair.priceNative || 'N/A';
const volume = pair.volume?.h24 ?? 0;
const liquidity = pair.liquidity?.usd ?? 0;

🔗 Chain Identifiers

Chain ID
Solana solana
Ethereum ethereum
BSC bsc
Arbitrum arbitrum
Base base
Polygon polygon

📚 Resources

Official Links

Related Tools


🎓 Key Takeaways

  1. No API key needed - Just make requests
  2. Rate limits exist - 300 or 60 requests/minute
  3. Batch when possible - Up to 30 tokens per request
  4. Cache responses - Data doesn't change every second
  5. Handle missing data - Not all fields are always present
  6. Use search wisely - Works for symbols, names, addresses

  7. DexScreener's API is a powerful tool for building trading applications. Now you have everything you need to integrate it! 🚀

Ready to Start Trading?

Download ScreenerBot and start automated DeFi trading on Solana.

Download Now