Moa API
The same data and swap routing this site uses, for your own bot, dashboard or app. Free, no key needed.
This API currently serves GIWA Sepolia, a test network. Addresses and data will change when Giwa mainnet opens.
Basics
- Base URL
https://moa.markets/api/v1- Network
- GIWA Sepolia · chain id 91342
- Router contract
0x4f54605b92f2c003b48da1c087a7e31c16633026- Format
- JSON over HTTPS GET, CORS open
- Limits
- 120 requests a minute for data, 30 for quotes, per client
curl "https://moa.markets/api/v1/tokens?sort=volume&limit=5"
Earn on swaps you send
Register a referral code on the Referrals page and pass it as ref to /quote. A wallet making its first trade through Moa with your code is linked to you for good: it pays 10% less in fees and you earn 30% of the 1% Moa fee on every trade it makes. Earnings accrue in the router and are claimed from the Referrals page.
- Call
/quote with recipient set to your user's wallet. - For a sell, have the wallet send the
approval transaction first. - Have the wallet sign and send
tx unchanged, before expiresAt.
The transaction reverts if the wallet would receive less than minAmountOut; nothing is spent except network fees.
Endpoints
GET /tokens
Every token Moa tracks on GIWA Sepolia, with price, market cap, change and volume.
| Parameter | In | Values |
|---|
sort | query | volume | trending | gainers | mcap | new | trades. Ordering. Default volume. |
window | query | 1h | 6h | 24h. Period for volume and change sorts. Default 24h. |
venue | query | Only tokens from one venue (an id from /venues). |
q | query | Search by name, ticker or exact address. |
limit | query | 1 to 100. Default 50. |
offset | query | Use nextOffset from the previous page. |
GET /tokens?sort=volume&window=24h&limit=5
GET /tokens/{address}
One token: everything in the list, plus its creator, holder count and the pools it trades in.
| Parameter | In | Values |
|---|
address required | path | Contract or wallet address (0x…). |
GET /tokens/0x…
GET /tokens/{address}/candles
OHLC candles priced in ETH, with volume. Up to 600 candles, oldest first.
| Parameter | In | Values |
|---|
address required | path | Contract or wallet address (0x…). |
interval | query | 1m | 5m | 15m | 1h | 4h | 1d. Candle size. Default 15m. |
GET /tokens/0x…/candles?interval=15m
GET /tokens/{address}/trades
The latest trades of a token on every venue, newest first.
| Parameter | In | Values |
|---|
address required | path | Contract or wallet address (0x…). |
limit | query | 1 to 100. Default 50. |
GET /tokens/0x…/trades?limit=20
GET /tokens/{address}/holders
The largest holders with their share of the supply.
| Parameter | In | Values |
|---|
address required | path | Contract or wallet address (0x…). |
GET /tokens/0x…/holders
GET /wallets/{address}
Open positions and trading totals of a wallet, estimated from the trades Moa has indexed.
| Parameter | In | Values |
|---|
address required | path | Contract or wallet address (0x…). |
GET /wallets/0x…
GET /wallets/{address}/trades
The latest 100 trades of a wallet, newest first.
| Parameter | In | Values |
|---|
address required | path | Contract or wallet address (0x…). |
GET /wallets/0x…/trades
GET /quote
The best price for a buy or sell across every venue. With recipient, also returns a transaction that wallet can sign and send as is.
| Parameter | In | Values |
|---|
token required | query | Token to buy or sell. |
side required | query | buy | sell. buy spends ETH, sell spends the token. |
amount required | query | Amount in: wei of ETH for a buy, smallest token units for a sell. |
recipient | query | Wallet that will send the transaction. Required for a sell. |
slippageBps | query | 10 to 5000. Default 100 (1%). |
ref | query | Your Moa referral code, to earn on the trade. |
GET /quote?token=0x…&side=buy&amount=1000000000000000&recipient=0x…&ref=yourcode
GET /venues
The launchpads and exchanges Moa reads, with the id used by the tokens filter.
GET /venues
Conventions
- Within v1, fields are only ever added, never renamed or removed.
- Errors always look like
{ "error": { "code": "…", "message": "…" } }, with a matching HTTP status. A 429 carries a Retry-After header. - Times are ISO 8601 in UTC. Prices and amounts are decimal strings;
/quote amounts are integer strings in the smallest unit. - Wallet worth and PnL are estimates from the trades Moa has indexed.