agiprolabs/claude-trading-skills

dexscreener-api

Free, no-auth multi-chain DEX pair data — prices, volume, liquidity, transactions, and token profiles

소스 보기

사용 방법

  1. 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
  2. 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
  3. 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/agiprolabs/claude-trading-skills --skill dexscreener-api

시작 전 확인

  • 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
  • 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

DexScreener API — Free Multi-Chain DEX Data

DexScreener provides DEX pair data across 80+ chains with no API key required. Prices, volume, liquidity, transaction counts, and token profiles — all free. Best for quick lookups, cross-chain comparison, and lightweight monitoring.

Quick Start

No authentication needed. Just make requests:

python
import httpx

# Search for a token
resp = httpx.get("https://api.dexscreener.com/latest/dex/search", params={"q": "BONK"})
pairs = resp.json()["pairs"]
for p in pairs[:3]:
    print(f"{p['baseToken']['symbol']}/{p['quoteToken']['symbol']} on {p['chainId']}: ${p['priceUsd']}")
bash
# Or with curl
curl "https://api.dexscreener.com/latest/dex/search?q=BONK"

Base URL

https://api.dexscreener.com

No API key, no headers required. Rate limits: ~300 req/min for DEX data endpoints, 60 req/min for profile/boost endpoints.

Core Endpoints

Search Pairs

python
# Search by token name, symbol, or address (returns ~30 pairs across all chains)
GET /latest/dex/search?q=BONK
GET /latest/dex/search?q=So11111111111111111111111111111111111111112

Get Pairs by Chain + Pair Address

python
# Single pair
GET /latest/dex/pairs/solana/PAIR_ADDRESS

# Multiple pairs (comma-separated)
GET /latest/dex/pairs/solana/PAIR1,PAIR2,PAIR3

Get Pairs by Token Address

python
# All pairs containing this token across all chains
GET /latest/dex/tokens/TOKEN_MINT_ADDRESS

# Chain-specific (v1)
GET /token-pairs/v1/solana/TOKEN_MINT

# Multiple tokens on one chain (v1)
GET /tokens/v1/solana/TOKEN1,TOKEN2,TOKEN3

Token Profiles & Boosts

python
# Latest token profiles (60 req/min)
GET /token-profiles/latest/v1

# Latest boosted tokens
GET /token-boosts/latest/v1

# Top boosted tokens (sorted by total boost amount)
GET /token-boosts/top/v1

# Token orders (ads, profile claims)
GET /orders/v1/solana/TOKEN_ADDRESS

# Community takeovers
GET /community-takeovers/latest/v1

Pair Response Schema

json
{
  "chainId": "solana",
  "dexId": "raydium",
  "url": "https://dexscreener.com/solana/PAIR_ADDR",
  "pairAddress": "3nMFwZX...",
  "labels": ["CLMM"],
  "baseToken": { "address": "So11...", "name": "Wrapped SOL", "symbol": "SOL" },
  "quoteToken": { "address": "EPjF...", "name": "USD Coin", "symbol": "USDC" },
  "priceNative": "86.08",
  "priceUsd": "86.08",
  "txns": {
    "m5":  { "buys": 25, "sells": 18 },
    "h1":  { "buys": 916, "sells": 1282 },
    "h6":  { "buys": 11309, "sells": 12661 },
    "h24": { "buys": 27974, "sells": 31475 }
  },
  "volume": { "m5": 41680, "h1": 6773038, "h6": 71628073, "h24": 167164493 },
  "priceChange": { "m5": -0.01, "h1": -0.36, "h6": 0.82, "h24": 0.25 },
  "liquidity": { "usd": 28168478, "base": 232348, "quote": 8167805 },
  "fdv": 8171740,
  "marketCap": 8171740,
  "pairCreatedAt": 1688106058000,
  "info": {
    "imageUrl": "https://cdn.dexscreener.com/...",
    "websites": [{ "url": "https://...", "label": "Website" }],
    "socials": [{ "url": "https://x.com/...", "type": "twitter" }]
  }
}

