DEX Screener
The io.b3os/dexscreener pack: 5 actions with call snippets, fixture outputs, connection setup and error codes, generated from version 1.0.0.
io.b3os/dexscreener 1.0.0 · crypto, market-data, defi, ethereum, base, solana, bsc · MIT
Decentralized-exchange market data from DEX Screener across many chains: pairs for a token (price in USD and native, liquidity, volume, buys and sells, price change, FDV, market cap), pairs by pool address, pair search, newly listed token profiles and the most boosted tokens. Keyless public API, read-only.
Every call's result carries upstream_status and timing: validate_ms, inject_ms, render_ms, upstream_ms, map_ms and total_ms. upstream is the service's time; the others are B3OS's own (call actions). The snippets below show no timing values, because a fixture records none.
Connection
No credential: a keyless public API. Calls name no connection.
Hosts it reaches: api.dexscreener.com.
Actions
| Action | Effect | MCP tool | Title |
|---|---|---|---|
get-token-pairs | read | dexscreener__get-token-pairs | Get Token Pairs |
get-pairs-by-address | read | dexscreener__get-pairs-by-address | Get Pairs by Address |
search-pairs | read | dexscreener__search-pairs | Search pairs |
get-boosted-tokens | read | dexscreener__get-boosted-tokens | Get Boosted Tokens |
get-latest-profiles | read | dexscreener__get-latest-profiles | Get Latest Token Profiles |
get-token-pairs
Get Token Pairs. Every DEX pair (pool) that trades the given tokens on one chain, with price in USD and in the quote token, liquidity, 5-minute to 24-hour volume, buy and sell counts, price change, FDV, market cap and pair creation time. Up to 30 token addresses per call; use it for a token's live price and where it trades.
Ref io.b3os/dexscreener/get-token-pairs@1.0.0 · effect read · no connection · MCP tool dexscreener__get-token-pairs
bashcurl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/dexscreener/get-token-pairs@1", "input": { "chainId": "solana", "tokenAddresses": "So11111111111111111111111111111111111111112,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/dexscreener/get-token-pairs@1", input: { chainId: "solana", tokenAddresses: "So11111111111111111111111111111111111111112,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/dexscreener/get-token-pairs@1", "input": { "chainId": "solana", "tokenAddresses": "So11111111111111111111111111111111111111112,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", },})print(result["output"])
json{ "method": "tools/call", "params": { "name": "dexscreener__get-token-pairs", "arguments": { "chainId": "solana", "tokenAddresses": "So11111111111111111111111111111111111111112,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } }}
Expose the pack as tools with --packs dexscreener on the local server or ?packs=dexscreener on the remote URL, and the agent calls dexscreener__get-token-pairs with the action's input. The tool needs no connection. Without exposing the pack, actions_call takes the same input with ref.
Output, labeled fixture: Get Token Pairs (response recorded 2026-10-26). From the bundle's fixtures/get-token-pairs.json, not a live call.
json{ "pairs": [ { "chainId": "solana", "dexId": "orca", "url": "https://dexscreener.com/solana/czfq3xzzdmsdgduyrnltrhgc47cxcztlg4crryfu44ze", "pairAddress": "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE", "baseToken": { "address": "So11111111111111111111111111111111111111112", "name": "Wrapped SOL", "symbol": "SOL" }, "quoteToken": { "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "name": "USD Coin", "symbol": "USDC" }, "priceNative": "100.4318", "priceUsd": "100.43", "txns": { "m5": {"buys": 110, "sells": 153}, "h1": {"buys": 1061, "sells": 1594}, "h6": {"buys": 9122, "sells": 11065}, "h24": {"buys": 32510, "sells": 34494} }, "volume": { "h24": 83064411.74, "h6": 27782112.5, "h1": 2909927.39, "m5": 286445.52 }, "priceChange": {"m5": -0.05, "h1": -0.41, "h6": -0.29, "h24": -1.25}, "liquidity": {"usd": 28758879.99, "base": 230305, "quote": 5628878}, "fdv": null, "marketCap": null, "pairCreatedAt": 1688106058000, "boosts": null }, { "chainId": "solana",
The first 40 of 76 lines; the fixture file has the rest.
When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:
pack_error.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | DEX Screener has nothing for this chain or address. |
rate_limited | 429 | yes | DEX Screener rate limit reached (60 to 300 requests a minute depending on the endpoint). |
invalid_request | 400, 422 | no | DEX Screener rejected the request; check the chain id and addresses. |
get-pairs-by-address
Get Pairs by Address. DEX pairs by their pool (pair) contract addresses on one chain: base and quote token, price, liquidity, volume, transactions, price change and FDV. Use it when you already know the pool, for example from get-token-pairs.
Ref io.b3os/dexscreener/get-pairs-by-address@1.0.0 · effect read · no connection · MCP tool dexscreener__get-pairs-by-address
bashcurl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/dexscreener/get-pairs-by-address@1", "input": { "chainId": "solana", "pairAddresses": "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE" } }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/dexscreener/get-pairs-by-address@1", input: { chainId: "solana", pairAddresses: "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE", },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/dexscreener/get-pairs-by-address@1", "input": { "chainId": "solana", "pairAddresses": "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE", },})print(result["output"])
json{ "method": "tools/call", "params": { "name": "dexscreener__get-pairs-by-address", "arguments": { "chainId": "solana", "pairAddresses": "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE" } }}
Expose the pack as tools with --packs dexscreener on the local server or ?packs=dexscreener on the remote URL, and the agent calls dexscreener__get-pairs-by-address with the action's input. The tool needs no connection. Without exposing the pack, actions_call takes the same input with ref.
Output, labeled fixture: Get Pairs by Address (response recorded 2026-10-26). From the bundle's fixtures/get-pairs-by-address.json, not a live call.
json{ "pairs": [ { "chainId": "solana", "dexId": "orca", "pairAddress": "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE", "baseToken": { "address": "So11111111111111111111111111111111111111112", "name": "Wrapped SOL", "symbol": "SOL" }, "quoteToken": { "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "name": "USD Coin", "symbol": "USDC" }, "priceUsd": "100.35", "volume": { "h24": 83064211.78, "h6": 27781912.54, "h1": 2909727.43, "m5": 286245.56 }, "priceChange": {"m5": -0.13, "h1": -0.48, "h6": -0.37, "h24": -1.33}, "liquidity": {"usd": 28740679.46, "base": 230307, "quote": 5628678}, "fdv": null, "marketCap": null, "pairCreatedAt": 1688106058000 } ]}
When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:
pack_error.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | DEX Screener has nothing for this chain or address. |
rate_limited | 429 | yes | DEX Screener rate limit reached (60 to 300 requests a minute depending on the endpoint). |
invalid_request | 400, 422 | no | DEX Screener rejected the request; check the chain id and addresses. |
search-pairs
Search pairs. Search DEX Screener pairs by token name, symbol or address (for example PEPE, SOL/USDC or a contract address), across all chains, best match first, with price, liquidity, volume and price change. Returns up to 30 pairs.
Ref io.b3os/dexscreener/search-pairs@1.0.0 · effect read · no connection · MCP tool dexscreener__search-pairs
bashcurl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/dexscreener/search-pairs@1", "input": {"query": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/dexscreener/search-pairs@1", input: { query: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/dexscreener/search-pairs@1", "input": {"query": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "dexscreener__search-pairs", "arguments": {"query": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"} }}
Expose the pack as tools with --packs dexscreener on the local server or ?packs=dexscreener on the remote URL, and the agent calls dexscreener__search-pairs with the action's input. The tool needs no connection. Without exposing the pack, actions_call takes the same input with ref.
Output, labeled fixture: Search pairs (response recorded 2026-10-26). From the bundle's fixtures/search-pairs.json, not a live call.
json{ "pairs": [ { "chainId": "base", "dexId": "alien-base", "url": "https://dexscreener.com/base/0x0e635f8eeed4f7279d56692d552f034ece136019", "pairAddress": "0x0E635F8EeED4F7279d56692D552F034ECE136019", "baseToken": { "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "name": "USD Coin", "symbol": "USDC" }, "quoteToken": { "address": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", "name": "USD Base Coin", "symbol": "USDbC" }, "priceNative": "1.00007101", "priceUsd": "1.000071", "liquidity": {"usd": 127663.26, "base": 59302, "quote": 68356}, "volume": {"h24": 1326.78, "h6": 318.81, "h1": 0, "m5": 0}, "priceChange": {}, "fdv": 4288008041, "marketCap": 71610329486, "pairCreatedAt": 1725278699000 }, { "chainId": "base", "dexId": "aerodrome", "url": "https://dexscreener.com/base/0x98c7a2338336d2d354663246f64676009c7bda97", "pairAddress": "0x98c7A2338336d2d354663246F64676009c7bDa97", "baseToken": { "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "name": "USD Coin", "symbol": "USDC" }, "quoteToken": { "address": "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA", "name": "USD Base Coin", "symbol": "USDbC"
The first 40 of 52 lines; the fixture file has the rest.
When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:
pack_error.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | DEX Screener has nothing for this chain or address. |
rate_limited | 429 | yes | DEX Screener rate limit reached (60 to 300 requests a minute depending on the endpoint). |
invalid_request | 400, 422 | no | DEX Screener rejected the request; check the chain id and addresses. |
get-boosted-tokens
Get Boosted Tokens. Tokens with the most active DEX Screener boosts (paid promotion), highest total first, with chain, address, description, icon, links and boost amounts. Boosts are advertising, not a quality signal. Optionally only one chain.
Ref io.b3os/dexscreener/get-boosted-tokens@1.0.0 · effect read · no connection · MCP tool dexscreener__get-boosted-tokens
bashcurl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ref": "io.b3os/dexscreener/get-boosted-tokens@1", "input": {}}'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/dexscreener/get-boosted-tokens@1", input: {} });console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({"ref": "io.b3os/dexscreener/get-boosted-tokens@1", "input": {}})print(result["output"])
json{ "method": "tools/call", "params": {"name": "dexscreener__get-boosted-tokens", "arguments": {}}}
Expose the pack as tools with --packs dexscreener on the local server or ?packs=dexscreener on the remote URL, and the agent calls dexscreener__get-boosted-tokens with the action's input. The tool needs no connection. Without exposing the pack, actions_call takes the same input with ref.
Output, labeled fixture: Get Boosted Tokens (response recorded 2026-10-26). From the bundle's fixtures/get-boosted-tokens.json, not a live call.
json{ "tokens": [ { "url": "https://dexscreener.com/solana/h7vzncbyndk5ikbs9krdj2tx8cur1wxedv19zgkwpump", "chainId": "solana", "tokenAddress": "H7VZNCBynDK5ikBS9krDJ2Tx8CUr1wxedV19ZgkWpump", "description": "The axe weighs more than the entire knight. A tiny kitten chose the biggest battleaxe in the armoury. Now every swing comes with a nap.", "icon": "k8ix7LCLLGh9vRhA", "links": [ {"url": "https://cattleaxe.lol"}, {"type": "twitter", "url": "https://x.com/sircattleaxe"} ], "totalAmount": 500, "amount": null }, { "url": "https://dexscreener.com/solana/c4bdpk4bqaccsg5vvpzximdr48gpaqyffq5iymsrpump", "chainId": "solana", "tokenAddress": "C4BdpK4bQAcCsg5vvpzXimdR48GPaQyffQ5iyMsRpump", "description": "Trust in Trump for bold leadership and a stronger future for America.", "icon": "BUkexH2n1wnVK8_x", "links": [ {"url": "https://trustintrump.site"}, {"type": "twitter", "url": "https://x.com/TrustInTrumpX"} ], "totalAmount": 500, "amount": null }, { "url": "https://dexscreener.com/solana/ca8q2mkywznunqymf6pxyxapzsmse2eg9p7hhmw5pump", "chainId": "solana", "tokenAddress": "CA8q2mkYWZnUNqYmf6pxyxAPZsmSe2EG9P7hHMW5pump", "description": "The Official Fomo Mascot.\n\nNovember 15.", "icon": "RSLqRr5vubt1aRKX", "links": [ {"url": "https://remus.family"}, {"type": "twitter", "url": "https://x.com/remusfamily"} ], "totalAmount": 300, "amount": null
The first 40 of 43 lines; the fixture file has the rest.
When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:
pack_error.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | DEX Screener has nothing for this chain or address. |
rate_limited | 429 | yes | DEX Screener rate limit reached (60 to 300 requests a minute depending on the endpoint). |
invalid_request | 400, 422 | no | DEX Screener rejected the request; check the chain id and addresses. |
get-latest-profiles
Get Latest Token Profiles. The newest token profiles published on DEX Screener (projects that added a description, icon and links), newest first, optionally only on one chain. A profile is self-published by the project.
Ref io.b3os/dexscreener/get-latest-profiles@1.0.0 · effect read · no connection · MCP tool dexscreener__get-latest-profiles
bashcurl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ref": "io.b3os/dexscreener/get-latest-profiles@1", "input": {}}'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/dexscreener/get-latest-profiles@1", input: {} });console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({"ref": "io.b3os/dexscreener/get-latest-profiles@1", "input": {}})print(result["output"])
json{ "method": "tools/call", "params": {"name": "dexscreener__get-latest-profiles", "arguments": {}}}
Expose the pack as tools with --packs dexscreener on the local server or ?packs=dexscreener on the remote URL, and the agent calls dexscreener__get-latest-profiles with the action's input. The tool needs no connection. Without exposing the pack, actions_call takes the same input with ref.
Output, labeled fixture: Get Latest Token Profiles (response recorded 2026-10-26). From the bundle's fixtures/get-latest-profiles.json, not a live call.
json{ "profiles": [ { "url": "https://dexscreener.com/solana/4hj5pf5untu5ucjv3kclqscj6b9troudcdmngzehpump", "chainId": "solana", "tokenAddress": "4hj5Pf5UNtu5UCjv3kCLQscj6B9TroUDcDMnGzEhpump", "description": "take the risk", "icon": "https://cdn.dexscreener.com/cms/images/2lQVV2SkYpEPws4_?width=64&height=64&fit=crop&quality=95&format=auto", "links": [ { "label": "Extra", "url": "https://www.youtube.com/shorts/WFVQkVbwEbk" }, { "type": "twitter", "url": "https://x.com/RicherONG/status/2114620330194973088?s=20" }, { "type": "instagram", "url": "https://www.instagram.com/reels/De1gk8RhHnL/" } ], "cto": false }, { "url": "https://dexscreener.com/solana/bewvul9eseukmbetmcgrdj2mvvvjtyez4sauxluh2zl1", "chainId": "solana", "tokenAddress": "BEwvuL9EsEukMbETMcgRDJ2MVvVjTyEz4SAUxLuh2zL1", "description": null, "icon": "https://cdn.dexscreener.com/cms/images/C4-l6xQacJB2FjJH?width=64&height=64&fit=crop&quality=95&format=auto", "links": [ { "label": "Website", "url": "https://uselaunch.fun/c/BEwvuL9EsEukMbETMcgRDJ2MVvVjTyEz4SAUxLuh2zL1" }, { "type": "twitter", "url": "https://x.com/Edawg6969_/status/2114618023437013032?s=20" } ],
The first 40 of 44 lines; the fixture file has the rest.
When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:
pack_error.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | DEX Screener has nothing for this chain or address. |
rate_limited | 429 | yes | DEX Screener rate limit reached (60 to 300 requests a minute depending on the endpoint). |
invalid_request | 400, 422 | no | DEX Screener rejected the request; check the chain id and addresses. |