# DexScreener Token Pair & Boosted Token Scraper (`dataspryva/dexscreener-token-pair-and-boosted-token-scraper`) Actor

Look up decentralized exchange trading pairs by token or pair address, search tokens by name or symbol, or pull the latest boosted tokens and token profiles across 20 blockchains. Returns price, liquidity, volume, and transaction counts.

- **URL**: https://apify.com/dataspryva/dexscreener-token-pair-and-boosted-token-scraper.md
- **Developed by:** [Dataspryva](https://apify.com/dataspryva) (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 $0.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## DexScreener Token Pair & Boosted Token Scraper

DexScreener is the market screen for on-chain trading: live pairs across DEXs and dozens of chains, plus the paid boosts, profiles, takeovers, ads and narratives that drive attention. This actor reads DexScreener's official public API and returns clean, analysis-ready records for token research, pair monitoring and promotion tracking. No wallet, API key, cookie or proxy is needed.

### What this actor does

- **Search** tokens and pairs by name, symbol, pair text such as `SOL/USDC`, contract address, or a pasted DexScreener URL.
- **Inspect a token**: best pair per token on one chain, or every pool of the token.
- **Monitor pairs** by address or URL, many at a time.
- **Pull six promotion feeds**: most-boosted tokens, newest boosts, newest profiles, recently updated profiles, community takeovers and paid ads.
- **Follow narratives**: trending metas, then the pairs inside each meta.
- **Check paid orders**: profile, ad and takeover orders plus boost purchases for a token.
- **Filter and sort** by liquidity, 24h volume, market cap, FDV, transactions, 24h price change, pair age, DEX and quote symbol.
- **Token info and risk flags**: logo, header, website and social links when available; heuristic flags such as low liquidity, new pair, sell pressure or no socials.

### Output per record type

Empty fields are omitted. Every record has `recordType`, `siteName` and `scrapedAt`.

#### Pair (`pair`)

- `chainId`, `dexId`, `pairAddress`, `pairUrl`
- `id` - `chain:pairAddress`
- `tokenAddress`, `tokenName`, `tokenSymbol`, `quoteTokenAddress`, `quoteTokenSymbol`
- `baseToken`, `quoteToken` - `{address, name, symbol}`
- `priceNative`, `priceUsd`
- `liquidity` - `{usd, base, quote}`
- `fdv`, `marketCap`
- `volume` - `{h24, h6, h1, m5}`
- `priceChange` - `{h24, h6, h1, m5}`
- `txns` - buy/sell counts for the same windows
- `pairCreatedAt`, `ageHours`
- `labels`, `boosts`
- `buySellRatio24h`, `volumeToLiquidity24h`
- `info` - `{imageUrl, header, openGraph, websites[], socials[]}`
- `flags[]` - `low_liquidity`, `no_liquidity_data`, `suspicious_liquidity`, `new_pair_<N>h`, `sell_pressure`, `no_sells_24h`, `extreme_price_move_24h`, `volume_over_10x_liquidity`, `no_profile`, `no_socials`
- `query`, `rank`, `metaSlug`, `metaName` when relevant
- `querySide`, `tokenPriceUsd` for token lookups where the token is the quote side

#### Boosted token (`boostedToken`) and token profile (`tokenProfile`)

- `chainId`, `tokenAddress`, `tokenUrl`, `pairUrl`
- `icon`, `header`, `openGraph`, `description`, `links[]`
- `boostAmount`, `boostTotalAmount` (boosts)
- `cto` (profiles), `updatedAt` (recently updated profiles)
- `rank`, `listType`
- Market data when enabled: `symbol`, `name`, `priceUsd`, `quoteSymbol`, `dexId`, `liquidityUsd`, `fdv`, `marketCap`, `volume24h`, `priceChange1h`, `priceChange24h`, `pairCreatedAt`, `ageHours`, `pairsFound`, `topPairAddress`, `topPairUrl`

#### Community takeover (`communityTakeover`) and ad (`ad`)

- Takeover: `chainId`, `tokenAddress`, `tokenUrl`, `pairUrl`, `icon`, `header`, `openGraph`, `description`, `links[]`, market data, plus `claimDate`.
- Ad: `tokenAddress`, `tokenUrl`, `adDate`, `adType`, `adImpressions`, optional `adDurationHours`, plus market data.

#### Narrative (`meta`)

- `slug`, `name`, `description`, `icon`, `iconType`
- `marketCap`, `liquidity`, `volume`, `tokenCount`
- `marketCapChange`, `marketCapDelta` for `m5`, `h1`, `h6`, `h24`
- `rank`

#### Paid orders (`orders`)

- `chainId`, `tokenAddress`
- `ordersCount`, `approvedCount`, `hasApprovedProfile`, `hasPaidAds`, `lastPaymentAt`
- `orders[]` - `{type, status, paymentTimestamp}`
- `boosts[]` - `{id, amount, paymentTimestamp}`
- `totalBoostAmount`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search`, `byToken`, `byPair`, `discovery`, `metas`, `metaPairs`, `orders` |
| `queries` | array | – | Names, symbols, `SOL/USDC`, addresses or DexScreener URLs (mode=search) |
| `tokenAddresses` | string | - | Token addresses or URLs, comma/newline separated (mode=byToken, orders) |
| `pairAddresses` | array | - | Pair URLs, `chain:pairAddress`, or bare pair addresses (mode=byPair) |
| `chainId` | string | `all` | Chain scope; required for byToken (unless `all`), bare pairs, and orders |
| `customChainId` | string | - | Override for a chain added after this release |
| `feed` | string | `boostedTop` | `boostedTop`, `boostedLatest`, `profilesLatest`, `profilesUpdated`, `takeovers`, `ads` |
| `metaSlugs` | array | - | Narrative slugs such as `ai`, `dog`, `cat` (mode=metaPairs) |
| `allPools` | boolean | `false` | byToken: every pool of the token instead of the best pair |
| `minLiquidityUsd` / `maxLiquidityUsd` | number | - | Keep pairs inside this liquidity range |
| `minVolume24hUsd` / `maxVolume24hUsd` | number | - | Keep pairs inside this 24h volume range |
| `minMarketCapUsd` / `maxMarketCapUsd` | number | - | Uses market cap, or FDV when market cap is missing |
| `minFdvUsd` / `maxFdvUsd` | number | - | Keep pairs inside this FDV range |
| `minTxns24h` / `maxTxns24h` | integer | - | Buys plus sells in the last 24 hours |
| `minPriceChange24h` / `maxPriceChange24h` | number | - | 24h price change in percent; negatives allowed |
| `minAgeHours` / `maxAgeHours` | number | - | Pair age in hours |
| `dexIds` | array | - | Keep only these DEX protocols |
| `quoteSymbols` | array | - | Keep only these quote assets |
| `sortBy` | string | `none` | Sort by liquidity, volume, market cap, FDV, change, transactions, age or boosts |
| `sortOrder` | string | `desc` | `desc` or `asc`; age ascending means newest first |
| `onePairPerToken` | boolean | `false` | Keep the most liquid pair per token |
| `includeInfo` | boolean | `true` | Add logo, header, websites and socials |
| `includeMarketData` | boolean | `true` | Attach best-pair market data to promotion feeds |
| `expandChainSearch` | boolean | `true` | Widen a chain-filtered search past the 30-pair cap |
| `chainSearchTokens` | integer | `10` | Matching tokens whose pools are fetched when widening |
| `includeFlags` | boolean | `true` | Add heuristic risk flags |
| `newPairHours` | integer | `24` | Threshold for the new-pair flag |
| `maxItemsPerQuery` | integer | `30` | Cap per query, token, feed or meta |
| `maxItems` | integer | `100` | Cap for the whole run |

#### Example: search across all chains

```json
{
  "mode": "search",
  "queries": ["PEPE", "WIF", "AERO"],
  "sortBy": "volume24h",
  "maxItems": 50
}
```

Older saved tasks that use `query`, `pairAddress`, `minVolumeH24`, or the previous mode names (`byTokenAddress`, `byPairAddress`, `trending`, `byProfile`) keep working.

#### Example: every pool of a token on Solana

```json
{
  "mode": "byToken",
  "chainId": "solana",
  "tokenAddresses": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "allPools": true,
  "minLiquidityUsd": 10000,
  "maxItems": 30
}
```

#### Example: newest boosted tokens with market data

```json
{
  "mode": "discovery",
  "feed": "boostedLatest",
  "includeMarketData": true,
  "minLiquidityUsd": 5000,
  "maxItems": 30
}
```

#### Example: paid orders for a token

```json
{
  "mode": "orders",
  "chainId": "solana",
  "tokenAddresses": "So11111111111111111111111111111111111111112",
  "maxItems": 1
}
```

### Use cases

- **Token screening** - rank pairs by liquidity, volume, age or price change before deeper research.
- **Liquidity mapping** - pull every pool of a token to see where it actually trades.
- **Launch monitoring** - watch newest profiles, boosts, takeovers and ads for emerging projects.
- **Narrative research** - follow trending metas and compare the pairs inside them.
- **Promotion due diligence** - check whether a token paid for profiles, ads or boosts.
- **Scheduled snapshots** - keep a time series of prices, liquidity and volume for a watchlist.

### FAQ

#### Is this affiliated with DexScreener?

No. This is an independent actor that reads DexScreener's public API. Data belongs to DexScreener.

#### Do I need a wallet, API key or proxy?

No. Every mode works without an account, key or proxy.

#### Why did I get fewer records than `maxItems`?

DexScreener caps a search at 30 pairs per query and has no pagination. Pools per token are capped at 30. The promotion feeds return at most 30 rows for boosts, profiles and ads, 11 for takeovers, 18 trending narratives and 49 pairs per narrative feed. Repeated boosts or ads for the same token are collapsed into one record. Use multiple queries, `byToken` with `allPools`, or several chains to widen coverage.

#### How do I get every pool of a token?

Use `byToken` with a specific chain and `allPools: true`. A search is capped at 30 pairs across all chains; pool lookup is scoped to the token and chain.

#### Are the filters applied by DexScreener?

No. The public API has no filter parameters, so filters and sorting run in the actor after the fetch. That also means a filter cannot recover rows beyond the source cap.

#### Why are `info` or some flags missing from a pair?

Token images, websites and socials are optional on DexScreener, and some market fields do not exist for brand-new pairs. Missing values are omitted, not sent as null. Flags are heuristics for triage, not verdicts.

#### What is the difference between the boost and profile feeds?

`boostedTop` and `boostedLatest` return tokens with paid boosts (ranked or newest). `profilesLatest` and `profilesUpdated` return token profile submissions, and `takeovers` returns community takeover events.

#### Does this actor include OHLC candles, holders or top traders?

No. Those are not part of DexScreener's official public API. This actor covers pairs, pools, promotion feeds, narratives and paid orders.

#### How fresh is the data?

Every run reads DexScreener live, so prices, liquidity, volume and promotions reflect the market at run time.

#### Is this financial advice?

No. It is market data for research and monitoring; verify token contracts independently.

# Actor input Schema

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

What to collect. Each mode uses its own fields below.

## `queries` (type: `array`):

Token names, symbols, pair text such as SOL/USDC, token addresses, or DexScreener URLs. Multiple queries fan out. (mode=search)

## `tokenAddresses` (type: `string`):

One or more token contract addresses or DexScreener token URLs, separated by commas or new lines. (mode=byToken, orders)

## `pairAddresses` (type: `array`):

Pair URLs, chain:pairAddress, or bare pair addresses. Bare addresses need a specific chain. (mode=byPair)

## `chainId` (type: `string`):

Blockchain to read. Required for byToken when not 'all', for bare pair addresses, and for orders. Also filters search and promotion feeds locally.

## `customChainId` (type: `string`):

Optional override for a chain added after this release, e.g. 'newchain'. When set it replaces Chain.

## `feed` (type: `string`):

Which live promotion feed to read. (mode=discovery)

## `metaSlugs` (type: `array`):

Narrative slugs such as ai, dog, cat, or x402. Run mode=metas to discover live slugs. (mode=metaPairs)

## `allPools` (type: `boolean`):

When on, byToken returns every pool of each token on the chain. When off, it returns the best pair per token.

## `minLiquidityUsd` (type: `number`):

Skip pairs with liquidity below this USD value.

## `maxLiquidityUsd` (type: `number`):

Skip pairs with liquidity above this USD value.

## `minVolume24hUsd` (type: `number`):

Skip pairs with 24-hour volume below this USD value.

## `maxVolume24hUsd` (type: `number`):

Skip pairs with 24-hour volume above this USD value.

## `minMarketCapUsd` (type: `number`):

Skip pairs below this market cap. Uses FDV when market cap is missing.

## `maxMarketCapUsd` (type: `number`):

Skip pairs above this market cap. Uses FDV when market cap is missing.

## `minFdvUsd` (type: `number`):

Skip pairs with a fully diluted valuation below this USD value.

## `maxFdvUsd` (type: `number`):

Skip pairs with a fully diluted valuation above this USD value.

## `minTxns24h` (type: `integer`):

Skip pairs with fewer buys plus sells in the last 24 hours.

## `maxTxns24h` (type: `integer`):

Skip pairs with more buys plus sells in the last 24 hours.

## `minPriceChange24h` (type: `number`):

Skip pairs whose 24-hour price change is below this percent. Negative values allowed.

## `maxPriceChange24h` (type: `number`):

Skip pairs whose 24-hour price change is above this percent. Negative values allowed.

## `minAgeHours` (type: `number`):

Skip pairs younger than this many hours.

## `maxAgeHours` (type: `number`):

Skip pairs older than this many hours. Use 24 to keep pairs launched today.

## `dexIds` (type: `array`):

Keep only these DEX protocols, e.g. uniswap, raydium, aerodrome. Empty means all.

## `quoteSymbols` (type: `array`):

Keep only pairs quoted in these assets, e.g. USDC, SOL, WETH. Empty means all.

## `sortBy` (type: `string`):

Sort results within each query, token, or feed. Missing values are always last.

## `sortOrder` (type: `string`):

Largest/oldest first or smallest/newest first. Pair age ascending means newest first.

## `onePairPerToken` (type: `boolean`):

Keep only the most liquid pair for each token.

## `includeInfo` (type: `boolean`):

Add logo, header image, website and social links when DexScreener has them.

## `includeMarketData` (type: `boolean`):

For promotion feeds, attach price, liquidity, volume, market cap and age of each token's best pair.

## `expandChainSearch` (type: `boolean`):

When a chain is selected, also search quote variants and pull the token pools to get past the 30-pair search cap.

## `chainSearchTokens` (type: `integer`):

How many matching tokens get their pools fetched when widening a chain search. 0 = quote variants only.

## `includeFlags` (type: `boolean`):

Add heuristic flags such as low liquidity, new pair, sell pressure, or no socials.

## `newPairHours` (type: `integer`):

Pairs younger than this many hours get a new_pair flag.

## `maxItemsPerQuery` (type: `integer`):

Maximum records from each query, token, or feed. DexScreener caps search at 30.

## `maxItems` (type: `integer`):

Hard cap on records for the whole run.

## Actor input object example

```json
{
  "mode": "search",
  "queries": [
    "USDC"
  ],
  "chainId": "all",
  "feed": "boostedTop",
  "allPools": false,
  "sortBy": "none",
  "sortOrder": "desc",
  "onePairPerToken": false,
  "includeInfo": true,
  "includeMarketData": true,
  "expandChainSearch": true,
  "chainSearchTokens": 10,
  "includeFlags": true,
  "newPairHours": 24,
  "maxItemsPerQuery": 30,
  "maxItems": 1
}
```

# Actor output Schema

## `records` (type: `string`):

Scraped DexScreener records

# 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 = {
    "mode": "search",
    "queries": [
        "USDC"
    ],
    "chainId": "all",
    "feed": "boostedTop",
    "allPools": false,
    "sortBy": "none",
    "sortOrder": "desc",
    "onePairPerToken": false,
    "includeInfo": true,
    "includeMarketData": true,
    "expandChainSearch": true,
    "chainSearchTokens": 10,
    "includeFlags": true,
    "newPairHours": 24,
    "maxItemsPerQuery": 30,
    "maxItems": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("dataspryva/dexscreener-token-pair-and-boosted-token-scraper").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 = {
    "mode": "search",
    "queries": ["USDC"],
    "chainId": "all",
    "feed": "boostedTop",
    "allPools": False,
    "sortBy": "none",
    "sortOrder": "desc",
    "onePairPerToken": False,
    "includeInfo": True,
    "includeMarketData": True,
    "expandChainSearch": True,
    "chainSearchTokens": 10,
    "includeFlags": True,
    "newPairHours": 24,
    "maxItemsPerQuery": 30,
    "maxItems": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("dataspryva/dexscreener-token-pair-and-boosted-token-scraper").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 '{
  "mode": "search",
  "queries": [
    "USDC"
  ],
  "chainId": "all",
  "feed": "boostedTop",
  "allPools": false,
  "sortBy": "none",
  "sortOrder": "desc",
  "onePairPerToken": false,
  "includeInfo": true,
  "includeMarketData": true,
  "expandChainSearch": true,
  "chainSearchTokens": 10,
  "includeFlags": true,
  "newPairHours": 24,
  "maxItemsPerQuery": 30,
  "maxItems": 1
}' |
apify call dataspryva/dexscreener-token-pair-and-boosted-token-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dataspryva/dexscreener-token-pair-and-boosted-token-scraper"
        }
    }
}
```

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/MOa8uJUJGEpUpfB7L/builds/yo7tmA6LqmLYqmoGa/openapi.json
