TokenGuard Base / Guides

List new token launches on Base programmatically

Sniper bots, dashboards and research agents all need the same feed: which pools were created on Base in the last few minutes. This is how to get it over plain HTTP.

The problem

To find new launches yourself you have to scan factory events on Uniswap v2, v3 and v4 and Aerodrome, decode token metadata, work out which side of the pair is the new token and estimate a price. That is a lot of RPC work for a list you will refresh every minute.

How /new-pools and /launch-scan work

GET /new-pools returns pools created within minutes (1-120, default 30), filtered by quote (any, weth or usdc) and minLiquidityUsd, up to limit pools. Each pool has the DEX, pool address, creation time, age in minutes, token symbol and decimals, quote token, price and flags such as custom-hooks or low-liquidity. GET /launch-scan takes the newest pools and runs the honeypot and rug pull check from /token-risk on each token (at most 10 per call), adding verdict, riskScore and riskFlags to every pool. See the honeypot check guide for how verdicts are computed.

Request and response

Example for the raw feed, newest WETH-quoted pools.

$ curl -i "https://tokenguard.imac2014ville.workers.dev/new-pools?minutes=30&quote=weth&limit=2"
HTTP/2 402
payment-required: eyJ4NDAyVmVyc2lvbiI6Mi4uLn0=   # base64 JSON: scheme "exact", network eip155:8453,
                                                  # asset USDC, amount 10000 (= $0.01)
# An x402 client signs the payment, then retries with a PAYMENT-SIGNATURE header.

The paid response (abridged sample of one pool):

{
  "ok": true,
  "chain": "base",
  "minutes": 30,
  "count": 2,
  "pools": [{
    "dex": "uniswap-v4",
    "createdAt": "2026-10-09T18:18:07.000Z",
    "ageMinutes": 0.4,
    "token": { "symbol": "UNITS", "decimals": 18 },
    "quote": { "symbol": "WETH" },
    "liquidityUsd": null,
    "priceUsd": 0.000003,
    "flags": ["v4-liquidity-unknown", "custom-hooks"]
  }],
  "note": "Run /token-risk on any token before buying"
}

JavaScript with @x402/fetch

import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const signer = privateKeyToAccount(process.env.PRIVATE_KEY); // wallet holding USDC on Base
const pay = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(signer) }],
});
const res = await pay("https://tokenguard.imac2014ville.workers.dev/launch-scan?minutes=30&quote=weth&limit=5");
const { pools } = await res.json();
const candidates = pools.filter(p => p.verdict === "LOW_RISK" || p.verdict === "CAUTION");

Pricing

/new-pools costs $0.01 per call and /launch-scan costs $0.03 per call. There is no API key and no account: each request is paid in USDC on Base over x402. Malformed input returns 400 and failed lookups return a non-2xx status, so those are not charged.

Limitations

More guides

Sister services