Public API
Free JSON API over every token launched on ArrowPad — no key, no signup, open CORS. Prices, market caps, metadata and trades.
Free JSON API over everything launched on ArrowPad — no key, no signup, open
CORS. All responses are application/json. Build trading bots, dashboards, or
aggregators; everything mirrors public on-chain state, so you can always verify
against the contracts directly.
Base URL: https://arrowpad.fun
The API is served by the app itself, not by this docs site. These endpoints live on
arrowpad.fun and are unaffected by anything that happens here.
GET /api/tokens
Every token launched on ArrowPad, newest first — name, symbol, metadata (image, socials), price, market cap, liquidity (ETH + USD), pool, creator, timestamps.
curl -s https://arrowpad.fun/api/tokensconst res = await fetch("https://arrowpad.fun/api/tokens");
const { tokens, ethUsd } = await res.json();
console.log(tokens[0].symbol, tokens[0].marketCapUsd);import requests
r = requests.get("https://arrowpad.fun/api/tokens", timeout=10)
tokens = r.json()["tokens"]
print(tokens[0]["symbol"], tokens[0]["marketCapUsd"]){
"count": 8,
"ethUsd": 1858.67,
"tokens": [
{
"address": "0x0A76353E4AB1124c36FedF0af31fd227056A40A9",
"name": "WhiteCatCoin",
"symbol": "WCAT",
"description": "A White Cat of Elon Musk - 2026",
"image": "https://.../logo.png",
"website": "https://whitecatcoin.com",
"twitter": "https://x.com/WhiteCatCoin",
"pool": "0xb9235E9B241Fc3796171d9E3fE9E016f2782a827",
"creator": "0xB03abf424c2E17883EbDDd33c9061dcd405260D8",
"createdAt": 1784369121,
"createdAtIso": "2026-07-18T10:05:21.000Z",
"priceEth": 3.01699e-9,
"priceUsd": 5.6077e-6,
"marketCapEth": 3.01699,
"marketCapUsd": 5607.61,
"liquidityEth": 0.0301,
"liquidityUsd": 55.95,
"url": "https://arrowpad.fun/robinhood/token/0x0A76353E4AB1124c36FedF0af31fd227056A40A9",
"explorerUrl": "https://robinhoodchain.blockscout.com/token/0x0A76..."
}
]
}GET /api/trending
Coins ranked by ArrowPad's trending score, strongest first — the same order the site's Trending tab uses, plus a 24h price change on every entry. The ranking runs server-side and only the order is published; the scoring itself is not part of the response.
Query: limit (optional).
curl -s "https://arrowpad.fun/api/trending?limit=5"const res = await fetch("https://arrowpad.fun/api/trending?limit=5");
const { tokens } = await res.json();
tokens.forEach((t, i) => console.log(i + 1, t.symbol, t.marketCapUsd));import requests
r = requests.get("https://arrowpad.fun/api/trending", params={"limit": 5}, timeout=10)
for i, t in enumerate(r.json()["tokens"], 1):
print(i, t["symbol"], t["marketCapUsd"], t["change24hPct"]){
"count": 5,
"ethUsd": 1928.79,
"tokens": [
{
"address": "0x0BB6D7e8D0CE0f8601360507B4e9A064Fc7a7477",
"name": "TRumpCat",
"symbol": "TRUMPCAT",
"image": "https://.../logo.png",
"marketCapEth": 3.017,
"marketCapUsd": 5819.09,
"liquidityUsd": 20.83,
"change24hPct": -0.0019,
"url": "https://arrowpad.fun/robinhood/token/0x0BB6D7e8D0CE0f8601360507B4e9A064Fc7a7477"
}
]
}GET /api/tokens/latest
Just the newest launch — poll this instead of the full list to catch fresh tokens
quickly (refreshes ~5s). For millisecond-grade sniping, watch the factory's
TokenCreated event on-chain instead.
curl -s https://arrowpad.fun/api/tokens/latestlet seen;
setInterval(async () => {
const t = await (await fetch("https://arrowpad.fun/api/tokens/latest")).json();
if (t.address && t.address !== seen) {
seen = t.address;
console.log("NEW LAUNCH:", t.symbol, t.url);
}
}, 5000);import requests, time
seen = None
while True:
t = requests.get("https://arrowpad.fun/api/tokens/latest", timeout=10).json()
if t.get("address") and t["address"] != seen:
seen = t["address"]
print("NEW LAUNCH:", t["symbol"], t["url"])
time.sleep(5)GET /api/tokens/{address}
One token's full record — same shape as a list entry. 400 for a malformed
address, 404 if it wasn't launched here.
curl -s https://arrowpad.fun/api/tokens/0x073D75e385E8319f4e10C3C64277AC29F9Ee7Bc0const res = await fetch(
"https://arrowpad.fun/api/tokens/0x073D75e385E8319f4e10C3C64277AC29F9Ee7Bc0"
);
if (res.ok) {
const token = await res.json();
console.log(token.name, token.priceUsd);
}import requests
r = requests.get(
"https://arrowpad.fun/api/tokens/0x073D75e385E8319f4e10C3C64277AC29F9Ee7Bc0",
timeout=10,
)
if r.ok:
token = r.json()
print(token["name"], token["priceUsd"])GET /api/trades/{address}
Recent swaps for a token (last 24h, newest first, limit ≤ 200): buy/sell, ETH and
token amounts, execution price, tx hash, block number, timestamp.
curl -s 'https://arrowpad.fun/api/trades/0x073D75e385E8319f4e10C3C64277AC29F9Ee7Bc0?limit=20'const res = await fetch(
"https://arrowpad.fun/api/trades/0x073D75e385E8319f4e10C3C64277AC29F9Ee7Bc0?limit=20"
);
const { trades } = await res.json();
for (const t of trades) console.log(t.type, t.ethAmount, "ETH");import requests
r = requests.get(
"https://arrowpad.fun/api/trades/0x073D75e385E8319f4e10C3C64277AC29F9Ee7Bc0",
params={"limit": 20},
timeout=10,
)
for t in r.json()["trades"]:
print(t["type"], t["ethAmount"], "ETH"){
"token": "0x073D75e385E8319f4e10C3C64277AC29F9Ee7Bc0",
"pool": "0xb2bE74745d023E3786Aa61395f645C995805897f",
"count": 2,
"trades": [
{
"type": "buy",
"ethAmount": 0.0125,
"tokenAmount": 4131093.02,
"priceEth": 3.0212e-9,
"txHash": "0xfbc4e4d90b5c919f06f1646ec03552b31a8748815502edafd215f5af44b3c967",
"blockNumber": 14417135,
"timestamp": 1784522003
},
{
"type": "sell",
"ethAmount": 0.004,
"tokenAmount": 1322530.11,
"priceEth": 3.0169e-9,
"txHash": "0x2c11ab19c8130b6cd0a2b1749a26e6ba49374556c74d3ad6ec6ba847f27e9d10",
"blockNumber": 14416988,
"timestamp": 1784521560
}
]
}Freshness and fair use
- Prices and market caps refresh ~30s, trades ~15s; token metadata is immutable. Responses are edge-cached — polling every few seconds is fine and cheap.
- No API key, no rate limit today. Be reasonable; abuse gets blocked.
- Amounts suffixed
Ethare ETH;Usduses the returnedethUsdrate. Trade timestamps are exact block times. - Token metadata (name, description, links, image URL) is creator-supplied and returned as-is. If you render it in a UI, escape it like any untrusted input.
- Need another endpoint? Email [email protected].
Trading bots: read the chain directly
For latency-critical work (sniping new launches, market making), skip HTTP and subscribe to on-chain events yourself — everything is public Uniswap V3 infrastructure.
| Thing | Value |
|---|---|
| Chain ID | 4663 |
| RPC | https://rpc.mainnet.chain.robinhood.com |
| ArrowPadFactory | 0x69225A43B20B824F4027B201731d9a21368Bf6Bc |
| WETH | 0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73 |
| SwapRouter02 | 0xCaf681a66D020601342297493863E78C959E5cb2 |
| QuoterV2 | 0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7 |
| Pool fee tier | 1% (10000) |
New launches: watch the factory's TokenCreated event. Trades: each token pool's
Swap event.