> ## Documentation Index
> Fetch the complete documentation index at: https://docs.beta.b3os.org/llms.txt
> Use this file to discover all available pages before exploring further.

# 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](/actions/call)). 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`](/actions/catalog/dexscreener#dexscreener-get-token-pairs) | read | `dexscreener__get-token-pairs` | Get Token Pairs |
| [`get-pairs-by-address`](/actions/catalog/dexscreener#dexscreener-get-pairs-by-address) | read | `dexscreener__get-pairs-by-address` | Get Pairs by Address |
| [`search-pairs`](/actions/catalog/dexscreener#dexscreener-search-pairs) | read | `dexscreener__search-pairs` | Search pairs |
| [`get-boosted-tokens`](/actions/catalog/dexscreener#dexscreener-get-boosted-tokens) | read | `dexscreener__get-boosted-tokens` | Get Boosted Tokens |
| [`get-latest-profiles`](/actions/catalog/dexscreener#dexscreener-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`

**curl**

```bash
    curl -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"
          }
        }'
    ```
  **TypeScript**

```ts
    import { 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);
    ```
  **Python**

```python
    from b3os import B3OS

    b3os = B3OS()
    result = b3os.actions.call({
        "ref": "io.b3os/dexscreener/get-token-pairs@1",
        "input": {
            "chainId": "solana",
            "tokenAddresses": "So11111111111111111111111111111111111111112,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
        },
    })
    print(result["output"])
    ```
  **MCP**

```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`](/errors#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`

**curl**

```bash
    curl -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"
          }
        }'
    ```
  **TypeScript**

```ts
    import { 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);
    ```
  **Python**

```python
    from b3os import B3OS

    b3os = B3OS()
    result = b3os.actions.call({
        "ref": "io.b3os/dexscreener/get-pairs-by-address@1",
        "input": {
            "chainId": "solana",
            "pairAddresses": "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE",
        },
    })
    print(result["output"])
    ```
  **MCP**

```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`](/errors#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`

**curl**

```bash
    curl -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"}
        }'
    ```
  **TypeScript**

```ts
    import { 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);
    ```
  **Python**

```python
    from b3os import B3OS

    b3os = B3OS()
    result = b3os.actions.call({
        "ref": "io.b3os/dexscreener/search-pairs@1",
        "input": {"query": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},
    })
    print(result["output"])
    ```
  **MCP**

```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`](/errors#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`

**curl**

```bash
    curl -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": {}}'
    ```
  **TypeScript**

```ts
    import { 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);
    ```
  **Python**

```python
    from b3os import B3OS

    b3os = B3OS()
    result = b3os.actions.call({"ref": "io.b3os/dexscreener/get-boosted-tokens@1", "input": {}})
    print(result["output"])
    ```
  **MCP**

```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`](/errors#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`

**curl**

```bash
    curl -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": {}}'
    ```
  **TypeScript**

```ts
    import { 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);
    ```
  **Python**

```python
    from b3os import B3OS

    b3os = B3OS()
    result = b3os.actions.call({"ref": "io.b3os/dexscreener/get-latest-profiles@1", "input": {}})
    print(result["output"])
    ```
  **MCP**

```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`](/errors#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. |