# Pump.fun Token Scraper & Monitor (`muhammetakkurtt/pump-fun-token-scraper-monitor`) Actor

Scrape and monitor Pump.fun tokens: new launches, about to graduate, graduated, trending, KOL-traded, top market cap and influencer callouts. 30+ filters (holders, dev/sniper/bundler share, volume, socials), risk metrics and a watch mode that saves each new token.

- **URL**: https://apify.com/muhammetakkurtt/pump-fun-token-scraper-monitor.md
- **Developed by:** [Muhammet Akkurt](https://apify.com/muhammetakkurtt) (community)
- **Categories:** Automation, Developer tools
- **Stats:** 230 total users, 5 monthly users, 100.0% runs succeeded, 16 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 token records

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

![Pump.fun Token Scraper & Monitor - Real-time Solana Meme Token Tracking Tool](https://github.com/user-attachments/assets/a4b3567b-1ac8-4e46-88ca-a0185c6b37b4)

## Pump.fun Token Scraper & Monitor - Real-time Solana Token Tracking

Scrape and monitor meme tokens on Pump.fun. Pick a feed — brand-new tokens, tokens about to graduate, graduated tokens, trending, top market cap, influencer callouts — narrow it down with 30+ filters, and get clean structured data for every match. Run it once for a snapshot, or leave it watching and it will save each new token the moment it appears.

### Why use this scraper

- **Catch tokens seconds after launch.** The "New tokens" feed returns coins that are a handful of seconds old.
- **Filter the way you actually screen.** Bonding curve progress, holder count, developer holdings, sniper and bundler share, top-10 concentration, volume, transaction counts, KOL activity, socials, name keywords, launch platform.
- **See who is calling a token.** The home feed returns tokens together with the influencer callouts behind them — thesis, entry market cap, PnL and multiple.
- **Every metric on every row.** Market feeds ship the full risk picture — no second lookup needed.
- **Watch mode.** Keep a run open and stream new tokens as they are created.

### 🔗 Related actor

#### [Pump.fun Real-Time Trade Monitor](https://apify.com/muhammetakkurtt/pump-fun-trade-monitor)

Monitors and records real-time trade transactions for Solana tokens on Pump.fun — buy/sell flow, trade volumes and market movement as they happen.

[🔍 Details and usage guide](https://apify.com/muhammetakkurtt/pump-fun-trade-monitor)

### Ready-to-Run Examples

Get started in seconds — open any example in the Apify Console and click **Run**:

- **[New Tokens](https://apify.com/muhammetakkurtt/pump-fun-token-scraper-monitor/examples/scrape-new-pumpfun-tokens)** — the newest tokens launching on Pump.fun, with market cap, volume, bonding curve, and socials.
- **[Graduating Tokens](https://apify.com/muhammetakkurtt/pump-fun-token-scraper-monitor/examples/scrape-graduating-pumpfun-tokens)** — tokens about to graduate to Raydium, with bonding curve progress and holders.
- **[Graduated Tokens](https://apify.com/muhammetakkurtt/pump-fun-token-scraper-monitor/examples/scrape-graduated-pumpfun-tokens)** — tokens that have graduated to Raydium, with market cap, volume, and holders.

### Feeds

Choose one with the **Feed** input.

#### Live market feeds

Rich, fully filterable, up to **150 tokens** per run. Every filter is applied upstream.

| Feed | What it returns |
|---|---|
| `new` | Brand-new tokens, newest first |
| `graduating` | Tokens close to completing their bonding curve |
| `graduated` | Tokens that graduated to PumpSwap, most recent first |
| `trending` | Tokens with the strongest current momentum — like pump.fun's own trending board, it also lists tokens from EVM chains (0x addresses, no `solscanUrl`) |
| `mayhem` | Tokens in Mayhem mode |
| `live` | Tokens with an active livestream |
| `kol` | Tokens being traded by known KOL wallets |
| `charity` | Charity tokens |

#### Deep listings

Page much further — up to **1000 tokens** — sorted by market cap or activity.

| Feed | Sorted by |
|---|---|
| `top-marketcap` | Market cap |
| `recent-trades` | Most recent trade |
| `recent-replies` | Most recent reply |

#### Other feeds

| Feed | What it returns |
|---|---|
| `mayhem-mode` | Mayhem-mode tokens with the complete coin record, up to **1000** |
| `home-feed` | Tokens influencers are calling, with every callout (thesis, PnL, multiple) — the tokens behind the latest **150** callouts |

Deep listings and the other feeds carry the basic token record. Turn on **Add advanced metrics** to also fetch, for each result, the metrics the live market feeds carry (holders, top-10 holder share, developer / sniper / bundler holdings, KOL count, fees, lifetime volume and trades, curve progress) plus price and insider holdings. This happens automatically whenever you set a filter that needs one of those numbers.

### Filters

All optional; leave a field empty to ignore it. They combine freely.

**Market** — market cap (USD), volume (USD or SOL), 24h volume, bonding curve progress (0-100 %), age in seconds.

**Holders and safety** — holder count, top-10 holder share %, developer holdings %, snipers-owned %, bundlers-owned %, KOL trader count.

**Trading activity** — buy / sell / total transaction counts, total fees in SOL.

**Social and keywords** — has Twitter / Telegram / website / any social, name contains, name does not contain, blocked developer wallets, launch platforms, on-chain programs.

> **Age is in seconds.** For "created in the last five minutes", set *Age to (seconds)* = `300`. Percent and SOL filters take decimals, for example *Developer holdings to (%)* = `0.5`.

### Example inputs

**New tokens from the last two minutes with a Twitter account**

```json
{
  "board": "new",
  "maxItems": 150,
  "ageMaxSeconds": 120,
  "hasTwitter": true
}
```

**Safe-looking tokens about to graduate**

```json
{
  "board": "graduating",
  "bondingCurveMin": 85,
  "holdersMin": 100,
  "devHoldingsMaxPercent": 3,
  "snipersOwnedMaxPercent": 10,
  "top10HoldersMaxPercent": 35
}
```

**Top 500 tokens by market cap with holder and risk metrics**

```json
{
  "board": "top-marketcap",
  "maxItems": 500,
  "enrich": true
}
```

**Tokens influencers are calling right now**

```json
{
  "board": "home-feed",
  "maxItems": 50,
  "enrich": true
}
```

**Watch for new dog-themed tokens for 30 minutes**

```json
{
  "board": "new",
  "monitoringDuration": 30,
  "searchKeywords": ["dog", "doge", "shib"],
  "excludeKeywords": ["test"]
}
```

### Output

One row per token with the same shape across every feed (the home feed adds a `narrative` and a `callouts` list).

```json
{
  "mint": "j2eYZpCRAUkNv1Xk2WKaCSUXGsoZzP566aVUwNJpump",
  "name": "XTAL",
  "symbol": "XTAL",
  "description": null,
  "imageUrl": "https://...",
  "chain": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
  "program": "pump",
  "platform": "pump",
  "pair": "SOL",
  "marketCapUsd": 311297199.28,
  "athMarketCapUsd": 311742042.95,
  "priceUsd": 0.3113,
  "bondingCurveProgress": 100,
  "graduated": true,
  "graduatedAt": "2026-08-14T21:12:03+00:00",
  "poolAddress": "5mKiZV9hr4nJfCdj4h1fMXTSrXvThupm7xPw3xWHKw6t",
  "bondingCurveAddress": "8xcQQFha9yUCHKzPs2EiQGVKPNaQei6MeHuqMnzpYFaN",
  "volumeSol": 1321.4,
  "volumeUsd": 99655.2,
  "volume5mUsd": 421.0,
  "volume1hUsd": 8123.5,
  "volume24hUsd": 74210.9,
  "buyTransactions": 2404,
  "sellTransactions": 1877,
  "transactions": 4281,
  "transactions5m": 209,
  "holders": 148649,
  "top10HoldersPercent": 23.4,
  "devHoldingsPercent": 0.02,
  "snipersOwnedPercent": 0.0,
  "bundlerOwnedPercent": 1.2,
  "sniperCount": 6,
  "kolCount": 17,
  "totalFeesSol": 12.01,
  "insidersOwnedPercent": 3.4,
  "insiderCount": 11,
  "bundlerCount": 2,
  "totalFeesUsd": 1502.3,
  "twitterReuseCount": 0,
  "telegramReuseCount": 0,
  "websiteReuseCount": 1,
  "dev": "BAgjbTe2YnbeDVU9i8MsJAVxxsUCte1LhY4KVMW8dtxD",
  "twitter": "https://x.com/...",
  "telegram": null,
  "website": "https://...",
  "hasTwitter": true,
  "hasTelegram": false,
  "hasWebsite": true,
  "hasAnySocial": true,
  "isCurrentlyLive": false,
  "liveParticipants": null,
  "isMayhem": false,
  "mayhemState": null,
  "isCharity": false,
  "isCashbackEnabled": true,
  "createdAt": "2026-08-14T18:40:11+00:00",
  "ageSeconds": 10269,
  "pumpFunUrl": "https://pump.fun/coin/j2eYZpCRAUkNv1Xk2WKaCSUXGsoZzP566aVUwNJpump",
  "solscanUrl": "https://solscan.io/token/j2eYZpCRAUkNv1Xk2WKaCSUXGsoZzP566aVUwNJpump",
  "board": "top-marketcap",
  "scrapedAt": "2026-08-15T09:41:52+00:00"
}
```

Fields that a feed does not provide come back as `null` rather than being dropped, so the shape is stable.

Home feed rows also carry every callout on the token:

```json
{
  "narrative": "AI agents",
  "callouts": [
    {
      "user": "someTrader",
      "wallet": "8h8C783QE93nY5TDBqMtu1ysGgynzPEjraRV1avav78V",
      "pnlUsd": 1840.5,
      "pnlPercent": 212.4,
      "thesis": "Early on the agent narrative, dev still holding.",
      "calledOutAt": "2026-09-21T08:02:02.843Z",
      "calledOutAtMcap": 41000,
      "multiple": 3.1,
      "maxMultiplier": 4.6
    }
  ]
}
```

### Notes

- **Market cap is in USD** (`marketCapUsd`); volume is available in both SOL (`volumeSol`) and USD (`volumeUsd`).
- `chain` is a CAIP-2 chain id (`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` for Solana); `pair` is the quote asset — `SOL`, `USDC`, or the quote token's symbol or address.
- **`graduated`** marks tokens that completed their bonding curve and moved to PumpSwap; `bondingCurveProgress` is the pre-graduation progress in percent.
- Filters on deep listings and the other feeds are applied as the feed is read, which continues until `maxItems` tokens match (or 1000 tokens have been checked). They run after the enrichment step, so a token whose metrics could not be fetched is left out rather than guessed at. Tokens that are no longer active come back with holders and holdings only (top-10 share, KOL count, fees and lifetime volume stay empty), so a filter on those leaves them out.
- `insidersOwnedPercent` is the share of supply held by insider wallets — a strong rug-risk signal alongside developer, sniper and bundler holdings. It comes with **Add advanced metrics** on deep listings and the other feeds.
- `twitterReuseCount` / `telegramReuseCount` / `websiteReuseCount` count other tokens that used the same social link — a recycled link is a common copy-paste scam pattern. They also come with **Add advanced metrics**.
- `transactions`, `buyTransactions`, `sellTransactions`, `volumeSol` and `volumeUsd` are lifetime figures; the `5m` / `1h` / `24h` fields cover those windows.
- The actor rotates proxies automatically and steps up to a residential exit when needed — no proxy input required.

# Actor input Schema

## `board` (type: `string`):

Which slice of pump.fun to scrape. The first eight are live market feeds that support every filter below. Top by market cap, Recently traded and Recently replied are deep listings (up to 1000 tokens). Mayhem mode (full records) lists Mayhem-mode tokens with complete coin data, and Home feed returns the tokens influencers are calling, each with its callouts (thesis, PnL, multiple).

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

How many tokens to return. Live market feeds return up to 150, deep listings and Mayhem mode (full records) up to 1000; the home feed returns the tokens behind its latest 150 callouts.

## `monitoringDuration` (type: `integer`):

Leave at 0 to scrape once and finish. Any higher value keeps the run open for that many minutes and saves each new token as it appears.

## `enrich` (type: `boolean`):

Deep listings, Mayhem mode (full records) and the home feed carry the basic token record. Turn this on to also fetch, for every result, the metrics the live market feeds include (holders, top-10 holder share, developer / sniper / bundler holdings, KOL count, fees, lifetime volume and trades, curve progress) plus price and insider holdings. Tokens that are no longer active come back with holders and holdings only.

## `marketCapMinUsd` (type: `integer`):

Lower bound for market cap in USD.

## `marketCapMaxUsd` (type: `integer`):

Upper bound for market cap in USD.

## `volumeMinUsd` (type: `integer`):

Lower bound for cumulative trading volume in USD.

## `volumeMaxUsd` (type: `integer`):

Upper bound for cumulative trading volume in USD.

## `volumeMinSol` (type: `number`):

Lower bound for cumulative trading volume in SOL.

## `volumeMaxSol` (type: `number`):

Upper bound for cumulative trading volume in SOL.

## `volume24hMinUsd` (type: `integer`):

Lower bound for volume traded in the last 24 hours, in USD.

## `volume24hMaxUsd` (type: `integer`):

Upper bound for volume traded in the last 24 hours, in USD.

## `bondingCurveMin` (type: `number`):

Progress toward graduation, 0-100. Use 90-100 to catch tokens about to graduate.

## `bondingCurveMax` (type: `number`):

Upper bound for bonding curve progress, 0-100. Use a low ceiling to catch tokens that have barely started.

## `ageMinSeconds` (type: `integer`):

Token age in seconds. Set the maximum to 300 for tokens created in the last five minutes.

## `ageMaxSeconds` (type: `integer`):

Upper bound for token age in seconds. Set to 300 for tokens created in the last five minutes.

## `holdersMin` (type: `integer`):

Lower bound for the number of wallets holding the token.

## `holdersMax` (type: `integer`):

Upper bound for the number of wallets holding the token.

## `top10HoldersMinPercent` (type: `number`):

Lower bound for the share of supply held by the ten largest wallets.

## `top10HoldersMaxPercent` (type: `number`):

Share of supply held by the ten largest wallets. A low ceiling filters out concentrated supply.

## `devHoldingsMinPercent` (type: `number`):

Lower bound for the share of supply held by the token creator.

## `devHoldingsMaxPercent` (type: `number`):

Upper bound for the share of supply held by the token creator. A low ceiling filters out tokens where the developer can dump.

## `snipersOwnedMinPercent` (type: `number`):

Lower bound for the share of supply held by sniper wallets.

## `snipersOwnedMaxPercent` (type: `number`):

Upper bound for the share of supply held by sniper wallets.

## `bundlerOwnedMinPercent` (type: `number`):

Lower bound for the share of supply held by bundler wallets.

## `bundlerOwnedMaxPercent` (type: `number`):

Upper bound for the share of supply held by bundler wallets.

## `kolCountMin` (type: `integer`):

Lower bound for how many known KOL wallets have traded the token.

## `kolCountMax` (type: `integer`):

Upper bound for how many known KOL wallets have traded the token.

## `buyTransactionsMin` (type: `integer`):

Lower bound for the number of buy transactions.

## `buyTransactionsMax` (type: `integer`):

Upper bound for the number of buy transactions.

## `sellTransactionsMin` (type: `integer`):

Lower bound for the number of sell transactions.

## `sellTransactionsMax` (type: `integer`):

Upper bound for the number of sell transactions.

## `transactionsMin` (type: `integer`):

Lower bound for the total number of transactions.

## `transactionsMax` (type: `integer`):

Upper bound for the total number of transactions.

## `totalFeesMinSol` (type: `number`):

Lower bound for total fees generated by the token, in SOL.

## `totalFeesMaxSol` (type: `number`):

Upper bound for total fees generated by the token, in SOL.

## `hasTwitter` (type: `boolean`):

Keep only tokens that link a Twitter/X account.

## `hasTelegram` (type: `boolean`):

Keep only tokens that link a Telegram group.

## `hasWebsite` (type: `boolean`):

Keep only tokens that link a website.

## `hasAnySocial` (type: `boolean`):

Keep only tokens that link at least one social account or website.

## `searchKeywords` (type: `array`):

Keep only tokens whose name or symbol matches one of these words.

## `excludeKeywords` (type: `array`):

Drop tokens whose name or symbol matches one of these words.

## `devBlacklist` (type: `array`):

Drop every token created by these wallets.

## `platforms` (type: `array`):

Keep only tokens launched on these platforms.

## `programs` (type: `array`):

Keep only tokens running on these programs.

## Actor input object example

```json
{
  "board": "new",
  "maxItems": 150,
  "monitoringDuration": 0,
  "enrich": false,
  "hasTwitter": false,
  "hasTelegram": false,
  "hasWebsite": false,
  "hasAnySocial": false,
  "searchKeywords": [],
  "excludeKeywords": [],
  "devBlacklist": [],
  "platforms": [],
  "programs": []
}
```

# Actor output Schema

## `tokens` (type: `string`):

Every token saved by the run: market cap, price, bonding curve progress, holders, developer / sniper / bundler / insider share, KOL count, volume, transactions, socials and links.

# 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 = {
    "searchKeywords": [],
    "excludeKeywords": [],
    "devBlacklist": [],
    "platforms": [],
    "programs": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammetakkurtt/pump-fun-token-scraper-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 = {
    "searchKeywords": [],
    "excludeKeywords": [],
    "devBlacklist": [],
    "platforms": [],
    "programs": [],
}

# Run the Actor and wait for it to finish
run = client.actor("muhammetakkurtt/pump-fun-token-scraper-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 '{
  "searchKeywords": [],
  "excludeKeywords": [],
  "devBlacklist": [],
  "platforms": [],
  "programs": []
}' |
apify call muhammetakkurtt/pump-fun-token-scraper-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,muhammetakkurtt/pump-fun-token-scraper-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/y4JKXlhRDW0IpN1Ef/builds/2spQHYIL2XXv1MtC3/openapi.json
