Token Info
Free, keyless reads. Use them to decide what to trade and when: a sniper polls snipeTaxBps and buys when it reads 0. Amounts are raw base-unit strings (6 decimals for USDC, the token's own decimals for tokens); fields ending in Formatted are the human-readable decimal.
Token
GET https://api.shrine.trade/arc/api/token/{address}
GET https://api.shrine.trade/arc/api/token/{address}?wallet=0x…
- JavaScript
- Python
const TOKEN = "0xb242508C29959aA165379BCfdb576070B24eE5A8";
async function main() {
const res = await fetch(`https://api.shrine.trade/arc/api/token/${TOKEN}`);
const t = await res.json();
if (t.error) throw new Error(`${t.error}: ${t.message}`);
console.log(t.symbol, "on", t.protocol, "| venue:", t.venue, "| price:", t.priceUsdc, "USDC");
console.log("market cap:", t.marketCapUsdc.toFixed(2), "USDC | tax:", t.buyTaxBps, "/", t.sellTaxBps, "bps | snipe tax now:", t.snipeTaxBps ?? "n/a", "bps");
}
main();
Save it as token.js and run node token.js. No packages needed.
import requests
TOKEN = "0xb242508C29959aA165379BCfdb576070B24eE5A8"
t = requests.get(f"https://api.shrine.trade/arc/api/token/{TOKEN}").json()
if "error" in t:
raise SystemExit(f"{t['error']}: {t['message']}")
print(t["symbol"], "on", t["protocol"], "| venue:", t["venue"], "| price:", t["priceUsdc"], "USDC")
print("market cap:", f"{t['marketCapUsdc']:.2f}", "USDC | tax:", t["buyTaxBps"], "/", t["sellTaxBps"], "bps | snipe tax now:", t.get("snipeTaxBps", "n/a"), "bps")
Save it as token.py, pip install requests, then python token.py.
Add ?wallet=0x… to get that wallet's token balance. A response for an Argus token:
{
"protocol": "ARGUS",
"token": "0xb242508c29959Aa165379BCfdB576070b24ee5a8",
"name": "Xeusthegreat",
"symbol": "XEUS",
"decimals": 18,
"venue": "uniswap_v4",
"pool": "0x6299828f0bbf42c06d571279bf83d06d930bb5bc4a99b98793c6ff47141030b1",
"hook": "0x7B734D70eFCD84ed8C36dF5Aa170e3ebF3322044",
"creator": "0x04D704070Bcf21977dDd6457A365b8051699250f",
"portal": "0xB021Be536808f551b31789422Fd28a6c9c6e97Da",
"tickBond": 376400,
"quoteAsset": {
"address": "0x3600000000000000000000000000000000000000",
"symbol": "USDC",
"decimals": 6,
"isNative": false
},
"poolFeeBps": 100,
"buyTaxBps": 300,
"sellTaxBps": 300,
"snipeTaxBps": 0,
"totalFeeBuyBps": 400,
"totalFeeSellBps": 400,
"bonded": false,
"launchedAt": 1790076636,
"priceUsdc": 2.480877603500105e-06,
"marketCapUsdc": 2480.877603500105,
"totalSupply": "1000000000000000000000000000",
"totalSupplyFormatted": "1000000000",
"liquidity": "1575037795897358225",
"walletBalance": "0",
"walletBalanceFormatted": "0"
}
| Field | Meaning |
|---|---|
protocol | ARGUS, LIFT (v2 launches, Uniswap v4 with the LIFT hook), or UNISWAP for any other pool against USDC, which is also where LIFT's earlier v1 launches land: they are plain Uniswap v3 pools with nothing of LIFT's on them. |
venue / pool | uniswap_v4 with the pool id, or uniswap_v3 with the pool address. This is where a trade goes; it never changes for a token. |
hook | The launchpad's fee hook on the pool. Absent on v3 pools and plain Uniswap pools. |
creator / portal / tickBond | Argus only: the wallet that launched the token, the Argus factory it came from, and the tick at which the launch counts as bonded. |
quoteAsset | Always USDC on Arc, 6 decimals. |
poolFeeBps | The pool's own fee: 100 (1%) on Argus and on LIFT's v3 pools; LIFT's v4 pools carry 0 here and charge their 1% base fee through the hook instead, which totalFee*Bps includes. |
buyTaxBps / sellTaxBps | The creator tax on each side, fixed at launch. |
totalFeeBuyBps / totalFeeSellBps | Everything the hook takes on each side, pool fee and creator tax together, as the hook reports it. Absent where the hook does not expose it. |
snipeTaxBps | The extra tax a buy would pay right now. Up to 9900 in the first seconds after launch, 0 once the window has passed. Poll this before sniping. Absent on UNISWAP pools. |
priceUsdc / marketCapUsdc | Numbers, from the pool's current price: USDC per token, and that times the total supply. |
liquidity | The pool's current in-range liquidity, Uniswap's own unit. Larger is deeper. |
bonded / launchedAt | Argus only: whether the price has crossed the launch's bond tick (cosmetic, trading does not change), and the launch time as a Unix timestamp. |
walletBalance | The wallet's token balance, when ?wallet= is given. |
Responses are cached for one second per token and wallet.