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"e=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"e=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
- Uniswap v4 pool liquidity is not measured (flag
v4-liquidity-unknown), and the token screen searches v2, v3 and Aerodrome pools. A token that only trades in a v4 pool can therefore come back HIGH_RISK with "no pool found". Treat that as not verifiable, not proof of a scam. /launch-scanscreens at most 10 tokens within a roughly 20 second budget; tokens that do not finish are returned withscreened: false.- Brand-new tokens are inherently risky. Not financial advice.
More guides
TokenGuard Base overview/openapi.jsonllms.txt
Sister services
- BaseLens: Base chain tools: tx explainer, wallet snapshot, x402 endpoint check, web-to-markdown
- DepVet: npm and PyPI package vetting before install
- MacroLens: country macro statistics and company registries (Norway, France)
- SkyFeed: weather forecasts, US alerts, earthquakes and public holidays
- ChainRead: gas, balances, ENS and Basename resolution on Base and Ethereum