# DEX New Pairs & Top Pairs Scraper (DexScreener Data) (`mrdoe/dex-pair-scraper`) Actor

New token pairs, top pairs by volume and pair lookups across Solana, Ethereum, BNB Chain, Base and more: price, liquidity, 24h volume and launch time. Brand-new pairs kept with nulls. No API key.

- **URL**: https://apify.com/mrdoe/dex-pair-scraper.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 pair discovereds

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/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 New Pairs & Top Pairs Scraper (DexScreener Data) - DEX new pairs and top pairs scraper with price, liquidity and volume](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/dex-pair-scraper--hero.png)

### What does DEX New Pairs & Top Pairs Scraper (DexScreener Data) do?

DEX New Pairs & Top Pairs Scraper returns decentralized exchange trading pairs as one row each, with the DEX, base and quote token, USD price, liquidity, 24-hour volume, 24-hour price change and the time the pair was created. It has three modes: new pairs launched within the last N hours, the top pairs by 24-hour volume, and a lookup of specific pair addresses. It supports Solana, Ethereum, BNB Chain, Base, Arbitrum, Polygon, Avalanche, Optimism, Sui and Blast.

### Why use DEX New Pairs & Top Pairs Scraper (DexScreener Data)?

- Discovery and lookup in one Actor: new pairs, top pairs by volume and specific pairs.
- Figures come from DexScreener's public API, so they match what traders see on DexScreener.
- Brand-new pairs are kept with nulls when liquidity is not indexed yet, because a new pair with no liquidity is itself a signal.
- Every row is stamped with the exact collection time, so you know how fresh the liquidity figure is.
- No account or API key needed.

### What makes this different

Most DEX scrapers only read a fixed leaderboard. This Actor discovers pairs by launch time or volume on ten chains, adds DexScreener figures for each pair, and keeps very new pairs as rows with null fields instead of dropping them.

### Who can use the DEX Pair Scraper and how?

- **Token launch hunters:** monitor new pairs on Solana, Base and other chains within minutes of launch and filter by minimum liquidity.
- **Trading bot builders:** feed a bot with fresh pairs, prices and liquidity through a schedule and the Apify API.
- **Market data analysts:** snapshot the top pairs by volume on each chain and track liquidity and volume over time.
- **Researchers:** study launch activity, liquidity at launch and price change across chains.
- **Community and alert channels:** post new-pair alerts to Telegram or Discord from a webhook.
- **Portfolio trackers:** look up the current price, liquidity and volume of specific pair addresses in bulk.

### How it works

![DEX New Pairs & Top Pairs Scraper (DexScreener Data) workflow: your input, collection, output](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/dex-pair-scraper--how-it-works.png)

1. **Your input** — choose a chain and a mode: new pairs, top by volume or specific pairs.
2. **The Actor collects it** — the Actor finds the pairs and reads their current price, liquidity and volume.
3. **Your output** — you get one row per pair, stamped with the collection time.

### What data can you extract?

The dataset has 22 fields per row:

| Field                  | Type   | Description                                                                               |
| ---------------------- | ------ | ----------------------------------------------------------------------------------------- |
| `chain`                | string | Chain id, for example solana or ethereum.                                                 |
| `dex`                  | string | DEX name with version when available, for example uniswap_v3.                             |
| `pair_address`         | string | Pair or pool address.                                                                     |
| `base_token`           | object | Base token: symbol, address, name.                                                        |
| `quote_token`          | object | Quote token: symbol, address.                                                             |
| `price_usd`            | number | Base token price in USD.                                                                  |
| `liquidity_usd`        | number | Liquidity in USD, null when not indexed yet.                                              |
| `volume_24h_usd`       | number | Trading volume over 24 hours in USD.                                                      |
| `pair_created_at`      | string | When the pair was created (ISO 8601).                                                     |
| `price_change_24h_pct` | number | Price change over 24 hours in percent.                                                    |
| `pair_url`             | string | DexScreener link to the pair.                                                             |
| `price_change_1h_pct`  | number | Price change over 1 hour in percent.                                                      |
| `volume_1h_usd`        | number | Trading volume over 1 hour in USD.                                                        |
| `txns_24h_buys`        | number | Buy transactions in 24 hours.                                                             |
| `txns_24h_sells`       | number | Sell transactions in 24 hours.                                                            |
| `fdv_usd`              | number | Fully diluted valuation in USD.                                                           |
| `market_cap_usd`       | number | Market capitalization in USD.                                                             |
| `data_notes`           | array  | Plain-language notes about missing or fallback data.                                      |
| `fetch_path`           | string | dexscreener_api, or pool_index_fallback when the pair was not indexed by DexScreener yet. |
| `source`               | string | dexscreener, or geckoterminal for fallback rows.                                          |
| `scraped_at`           | string | Collection time (ISO 8601).                                                               |
| `actor_version`        | string | Output schema version.                                                                    |

