# Token Safety Scanner — Honeypot & Rug Check (EVM + Solana) (`aspiring_barricade/crypto-token-safety-scanner`) Actor

Multi-chain honeypot & rug check in one call: sell-simulation, mint/freeze authority, taxes, holder concentration, LP lock, liquidity and serial-scammer creator across Ethereum, BSC, Base, Polygon, Arbitrum, Optimism, Avalanche and Solana. Calibrated 0-100 safety score per token.

- **URL**: https://apify.com/aspiring\_barricade/crypto-token-safety-scanner.md
- **Developed by:** [Joachim Pouchain](https://apify.com/aspiring_barricade) (community)
- **Categories:** Agents, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Token Safety Scanner — Honeypot & Rug Check (EVM + Solana)

A **multi-chain token safety** scanner that bundles a **honeypot checker**, **rug pull detector** and a calibrated **token risk score (0–100)** into a single call. Check **pre-trade safety** for any token across **Ethereum, BSC, Base, Polygon, Arbitrum, Optimism, Avalanche and Solana** — in one batch, with one consistent schema. Built for trading bots, AI agents and due-diligence workflows that need a fast, opinionated *“is this token safe to buy?”* answer.

Unlike Solana-only or single-chain scanners, this actor is a **multi-chain token check**: pass a mix of EVM and Solana tokens together and get back a per-token **safety score**, **risk level**, and the detail of every check.

### What it does

- **Honeypot scanner** — detects tokens you can buy but **cannot sell** (sell-simulation + contract flags).
- **Rug-pull risk** — mint/freeze authority, ownership reclaim, hidden owner, self-destruct, blacklist.
- **Calibrated 0–100 safety score** — not just LOW/MEDIUM/HIGH or an A–F grade. One number you can threshold on.
- **Buy/sell tax** — real percentages from sell simulation, with extreme-tax penalties.
- **Holder concentration & liquidity** — top-holder %, holder count, USD liquidity, 24h volume.
- **LP lock** — whether liquidity is locked or burned (EVM).
- **Serial-scammer creator** — flags deployers linked to prior honeypot / phishing / scam activity.
- **Batch input** — score a whole watchlist of tokens (any chains) in one run.

### What is checked

| Check | EVM | Solana | Meaning |
|-------|:---:|:-----:|---------|
| Honeypot / sell simulation | ✅ | ⚠️ authority-based | Can the token actually be sold? |
| Sell tax / buy tax | ✅ | — | Hidden transfer taxes |
| Mint authority | ✅ (`mintable`) | ✅ | Can supply be inflated? |
| Freeze authority | ✅ (`pausable`) | ✅ | Can your wallet be frozen? |
| Contract verified | ✅ | — | Is the source code public? |
| Ownership reclaim / hidden owner | ✅ | — | Owner backdoors |
| Self-destruct / blacklist | ✅ | — | Kill-switch & blocklists |
| Holder concentration | ✅ | ✅ | Whale / insider dominance |
| LP lock / burn | ✅ | — | Can liquidity be pulled? |
| Liquidity & volume | ✅ | ✅ | Exit liquidity (DexScreener) |
| Serial-scammer creator | ✅ | ✅ | Deployer reputation |

**Sources (all free & official):** [GoPlus Security](https://gopluslabs.io) (EVM + Solana token security), [Honeypot.is](https://honeypot.is) (EVM sell simulation), [DexScreener](https://dexscreener.com) (liquidity, price, volume).

### Why this one

- **Multi-chain in one call.** Most safety actors are **Solana-only** or single-EVM-chain. This one does **EVM + Solana** together — the differentiator. Search-friendly for `multi-chain token safety`, `EVM token safety`, `Solana token safety`.
- **A real 0–100 score**, calibrated and explained by per-check flags — not a vague band or letter grade.
- **More checks than typical scanners**, including LP lock, buy/sell tax and **serial-scammer creator** reputation.
- **Agent- & bot-ready.** Clean JSON, one row per token, `safety_score` + `risk_level` + `verdict` + a structured `checks` object you can branch on.
- **Robust by design.** Retries/backoff on every upstream, missing fields become `null` (never a crash), and per-source `sources_ok` tells you what responded.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `tokens` | array | List of `{ "chain": <chain>, "address": <contract/mint> }`. Chains: `ethereum, bsc, base, polygon, arbitrum, optimism, avalanche, solana`. **Required.** |
| `max_items` | integer | Hard cap on tokens scanned/charged per run (cost control). Default 25. |

#### Example input

```json
{
  "tokens": [
    { "chain": "ethereum", "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7" },
    { "chain": "base", "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed" },
    { "chain": "solana", "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" }
  ],
  "max_items": 25
}
```

### Output

One dataset item per token. Real output for the Base token **DEGEN**:

```json
{
  "chain": "base",
  "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed",
  "symbol": "DEGEN",
  "name": "Degen",
  "safety_score": 90,
  "risk_level": "safe",
  "verdict": "Low risk on automated checks. Always DYOR.",
  "is_honeypot": false,
  "buy_tax_pct": 0,
  "sell_tax_pct": 0,
  "holder_count": 1182182,
  "creator_address": "0x3C12B77aE8B7DD1FEB63D1D6a2A819AcdA0a41d2",
  "flags": ["LP not locked or burned"],
  "checks": {
    "honeypot": { "status": "pass", "detail": "no honeypot detected", "is_honeypot": false },
    "sell_simulation": { "status": "pass", "detail": "sell simulation ok" },
    "sell_tax": { "status": "pass", "detail": "sell tax 0.0%", "sell_tax_pct": 0 },
    "buy_tax": { "status": "pass", "detail": "buy tax 0.0%", "buy_tax_pct": 0 },
    "contract_verified": { "status": "pass", "detail": "source code verified" },
    "mint_authority": { "status": "pass", "detail": "supply not mintable" },
    "freeze_authority": { "status": "pass", "detail": "transfers cannot be paused" },
    "holder_concentration": { "status": "pass", "detail": "top holder owns 23.0%", "top_holder_pct": 22.99, "holder_count": 1182182 },
    "lp_lock": { "status": "warn", "detail": "LP not locked or burned", "lp_locked": false },
    "liquidity": { "status": "pass", "detail": "liquidity $1,304,863", "liquidity_usd": 1304863.18 },
    "creator_reputation": { "status": "pass", "detail": "creator not flagged by GoPlus", "creator_address": "0x3C12B77aE8B7DD1FEB63D1D6a2A819AcdA0a41d2", "malicious": null }
  },
  "market": {
    "price_usd": 0.001587,
    "liquidity_usd": 1304863.18,
    "volume_24h_usd": 68387.56,
    "dex": "uniswap",
    "pair_url": "https://dexscreener.com/base/0xc9034c3e7f58003e6ae0c8438e7c8f4598d5acaa"
  },
  "sources_ok": { "goplus": true, "honeypot_is": true, "dexscreener": true },
  "source": "GoPlus Security + Honeypot.is + DexScreener",
  "timestamp": "2026-06-29T09:46:49.267Z",
  "disclaimer": "Automated heuristic safety check, not financial advice. Always do your own research (DYOR)."
}
```

#### Output fields

- `safety_score` — 0–100 (100 = safest). A honeypot forces the score to 0.
- `risk_level` — `safe` (≥80), `low_risk` (≥60), `caution` (≥40), `high_risk` (<40), or `critical` (honeypot).
- `verdict` — one-line human/LLM-ready summary.
- `is_honeypot`, `buy_tax_pct`, `sell_tax_pct`, `holder_count`, `creator_address` — headline signals.
- `flags` — array of human-readable red flags.
- `checks` — structured per-check object (`status`: pass / warn / fail / unknown + `detail`).
- `market` — price, liquidity, 24h volume, DEX and pair URL (DexScreener).
- `sources_ok` — which upstream sources responded for this token.
- `source`, `timestamp`, `disclaimer`.

### Use cases

- **Trading bots & snipers** — gate every buy on `safety_score` and `is_honeypot` before sending a transaction.
- **AI agents** — a single tool call returns a structured, multi-chain safety verdict an LLM can reason over.
- **Due diligence** — screen a watchlist of new listings across chains in one run.
- **Alerts & monitoring** — schedule the actor on a token list and watch for risk-level changes.

### Pricing

Pay-per-result: you are charged **per token scanned** (target **$0.002 per result**, i.e. **$2 / 1,000**), plus Apify platform usage. `max_items` caps your spend. (Final price is set on the Store listing.)

### Categories

`Developer tools`, `Automation`, `Agents`.

### Notes & limits

- Heuristic, automated checks — **not financial advice**. Always do your own research.
- Solana has no reliable on-chain sell-simulation, so Solana safety relies on **mint/freeze authority**, holder concentration, creator reputation and liquidity (honeypot status is reported as `unknown` rather than guessed).
- A token not yet indexed by any source (brand-new / wrong address / unsupported chain) is reported as an error for that entry and is **not charged**.
- Centralized stablecoins (e.g. Circle's USDC on Solana) legitimately keep mint/freeze authority — the scanner reports the raw on-chain fact; read the flags in context.

### Use as an MCP tool (AI agents)

This Actor is available as an **MCP tool** for AI agents (Claude, ChatGPT, Cursor, etc.) through Apify’s hosted MCP server. Point your MCP client at:

```
https://mcp.apify.com/?actors=aspiring_barricade/crypto-token-safety-scanner
```

The Actor’s input schema becomes the tool’s parameters automatically. An Apify API token is required.

### Use in n8n

Run this Actor inside your [n8n](https://n8n.io) workflows using the official **Apify** node (search “Apify” in the n8n nodes panel) and select the Actor `aspiring_barricade/crypto-token-safety-scanner`. A dedicated community node (`n8n-nodes-token-safety-scanner`) is also being published to npm for one-click installation via **n8n → Settings → Community Nodes**.

# Actor input Schema

## `tokens` (type: `array`):

List of tokens to scan. Each item is { "chain": <chain>, "address": \<contract/mint address> }. Supported chains: ethereum, bsc, base, polygon, arbitrum, optimism, avalanche, solana. EVM addresses are 0x + 40 hex; Solana uses the base58 mint address.

## `max_items` (type: `integer`):

Hard cap on how many tokens are scanned (and charged) in one run. Protects your spend.

## Actor input object example

```json
{
  "tokens": [
    {
      "chain": "ethereum",
      "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
    },
    {
      "chain": "base",
      "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"
    },
    {
      "chain": "solana",
      "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
    }
  ],
  "max_items": 25
}
```

# 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 = {
    "tokens": [
        {
            "chain": "ethereum",
            "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
        },
        {
            "chain": "base",
            "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"
        },
        {
            "chain": "solana",
            "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
        }
    ],
    "max_items": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("aspiring_barricade/crypto-token-safety-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 = {
    "tokens": [
        {
            "chain": "ethereum",
            "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
        },
        {
            "chain": "base",
            "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed",
        },
        {
            "chain": "solana",
            "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
        },
    ],
    "max_items": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("aspiring_barricade/crypto-token-safety-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 '{
  "tokens": [
    {
      "chain": "ethereum",
      "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
    },
    {
      "chain": "base",
      "address": "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed"
    },
    {
      "chain": "solana",
      "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
    }
  ],
  "max_items": 25
}' |
apify call aspiring_barricade/crypto-token-safety-scanner --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dYm5tQUvwKFqWXdt7/builds/05li9hrbvKuWa94tU/openapi.json
