# Base Token Scanner – Trending & New Base Tokens (`renzomacar/base-token-scanner`) Actor

Scan trending, searched, or specific tokens on Coinbase's Base L2 with full DEX metrics (price, liquidity, volume, FDV, txns) from the public DexScreener API. No API key.

- **URL**: https://apify.com/renzomacar/base-token-scanner.md
- **Developed by:** [Renzo Madueno](https://apify.com/renzomacar) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 token data records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Base Token Scanner — New & Trending Tokens on Base (DexScreener)

Pull live, structured trading data for tokens on **Base**, Coinbase's Ethereum L2, straight from the public **DexScreener** API — no API key, no wallet, no RPC node. Point it at the trending board, a search term, or a specific contract address and get back a clean, deduplicated table of pairs with price, liquidity, 24h volume, FDV, market cap, transaction counts and price-change metrics.

This Actor exists because Base moved fast and the tooling didn't keep up. Base regularly sits among the top chains by daily DEX volume and is where a lot of the 2024–2026 memecoin and "Coinbase-adjacent" token activity actually happens — yet most off-the-shelf crypto scrapers still default to Ethereum mainnet or Solana. If you want machine-readable Base data on a schedule, you usually end up scraping the DexScreener website or stitching together RPC calls. This skips all of that and gives you the underlying numbers in JSON, CSV, or Excel.

### What it does

It calls DexScreener's public endpoints, keeps **only pairs whose `chainId == "base"`**, normalizes each one into a flat record, and pushes it to your dataset. Records are **deduplicated by `pairAddress`**, optionally filtered by minimum USD liquidity, and capped by `maxResults` so a run stays fast and cheap.

There are three modes:

| Mode | What you get | Backed by |
|------|--------------|-----------|
| `trending` | Tokens currently boosted/promoted on DexScreener that live on Base, expanded to their full pair metrics. If the boost board has no Base entries at that moment, it falls back to the top liquid Base pairs so you never get an empty run. | `token-boosts/top` + `token-boosts/latest`, then `token-pairs` |
| `search` | Every Base pair matching a free-text query — a ticker (`BRETT`), a name (`degen`), or a contract address. | `latest/dex/search` |
| `token` | All Base pairs for one or more token contract addresses you supply. | `token-pairs/v1/base/{address}` |

### Input

```json
{
  "mode": "trending",
  "query": "BRETT",
  "tokenAddresses": ["0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"],
  "maxResults": 15,
  "minLiquidityUsd": 0
}
````

- **mode** — `trending` (default), `search`, or `token`.
- **query** — used only in `search` mode.
- **tokenAddresses** — used only in `token` mode; one or more Base `0x…` contract addresses.
- **maxResults** — hard cap on records pushed (default 50; the prefilled run uses 15 to stay quick).
- **minLiquidityUsd** — drop pairs below this pooled-liquidity threshold (0 = keep everything). Great for filtering out dust and honeypot-style pairs.

### Output

Each record is one Base trading pair:

```json
{
  "chainId": "base",
  "pairAddress": "0x5554419CCd0293d9383901F461C7C3E0c66E925F",
  "dexId": "swapbased",
  "url": "https://dexscreener.com/base/0x5554419ccd0293d9383901f461c7c3e0c66e925f",
  "baseToken": { "address": "0xd07379a755A8f11B57610154861D694b2A0f615a", "name": "BASE", "symbol": "BASE" },
  "quoteToken": { "symbol": "WETH" },
  "symbol": "BASE",
  "name": "BASE",
  "priceUsd": 0.0000008393,
  "priceNative": 0.0000000005368,
  "liquidityUsd": 33446.85,
  "fdv": 924309,
  "marketCap": 554885,
  "volume24h": 1872.68,
  "volumeH6": 1160.38,
  "priceChange24h": 5.95,
  "priceChangeH1": 3.51,
  "txns24h": { "buys": 38, "sells": 43 },
  "pairCreatedAt": "2023-07-31T14:42:51.000Z"
}
```

#### Field reference

| Field | Meaning |
|-------|---------|
| `pairAddress` | The liquidity-pool/pair contract on Base. Unique key used for dedupe. |
| `dexId` | Which DEX the pair lives on (e.g. `aerodrome`, `uniswap`, `swapbased`). |
| `url` | Direct DexScreener chart for the pair. |
| `baseToken` | The token being measured: `address`, `name`, `symbol`. |
| `quoteToken.symbol` | What it's priced against (usually `WETH` or `USDC`). |
| `priceUsd` / `priceNative` | Price in USD and in the quote token. |
| `liquidityUsd` | Total pooled liquidity in USD — the single best honeypot/rug sanity check. |
| `fdv` | Fully diluted valuation. |
| `marketCap` | Circulating market cap (may equal FDV for fair-launch tokens). |
| `volume24h` / `volumeH6` | Trading volume over the last 24h / 6h in USD. |
| `priceChange24h` / `priceChangeH1` | Percent price change over 24h / 1h. |
| `txns24h` | Buy and sell counts in the last 24h — read buy/sell skew for momentum. |
| `pairCreatedAt` | ISO timestamp of pair creation (null if DexScreener doesn't report it). Use it to find brand-new launches. |

A ready-made **table view** ships with the Actor (symbol, price, liquidity, 24h volume, 24h change, FDV, DEX, chart link) so the dataset is readable at a glance and trivially consumable by an LLM agent.

### Real use cases

- **Memecoin discovery on Base.** Run `trending`, sort by `volume24h` or `priceChange24h`, and surface what's moving before it hits the front page. Filter with `minLiquidityUsd` to ignore dust.
- **Liquidity & rug monitoring.** Schedule `token` mode on a watchlist of contract addresses and alert when `liquidityUsd` drops sharply or sell/buy txns invert — an early signal of liquidity pulls.
- **New-launch radar.** Pull pairs, sort by `pairCreatedAt` descending, and catch tokens minutes-to-hours old.
- **An onchain data tool for AI agents.** The flat JSON + table view make this a drop-in "what's happening on Base right now" tool for an LLM or autonomous trading agent — no parsing HTML, no node infra.
- **Backtesting & research datasets.** Export to CSV/Excel and build a time series by running on a cron.

### FAQ

**Do I need a DexScreener API key?**
No. DexScreener's public endpoints are keyless. You only need an Apify account to run the Actor.

**How is this different from just using the DexScreener website?**
The website is for humans. This returns clean, deduplicated, schema-stable JSON/CSV you can store, diff, alert on, feed to an agent, or join with other data. It also unifies trending + search + per-token lookup behind one input and enforces a Base-only filter for you.

**What about rate limits?**
The Actor spaces requests (~250 ms between calls) and automatically backs off and retries on HTTP 429 / 5xx, so it stays within DexScreener's public limits. Keep `maxResults` modest if you run it very frequently.

**Why Base specifically?**
Base is Coinbase's L2 — low fees, fast blocks, and a direct on-ramp from one of the largest exchanges, which is why so much new token activity lands there. By hard-filtering to `chainId == "base"` you get a focused feed instead of wading through Solana/Ethereum noise that generic scrapers return.

**Is it agent / x402 friendly?**
Yes. There's no auth or browser step, output is plain structured data with a table view, and runs are short and deterministic — ideal for being called as a tool by an autonomous agent or wired into a pay-per-call (x402-style) workflow.

**The trending run sometimes returns the top Base pairs instead of "boosted" ones — why?**
DexScreener's boost board is shared across all chains and is frequently dominated by Solana, so at any given moment it may contain zero Base tokens. When that happens the Actor falls back to the most liquid Base pairs via search, so a `trending` run always returns useful data rather than an empty dataset.

### Automate it

Set a **schedule** in Apify to run this every few minutes or hourly, and connect the dataset to a downstream **webhook**, Google Sheet, or your own service. Pair it with `minLiquidityUsd` to keep the feed clean, and you've got a continuously-updating Base market data pipeline — discovery, liquidity monitoring, and a fresh dataset for research — with zero infrastructure to maintain.

***

*Data sourced from the public DexScreener API. This Actor is not affiliated with DexScreener, Coinbase, or Base. Nothing here is financial advice — onchain tokens, especially low-liquidity ones, are high risk.*

# Actor input Schema

## `mode` (type: `string`):

How to find tokens on Base. trending = boosted/promoted tokens currently trending on Base (DexScreener token-boosts). search = match a free-text query (ticker, name, or pair) and keep only Base pairs. token = look up specific token contract addresses on Base.

## `query` (type: `string`):

Free-text query for search mode, e.g. a ticker like "BRETT", a name like "degen", or a contract address. Only pairs on the Base chain are returned.

## `tokenAddresses` (type: `array`):

One or more Base token contract addresses (0x...) to fetch all DEX pairs for. Used only in token mode.

## `maxResults` (type: `integer`):

Maximum number of pair records to push to the dataset. Keep low for a fast run; raise for a full sweep.

## `minLiquidityUsd` (type: `integer`):

Skip pairs whose pooled liquidity in USD is below this threshold. Use it to filter out illiquid/dust pairs. 0 = no filter.

## Actor input object example

```json
{
  "mode": "trending",
  "query": "BRETT",
  "tokenAddresses": [
    "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"
  ],
  "maxResults": 15,
  "minLiquidityUsd": 0
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "BRETT",
    "tokenAddresses": [
        "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"
    ],
    "maxResults": 15
};

// Run the Actor and wait for it to finish
const run = await client.actor("renzomacar/base-token-scanner").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "BRETT",
    "tokenAddresses": ["0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"],
    "maxResults": 15,
}

