ArrowPad Docs

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/tokens
const 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"])
Example response
{
  "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"])
Example response
{
  "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/latest
let 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/0x073D75e385E8319f4e10C3C64277AC29F9Ee7Bc0
const 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")
Example response
{
  "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 Eth are ETH; Usd uses the returned ethUsd rate. 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.

ThingValue
Chain ID4663
RPChttps://rpc.mainnet.chain.robinhood.com
ArrowPadFactory0x69225A43B20B824F4027B201731d9a21368Bf6Bc
WETH0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73
SwapRouter020xCaf681a66D020601342297493863E78C959E5cb2
QuoterV20x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7
Pool fee tier1% (10000)

New launches: watch the factory's TokenCreated event. Trades: each token pool's Swap event.

On this page