### How to use DEX New Pairs & Top Pairs Scraper (DexScreener Data)

![DEX New Pairs & Top Pairs Scraper (DexScreener Data) input form](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/dex-pair-scraper--input.png)

1. Open the Actor and go to the **Input** tab.
2. Choose a **Chain** and a **Mode**, set **Max pair age** for new pairs or paste **Pair addresses** for a lookup, and set **Max pairs**.
3. Optionally set filters and a **Max results** limit.
4. Click **Start**. A default run finishes in under a minute.
5. Open the **Output** tab, then download the dataset or connect it to your tools.

### Input Parameters

| Parameter            | Type    | Required | Default                   | Description                                                                                                                                           |
| -------------------- | ------- | -------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chain`              | string  | No       | `"solana"`                | Blockchain to read pairs from.                                                                                                                        |
| `mode`               | string  | No       | `"new_pairs"`             | New pairs lists recently launched pairs, top by volume lists the most traded pairs, specific pair looks up the pair addresses you provide.            |
| `pairAddresses`      | array   | No       | `[]`                      | Pool or pair addresses to look up, one per line. Only used in specific pairs mode.                                                                    |
| `maxAgeHours`        | integer | No       | `6`                       | New pairs mode only: keep pairs launched within this many hours.                                                                                      |
| `minLiquidityUsd`    | number  | No       | —                         | Skip pairs with less liquidity than this. Pairs whose liquidity is not indexed yet are skipped when a minimum is set. Leave empty to keep everything. |
| `maxItems`           | integer | No       | `10`                      | Maximum number of pairs returned. Default is 10 for a quick test; the limit per run is 200.                                                           |
| `deltaMode`          | boolean | No       | `false`                   | Return and bill only pairs not delivered by an earlier run with the same delta key. Ideal for a scheduled new-pair feed.                              |
| `deltaStateKey`      | string  | No       | `"default"`               | Name of the tracked stream. Use a different key per feed.                                                                                             |
| `proxyConfiguration` | object  | No       | `{"useApifyProxy":false}` | Optional proxy. Public market data normally works without one.                                                                                        |

### Output Data

![DEX New Pairs & Top Pairs Scraper (DexScreener Data) dataset table](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/dex-pair-scraper--output.png)

`price_usd`, `liquidity_usd` and `volume_24h_usd` are US dollar figures at collection time (`scraped_at`, to the second). Fields that the source has not produced yet, such as liquidity for a pair that launched seconds ago, are `null`, and `data_notes` explains why. `dex` includes the version when the DEX has one, for example `uniswap_v3`.

![DEX New Pairs & Top Pairs Scraper (DexScreener Data) field map of one record](https://api.apify.com/v2/key-value-stores/kE36venAoVchGsE6b/records/dex-pair-scraper--fields.png)

A real dataset item:

```json
{
    "chain": "solana",
    "dex": "meteora",
    "pair_address": "CPKNeBcNCwhuSUPHcsYEf28HxwqvbXBihZjqi6eyGpFw",
    "base_token": {
        "symbol": "Kitty",
        "address": "Fr4Vxax7gBQJAsQCFs73AsJMBTjRwXB8JRcfbQjeWQzb",
        "name": "Kitty Explain"
    },
    "quote_token": {
        "symbol": "SOL",
        "address": "So11111111111111111111111111111111111111112"
    },
    "price_usd": 0.0002606,
    "liquidity_usd": 6488.82,
    "volume_24h_usd": 14577.98,
    "pair_created_at": "2026-09-25T19:44:59.000Z",
    "price_change_24h_pct": 437,
    "price_change_1h_pct": 437,
    "volume_1h_usd": 14577.98,
    "txns_24h_buys": 471,
    "txns_24h_sells": 489,
    "fdv_usd": 260625,
    "market_cap_usd": 260625,
    "pair_url": "https://dexscreener.com/solana/cpknebcncwhusuphcsyef28hxwqvbxbihzjqi6eygpfw",
    "data_notes": [],
    "source": "dexscreener",
    "fetch_path": "dexscreener_api",
    "scraped_at": "2026-09-25T19:47:55.471Z",
    "actor_version": "1.0.0"
}
```

### How to read and use the results

Each row is one trading pair, stamped with the exact time it was read.

1. **Check liquidity_usd first.** Pairs with tiny or null liquidity are usually not tradable.
2. **Use pair_created_at** to see how new the pair is.
3. **Null fields are meaningful.** A brand-new pair may not be indexed yet; data_notes says so.
4. **Open pair_url** to see the chart on DexScreener.
5. **This is discovery data, not a safety check.** Many new pairs are scams or abandoned tokens.

### Usage Examples

#### New Solana pairs from the last 6 hours

```json
{
    "chain": "solana",
    "mode": "new_pairs",
    "maxAgeHours": 6,
    "maxItems": 20
}
```

#### Top Ethereum pairs by volume with real liquidity

```json
{
    "chain": "ethereum",
    "mode": "top_by_volume",
    "minLiquidityUsd": 100000,
    "maxItems": 50
}
```

#### Look up specific pairs

```json
{
    "chain": "solana",
    "mode": "specific_pair",
    "pairAddresses": ["C1MgLojNLWBKADvu9BHdtgzz1oZX4dZ5zGdGcgvvW8Wz"]
}
```

#### Live new-pair feed (only new)

```json
{
    "chain": "base",
    "mode": "new_pairs",
    "maxAgeHours": 1,
    "minLiquidityUsd": 5000,
    "deltaMode": true,
    "deltaStateKey": "base-feed"
}
```

### Tips for Best Results

- Set a minimum liquidity to filter out empty and throwaway pairs.
- Schedule new pairs mode every few minutes with a short max age to build a launch feed.
- Use scraped_at, not the launch time, to judge how fresh a liquidity figure is.
- Pairs are returned once per run; run the Actor again for a fresh snapshot.
- Default is 5 results for a fast test. Set the max to 0 to return everything available.

### Reliability by mode

| Mode                    | Status | Needs login or key? | Notes                                                         |
| ----------------------- | ------ | ------------------- | ------------------------------------------------------------- |
| New pairs               | ✅     | No                  | Newest pools of the chain, enriched with DexScreener figures. |
| Top by volume           | ✅     | No                  | Up to 200 pools per chain per run.                            |
| Specific pairs          | ✅     | No                  | Any pair DexScreener knows.                                   |
| Pairs seconds old       | 🟡     | No                  | Kept with null fields until indexers catch up.                |
| Chains outside the list | ❌     | -                   | Ten major chains are supported.                               |

✅ works as described, 🟡 works with caveats, ❌ not supported.

### Only new records (delta mode)

Turn on **Only new pairs (delta mode)** with a **Delta key** and schedule the Actor every few minutes. Each run returns, and bills, only pairs that earlier runs of that key have not delivered: a live new-pair feed instead of the same list again.

### Known Limitations

- Most brand-new pairs are low quality or scam tokens. The Actor returns raw discovery data and makes no safety judgment; nothing is labeled safe or verified.
- Pair discovery uses a pool index and is capped at the 200 newest or highest-volume pools per chain per run.
- Pairs that DexScreener has not indexed yet use fallback figures and are marked in data_notes; price and volume may differ slightly from DexScreener.
- Liquidity and volume change quickly; each row is a snapshot at scraped_at.
- Only the listed chains are supported.
- This is market data, not investment advice.

### Integrations

Run it from the Apify API, on a schedule, or from a webhook. Send results straight to Google Sheets, Make, Zapier, Slack or your own database with Apify's built-in integrations.

### Export Formats

Download the dataset as JSON, CSV, Excel, XML, HTML table or RSS from the **Output** tab or the API.

### Frequently Asked Questions

#### Where does the data come from?

Pair figures come from the public DexScreener API. New and top pairs are discovered through a public pool index (GeckoTerminal); both are official public APIs, not scraped web pages. Rate limits are respected by default.

#### Does it need an API key?

No. It reads public market data.

#### Why are liquidity and volume sometimes null?

Very new pairs may not be indexed yet. The row is kept, the fields are null, and data_notes says why.

#### Does it tell me which tokens are safe?

No. New pairs are frequently scams or abandoned tokens. This Actor only delivers market data.

#### Am I charged for failed results?

No. You are only charged for pairs that are written to the dataset.

#### How do I find new tokens on Solana?

Choose Solana, mode New pairs and a short max age (for example 6 hours), set a minimum liquidity, and schedule the Actor every few minutes.

#### Do I need an account or login?

No. The Actor reads public market data and needs no account or API key.

#### Am I charged for failed runs or empty results?

You are only charged for results that are actually written to the dataset.

#### Can I run it on a schedule?

Yes. Create a Task with your input and add a schedule in Apify Console. With monitor mode on, each scheduled run returns only what changed since the previous one.

### Changelog

- **2026-09-26:** Added delta mode, tiered pricing (discovery versus lookup), 1h change, buy/sell counts, FDV, market cap and the fetch_path field.
- **2026-09-25:** First release: new pairs, top by volume and specific pair lookup on ten chains.

### Enterprise and custom work

Need higher volumes, a custom output schema, dedicated scheduling or a no-breaking-changes commitment for a production pipeline? Open an issue on the Actor page and describe your use case. Bulk terms and custom builds are available.

### Support

Questions or a missing field? Open an issue from the **Issues** tab on this Actor's page and it will be looked at.

### Legal / Responsible Use

This Actor reads public market data from the DexScreener and GeckoTerminal public APIs within their published rate limits. You are responsible for how you use the data. It is not financial advice and not affiliated with either provider.

# Actor input Schema

## `chain` (type: `string`):

Blockchain to read pairs from.

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

New pairs lists recently launched pairs, top by volume lists the most traded pairs, specific pair looks up the pair addresses you provide.

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

Pool or pair addresses to look up, one per line. Only used in specific pairs mode.

## `maxAgeHours` (type: `integer`):

New pairs mode only: keep pairs launched within this many hours.

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

Skip pairs with less liquidity than this. Pairs whose liquidity is not indexed yet are skipped when a minimum is set. Leave empty to keep everything.

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

Maximum number of pairs returned. Default is 10 for a quick test; the limit per run is 200.

## `deltaMode` (type: `boolean`):

Return and bill only pairs not delivered by an earlier run with the same delta key. Ideal for a scheduled new-pair feed.

## `deltaStateKey` (type: `string`):

Name of the tracked stream. Use a different key per feed.

## `proxyConfiguration` (type: `object`):

Optional proxy. Public market data normally works without one.

## Actor input object example

```json
{
  "chain": "solana",
  "mode": "new_pairs",
  "pairAddresses": [],
  "maxAgeHours": 6,
  "maxItems": 10,
  "deltaMode": false,
  "deltaStateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "chain": "solana",
    "mode": "new_pairs",
    "maxAgeHours": 6,
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/dex-pair-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 = {
    "chain": "solana",
    "mode": "new_pairs",
    "maxAgeHours": 6,
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/dex-pair-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 '{
  "chain": "solana",
  "mode": "new_pairs",
  "maxAgeHours": 6,
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call mrdoe/dex-pair-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/dex-pair-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/U5luMDFWffgMMfWAe/builds/EzqNe0cXAOMvcQnG8/openapi.json