# Run the Actor and wait for it to finish
run = client.actor("renzomacar/base-token-scanner").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "BRETT",
  "tokenAddresses": [
    "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"
  ],
  "maxResults": 15
}' |
apify call renzomacar/base-token-scanner --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=renzomacar/base-token-scanner",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Base Token Scanner – Trending & New Base Tokens",
        "description": "Scan trending, searched, or specific tokens on Coinbase's Base L2 with full DEX metrics (price, liquidity, volume, FDV, txns) from the public DexScreener API. No API key.",
        "version": "0.1",
        "x-build-id": "t18wp3o81tlESY0Dv"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/renzomacar~base-token-scanner/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-renzomacar-base-token-scanner",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/renzomacar~base-token-scanner/runs": {
            "post": {
                "operationId": "runs-sync-renzomacar-base-token-scanner",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/renzomacar~base-token-scanner/run-sync": {
            "post": {
                "operationId": "run-sync-renzomacar-base-token-scanner",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "trending",
                            "search",
                            "token"
                        ],
                        "type": "string",
                        "description": "How to find tokens on Base. trending = boosted/promoted tokens currently trending on Base (DexScreener token-boosts). search = match a free-text query (ticker, name, or pair) and keep only Base pairs. token = look up specific token contract addresses on Base.",
                        "default": "trending"
                    },
                    "query": {
                        "title": "Search query (search mode)",
                        "type": "string",
                        "description": "Free-text query for search mode, e.g. a ticker like \"BRETT\", a name like \"degen\", or a contract address. Only pairs on the Base chain are returned."
                    },
                    "tokenAddresses": {
                        "title": "Token addresses (token mode)",
                        "type": "array",
                        "description": "One or more Base token contract addresses (0x...) to fetch all DEX pairs for. Used only in token mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of pair records to push to the dataset. Keep low for a fast run; raise for a full sweep.",
                        "default": 50
                    },
                    "minLiquidityUsd": {
                        "title": "Minimum liquidity (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Skip pairs whose pooled liquidity in USD is below this threshold. Use it to filter out illiquid/dust pairs. 0 = no filter.",
                        "default": 0
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