Key notes:

  • priceNative and priceUsd are strings (preserves precision)
  • pairCreatedAt is milliseconds (divide by 1000 for unix timestamp)
  • labels: "CLMM" (concentrated), "DLMM" (dynamic), "wp" (whirlpool)
  • info is optional — only present if the token profile has been claimed
  • fdv/marketCap may be absent for tokens without supply data

Common Patterns

Quick Token Lookup

python
def lookup_token(address: str) -> dict | None:
    """Get the best pair for a token by liquidity."""
    resp = httpx.get(f"https://api.dexscreener.com/latest/dex/tokens/{address}")
    pairs = resp.json().get("pairs", [])
    if not pairs:
        return None
    # Sort by liquidity (highest first)
    pairs.sort(key=lambda p: p.get("liquidity", {}).get("usd", 0), reverse=True)
    return pairs[0]

Cross-Chain Price Check

python
def find_best_price(symbol: str) -> list[dict]:
    """Find a token across all chains and compare prices."""
    resp = httpx.get("https://api.dexscreener.com/latest/dex/search", params={"q": symbol})
    pairs = resp.json().get("pairs", [])
    results = []
    for p in pairs:
        if p["baseToken"]["symbol"].upper() == symbol.upper():
            results.append({
                "chain": p["chainId"],
                "dex": p["dexId"],
                "price": float(p.get("priceUsd", 0)),
                "liquidity": p.get("liquidity", {}).get("usd", 0),
                "volume_24h": p.get("volume", {}).get("h24", 0),
            })
    return sorted(results, key=lambda x: x["liquidity"], reverse=True)

Monitor New Tokens via Boosts

python
def get_newly_boosted() -> list[dict]:
    """Get tokens that were recently boosted (paid promotion)."""
    resp = httpx.get("https://api.dexscreener.com/token-boosts/latest/v1")
    return [
        {
            "chain": t["chainId"],
            "address": t["tokenAddress"],
            "boost_amount": t.get("amount", 0),
            "total_boost": t.get("totalAmount", 0),
            "description": t.get("description", ""),
        }
        for t in resp.json()
    ]

Buy/Sell Ratio Analysis

python
def analyze_pressure(pair: dict) -> dict:
    """Analyze buy/sell pressure from transaction counts."""
    txns = pair.get("txns", {})
    result = {}
    for tf in ["m5", "h1", "h6", "h24"]:
        data = txns.get(tf, {})
        buys = data.get("buys", 0)
        sells = data.get("sells", 0)
        total = buys + sells
        result[tf] = {
            "buys": buys, "sells": sells, "total": total,
            "buy_ratio": buys / total if total > 0 else 0.5,
        }
    return result

Supported Chains

Major chains: solana, ethereum, base, arbitrum, bsc, polygon, avalanche, optimism, zksync, scroll, linea, tron, near, aptos, ton, sui, hyperliquid

80+ chains total. The chainId matches the URL path on dexscreener.com.

Limitations

  • No OHLCV/candle data — Use Birdeye or SolanaTracker for historical candles
  • No pagination — Search returns ~30 results max
  • No wallet/trader data — Use Birdeye or Helius for wallet analysis
  • No token security data — Use Birdeye token_security endpoint
  • Snapshot data only — Current state, not historical time series
  • No WebSocket — Polling only

When to Use DexScreener vs Alternatives

NeedUse
Quick free token lookupDexScreener
Cross-chain comparisonDexScreener
Historical OHLCV for backtestingBirdeye or SolanaTracker
Wallet/trader analysisHelius or SolanaTracker
Real-time streamingYellowstone gRPC or Birdeye WebSocket
Token security checkBirdeye or SolanaTracker risk score

Files

References

  • references/endpoints.md — Complete endpoint listing with response schemas
  • references/error_handling.md — Rate limits, error codes, best practices

Scripts

  • scripts/token_lookup.py — Look up any token across all chains with liquidity analysis
  • scripts/boost_monitor.py — Monitor newly boosted/promoted tokens

관련 작업

같은 저장소의 Skills

더 많은 Skills

모든 Skills