# DEX Screener New Tokens Monitor - Public API, Pairs & Boosts (`neverempty/dexscreener-new-tokens-monitor`) Actor

For crypto traders, bot builders and on-chain analysts: tokens that just got a DEX Screener profile, boost or takeover, with pair price, liquidity, volume, buys/sells and pair age. About 1 new profile a minute on 2026-09-21. Monitoring returns only newly listed tokens.

- **URL**: https://apify.com/neverempty/dexscreener-new-tokens-monitor.md
- **Developed by:** [NeverEmpty](https://apify.com/neverempty) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.46 / 1,000 token returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## DEX Screener New Tokens Monitor - Public API, Pairs & Boosts

For crypto traders, bot builders and on-chain analysts: the tokens that just got a DEX Screener token profile, a boost or a community takeover, one row per token with its trading pair's USD price, liquidity, FDV, market cap, volume, buys and sells (5 minutes to 24 hours), price change and pair creation time. Measured on 2026-09-21 at 16:47 UTC: one run of the three default lists read 69 tokens with 10 API requests in 7 seconds and returned the 60 that already had a trading pair. Run it on a schedule with monitoring mode and you receive only the tokens listed since your last run, instead of the same list again.

Unofficial. Uses DEX Screener's public API. It reads `api.dexscreener.com` with no login, no API key, no proxy and no browser. Export as JSON, CSV or Excel.

### Why this Actor

- **Reads the public API, not the website.** The lists and the pair data come from DEX Screener's public API endpoints (`/token-profiles/latest/v1`, `/token-boosts/latest/v1`, `/token-boosts/top/v1`, `/community-takeovers/latest/v1` and `/tokens/v1`), so there is no browser and no bot check to get past. The Actor stays under the published rate limits (60 requests a minute for the lists, 300 for pairs) and after a rate limit (HTTP 429) waits 20 seconds and tries again, up to three attempts; if the limit persists, a free `blocked` row says so.
- **New-listing monitor.** With `monitoringMode` on a schedule, each run returns only tokens with a listing it has not returned before: a new profile, a new boost order when latest-boosts is read (the total active boost rose, also for a token you already received) or a new community takeover. `newIn` says which list made it new.
- **Pair data on the same row.** Every token is joined with the pair DEX Screener returns for it: price in USD and in the quote token, liquidity, FDV, market cap, volume and buy/sell counts for 5 minutes, 1 hour, 6 hours and 24 hours, price change, DEX, pair address and creation time, plus the token's website, X (Twitter), Telegram and Discord links, description and boost amounts.
- **Filter by chain, liquidity, volume and pair age.** `chains` keeps only the chains you trade (solana, ethereum, bsc, base ...). `minLiquidityUsd`, `minVolume24hUsd` and `maxPairAgeHours` drop thin or old pairs; in monitoring mode a dropped token is not remembered, so it arrives later if it passes while still in a list.
- **Honest empty results.** A token with no trading pair yet, a list that could not be read, a chain with no token in the lists and a run that hit its charge limit each come back as a free row that says so. Nothing is filled with 0: a missing value is `null`.

This Actor returns what DEX Screener's lists contain. It does not rank tokens by trend, does not sort by volume or gainers across a whole chain, and is not a buy or sell signal.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `lists` | select | (prefilled: latest-profiles, latest-boosts) | `latest-profiles`, `latest-boosts`, `top-boosts` (tokens with the most active boosts), `community-takeovers`. None chosen = latest-profiles, latest-boosts and community-takeovers. |
| `chains` | list | (none = every chain) | DEX Screener chain ids, one per line: solana, ethereum, bsc, base, arbitrum, polygon, avalanche ... Short forms eth, bnb, sol, avax, matic, arb and op are accepted. |
| `minLiquidityUsd` | integer | (none) | Only tokens whose pair has at least this liquidity in USD. |
| `minVolume24hUsd` | integer | (none) | Only tokens whose pair traded at least this much in 24 hours (USD). |
| `maxPairAgeHours` | number | (none) | Only tokens whose pair was created at most this many hours ago. |
| `maxResults` | integer | 1000 | With monitoring off, at most this many token rows. |
| `monitoringMode` | boolean | false | Return only tokens with a listing not returned by an earlier monitoring run. |
| `resetMonitoringState` | boolean | false | Forget what monitoring remembered, so the next monitoring run returns every token again. Turn it off after one run. |

Examples:

```json
{ "lists": ["latest-profiles", "latest-boosts"], "chains": ["solana"] }
```

```json
{ "lists": ["latest-profiles"], "chains": ["solana", "base"], "minLiquidityUsd": 10000, "maxPairAgeHours": 24, "monitoringMode": true }
```

```json
{ "lists": ["top-boosts"], "chains": ["bsc"] }
```

### Output

One row per token. Example (latest-boosts, read 2026-09-21 UTC):

```json
{
  "chainId": "robinhood",
  "tokenAddress": "0x0E0d2C89a5a019FE1cF762e5e33187631DACC21B",
  "tokenName": "Chump Coin",
  "tokenSymbol": "CHUMP",
  "foundIn": "latest-boosts",
  "dexScreenerUrl": "https://dexscreener.com/robinhood/0x0e0d2c89a5a019fe1cf762e5e33187631dacc21b",
  "website": "https://cc21b.meme",
  "twitter": "https://x.com/ChumpCoinX",
  "telegram": "https://t.me/CHUMPCOIN21B",
  "boostAmount": 100,
  "boostTotalAmount": 200,
  "pairAddress": "0x714442e9A611f8561A7dF108D6d925132937cFb8",
  "dexId": "uniswap",
  "pairLabels": "v3",
  "tokenSideInPair": "base",
  "pairedWithSymbol": "WETH",
  "priceUsd": 0.04927,
  "priceNative": 0.00001783,
  "liquidityUsd": 1589116.84,
  "fdv": 49277789,
  "marketCap": 49277789,
  "volume1h": 120736.52,
  "volume24h": 2478348.9,
  "buys24h": 2336,
  "sells24h": 3180,
  "priceChange1h": 7.44,
  "priceChange24h": 20.3,
  "pairCreatedAt": "2026-07-31T01:44:31.000Z",
  "pairAgeHours": 1262.8,
  "pairActiveBoosts": 200
}
```

| Column | Meaning |
|---|---|
| `foundIn` | The lists the token was in during this run (a token in several lists comes back once). |
| `monitorStatus`, `newIn` | Monitoring mode only: `first-check` (first run, baseline) or `new`, and the lists in which the token had a listing not returned before. |
| `priceUsd`, `priceNative`, `fdv`, `marketCap`, `priceChange5m` ... `priceChange24h` | From the pair, for the token itself. When the token is only the quote side of its pair (`tokenSideInPair` = `quote`), these describe the other token, so they are `null`. |
| `liquidityUsd`, `liquidityBase`, `liquidityQuote`, `volume5m` ... `volume24h`, `buys5m` ... `sells24h` | Pair-level figures as DEX Screener reports them (USD for volume and `liquidityUsd`). Some pairs have no liquidity figure (`null`). |
| `pairCreatedAt`, `pairAgeHours` | When the pair was created. A boosted or taken-over token can have an old pair; use `maxPairAgeHours` to keep only fresh pairs. |
| `boostAmount`, `boostTotalAmount`, `topBoostTotalAmount`, `pairActiveBoosts` | From latest-boosts: this boost order and the token's total; from top-boosts: the total; from the pair: active boosts. |
| `isCommunityTakeover`, `communityTakeoverClaimedAt` | From the token profile flag or the community-takeovers list. |
| `website`, `twitter`, `telegram`, `discord`, `otherLinks`, `description`, `iconUrl`, `headerUrl` | The token's links and profile text as listed on DEX Screener. |

About the pair: DEX Screener's tokens endpoint returns one pair per token. For a new token that is usually its only pool; for an older token it is DEX Screener's pick, not necessarily the pool with the most liquidity.

Rows whose `status` is not `ok` are free and explain themselves in `note`: `no-pair-yet`, `no-tokens`, `blocked`, `unreadable`, `refused`, `not-checked`, `budget-reached`, `no-change-since-last-run`, `invalid-input`.

### Pricing

- **$2.00 per 1,000 token rows** returned.
- Monitoring mode adds **$0.30 per 1,000 checks**: one check per list read in the run, whether or not a new token was found. A list that could not be read is not charged.
- Free rows (the ones that explain why something was not returned) cost nothing.
- The run stops before it would go over the maximum total charge you set, and a free row says what was left out.

### Monitoring mode

Turn on `monitoringMode` and run the Actor on a schedule. The first run returns every token in the chosen lists once as a baseline. Later runs return only tokens with a listing not returned before; a run with none returns one free `no-change-since-last-run` row. Listings are remembered per combination of lists and chains in a named key-value store and forgotten 48 hours after they were last seen in a list. Tokens you did not receive (charge limit reached, no pair yet, below your filters, pair data not readable) are not remembered, so a later run returns them if they are still in a list. Do not put the same lists and chains in two schedules that can run at the same time (Apify's key-value store has no atomic update).

How often to run it: each list keeps only the latest 30 or so entries, so run it at least as often as the list turns over. Measured on 2026-09-21 between 16:27 and 17:07 UTC (the lists read once a minute): 38 new token profiles in 39 minutes (about 1 a minute, so the 30 latest profiles covered about half an hour), 5 new boosted tokens, 3 new entries in the top boosts and 1 new community takeover. Every 5 to 10 minutes keeps up with that pace; the lists are cached by DEX Screener for up to about a minute, so running every minute or more often adds cost without newer entries.

### Notes and limits

- Each list holds only DEX Screener's latest 30 or so entries and has no paging, so this Actor sees what is new now, not a history.
- A run makes a handful of requests: one per list and one per 30 tokens of a chain for the pairs.
- DEX Screener serves its lists from a cache that can be up to about a minute old, so running more often than once a minute does not show newer entries.
- This Actor is not affiliated with or endorsed by DEX Screener. It returns market data; it does not place orders and is not investment advice.

# Actor input Schema

## `lists` (type: `array`):

Which DEX Screener lists to read. latest-profiles = tokens that just got a DEX Screener token profile. latest-boosts = tokens that just bought a boost. top-boosts = tokens with the most active boosts. community-takeovers = tokens whose community just took over the profile. Each list holds only DEX Screener's latest 30 or so entries (no paging). If you choose none, latest-profiles, latest-boosts and community-takeovers are read. A token found in several lists comes back once, with every list named in foundIn.

## `chains` (type: `array`):

Keep only tokens on these chains, one per line, as DEX Screener names them: for example solana, ethereum, bsc, base, arbitrum, polygon, avalanche. eth, bnb, sol, avax, matic, arb and op are accepted as short forms. Empty = every chain. A chain with no token in the lists at the time of the run comes back as a free row listing the chains that were there.

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

Return only tokens whose pair has at least this much liquidity in USD. Tokens whose pair shows no liquidity figure are left out when this is set. In monitoring mode a left-out token is not remembered, so it comes back in a later run if it reaches the minimum while still in a list.

## `minVolume24hUsd` (type: `integer`):

Return only tokens whose pair traded at least this much in the last 24 hours (USD). Left-out tokens are handled as for the liquidity minimum.

## `maxPairAgeHours` (type: `number`):

Return only tokens whose pair was created at most this many hours ago, for example 24 for pairs from the last day.

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

With monitoring off, at most this many token rows are returned (newest first, in list order), and a free row says how many were left out. Free rows do not count. In monitoring mode it does not limit the new tokens returned.

## `monitoringMode` (type: `boolean`):

Off = every token in the chosen lists comes back, charged per row. On = the Actor remembers, per combination of lists and chains, each listing it returned (a profile, a boost order or a takeover of a token), and later runs return only tokens with a listing it has not returned before, marked in newIn. With latest-boosts, a new boost order for an already returned token (its total active boost rose) counts as new; a total that only fell does not. The first run returns every token once as a baseline. Each run costs $0.30 per 1,000 checks, one check per list read (a list that could not be read is free), plus the row price for the tokens returned. Example: 3 lists every 5 minutes = about 26,000 checks a month = about $7.80, plus the new tokens. Each list holds only the latest 30 or so entries, so a schedule that runs less often than the list turns over misses entries (on 2026-09-21 UTC about 1 new token profile a minute, so the 30 latest profiles covered about half an hour). The Actor reads a list only if the run's maximum total charge can pay for a check and one row. Do not put the same lists and chains in two schedules that can run at the same time.

## `resetMonitoringState` (type: `boolean`):

Clears every remembered listing for this Actor, so the next monitoring run returns every token in the lists again as a first check. This affects all your monitoring runs. Turn it off again after one run: left on in a schedule, every run returns every token again and charges for it.

## Actor input object example

```json
{
  "lists": [
    "latest-profiles",
    "latest-boosts"
  ],
  "maxResults": 1000,
  "monitoringMode": false,
  "resetMonitoringState": false
}
```

# Actor output Schema

## `results` (type: `string`):

One row per token newly listed on DEX Screener (token profile, boost or community takeover): chain, token address, name and symbol, where it was found, links, boost amounts, and its trading pair's price in USD, liquidity, FDV, market cap, volume, buys and sells over 5 minutes to 24 hours, price change and pair creation time; in monitoring mode only tokens not returned before. Tokens without a pair yet, lists that could not be read, filters with no match and limits come back as free rows that say why.

# 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 = {
    "lists": [
        "latest-profiles",
        "latest-boosts"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neverempty/dexscreener-new-tokens-monitor").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 = { "lists": [
        "latest-profiles",
        "latest-boosts",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("neverempty/dexscreener-new-tokens-monitor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "lists": [
    "latest-profiles",
    "latest-boosts"
  ]
}' |
apify call neverempty/dexscreener-new-tokens-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neverempty/dexscreener-new-tokens-monitor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4bbe00I38JgGGypVC/builds/yGjoIuJ4ODIooSPTb/openapi.json
