GMGN trending tokens
Trending tokens on GMGN for a chain and time window: address, symbol, name, logo, link, price and its change over the window and the last 1/5/60 minutes, volume, liquidity, market cap and all-time-high market cap, swaps, buys and sells, holders, top-10 holder share, creation and open time, launchpad, socials, creator and dev holdings, honeypot, renounced mint/freeze, taxes, burn ratio, rug ratio, wash-trading flag, bundler, sniper, smart-money and KOL counts. Narrow by liquidity, market cap, volume, holders and token age; list=new_pairs gives the newest pairs instead (each with its pool).
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
chain | sol | eth | bsc | base | tron | blast | Blockchain (default sol). Example: sol |
period | 1m | 5m | 1h | 6h | 24h | Time window (default 1h). Example: 1h |
order_by | swaps | volume | price | marketcap | liquidity | holder_count | change | change1m | change5m | change1h | open_timestamp | smartmoney | renowned_count | Sort field (default swaps). Example: volume |
direction | asc | desc | Sort direction (default desc). |
limit | integer | Tokens (1-100, default 50). |
filters | string | Comma-separated filters: not_honeypot, verified, renounced, frozen, burn, distribed, not_wash_trading, has_social, not_risk, creator_hold, creator_close, token_burnt. |
list | trending | new_pairs | trending (default) or new_pairs (newest pairs first, each with pool). |
min_liquidity | number | Minimum liquidity in USD. |
min_marketcap | number | Minimum market cap in USD. |
max_marketcap | number | Maximum market cap in USD. |
min_volume | number | Minimum volume in USD over the time window. |
max_volume | number | Maximum volume in USD over the time window. |
min_holders | integer | Minimum number of holders. |
min_age | string | Only tokens at least this old, e.g. 30m, 6h, 7d. |
max_age | string | Only tokens at most this old, e.g. 1h, 24h. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/gmgn/v1/trending?chain=sol" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/gmgn/v1/trending",
params={"chain": "sol"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/gmgn/v1/trending");
url.searchParams.set("chain", "sol");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).