backtrader
Event-driven backtesting with bar-by-bar execution, complex order types, multiple analyzers,…
Free, no-auth multi-chain DEX pair data — prices, volume, liquidity, transactions, and token profiles
$ npx -y skills add agiprolabs/claude-trading-skills --skill dexscreener-api --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/dexscreener-apiContext preview
The summary Claude sees to decide when to auto-load this skill.
Free, no-auth multi-chain DEX pair data — prices, volume, liquidity, transactions, and token profiles
name: dexscreener-api description: Free, no-auth multi-chain DEX pair data — prices, volume, liquidity, transactions, and token profiles
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.
No authentication needed. Just make requests:
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']}")# Or with curl curl "https://api.dexscreener.com/latest/dex/search?q=BONK"
`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.
# 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
# Single pair GET /latest/dex/pairs/solana/PAIR_ADDRESS # Multiple pairs (comma-separated) GET /latest/dex/pairs/solana/PAIR1,PAIR2,PAIR3
# 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
# 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
{
"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:**
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]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)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()
]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 resultMajor chains: `solana`, `ethereum`, `base`, `arbitrum`, `bsc`, `polygon`, `avalanche`, `optimism`, `zksyn
A comprehensive collection of 68 ready-to-use trading, DeFi, and quantitative finance Agent Skills. Works with Claude Code, Cursor, Codex, Gemini CLI, and 30+ other tools.
Repo: agiprolabs/claude-trading-skills
Event-driven backtesting with bar-by-bar execution, complex order types, multiple analyzers,…
Solana token market data via Birdeye — prices, OHLCV, trades, token metadata, security…
Broad crypto market data from CoinGecko covering 13,000+ tokens. Global market stats,…
Cointegration testing for pairs trading using Engle-Granger, Johansen, and rolling stability…
Wallet evaluation, monitoring, and copy-trade strategy design for Solana DEX trading
Cross-asset correlation analysis including rolling correlation, hierarchical clustering, tail…