Developers · v1

Squint API

The risk reports, holder maps and wallet records behind nearsquint.tech, as JSON. Build them into your bot, dashboard or wallet. Free, with no key and no signup.

https://api.nearsquint.tech/v1
  • No API key
  • 120 requests a minute
  • CORS enabled
  • JSON over HTTPS

Overview

Squint reads every token launched on Nearly and grades it for the risks that matter before you buy: who the developer is, who sniped the launch, and which top holders are really the same person. The API returns exactly what the scanner shows.

  • Every endpoint is a GET under https://api.nearsquint.tech/v1 and returns JSON.
  • Shares of supply are fractions from 0 to 1: 0.0412 means 4.12%.
  • Times are ISO 8601 in UTC. Amounts are in USD or NEAR, as the field name says.
  • Accounts are NEAR account ids: named (alice.near) or 64-character implicit accounts.
  • GET /v1 lists the endpoints and the current limits.

Quick start

Grade a token by contract or ticker. A token that hasn't been graded in the last few minutes is graded on the spot, which takes 2 to 15 seconds, so allow a timeout of at least 30 seconds.

curl https://api.nearsquint.tech/v1/tokens/squint.nearlytrade.near

In a shell, quote a ticker or write the $ as %24, so the shell doesn't read $SQUINT as a variable.

Limits and caching

  • 120 requests a minute per IP address across all endpoints, with at most 20 in any 10 seconds.
  • 20 new scans a minute per IP address, shared with the website's scanner. A request is a new scan only when Squint has to read the chain: a token not graded in the last minute (coins under 6 hours old) or the last 10 minutes (older coins), or a wallet not traced in the last 30 days. Everything else is served from what Squint already has.
  • Over either limit, you get 429 with Retry-After: 60.
  • Responses are cached at Cloudflare's edge for 15 to 60 seconds; Cache-Control says how long. Reports carry checked_at, the moment they were graded.

Need more than that for a bot or a product? Message @squintnear.

Errors

Errors use standard HTTP status codes and share one shape:

{ "error": { "code": "not_found", "message": "Squint covers tokens launched on Nearly. This one isn't in its index." } }
StatusCodeMeaning
400bad_requestThe token, account or query isn't valid.
404not_foundNo Nearly token matches, or the endpoint doesn't exist.
405method_not_allowedThe API is read-only. Use GET.
429rate_limitedOver a limit. Wait for Retry-After seconds.
502upstream_unavailableNearly or the NEAR RPC didn't answer. Retry in a moment.
500internal_errorSomething broke on our side.

Endpoints

GET/v1/tokens/{token}

The full risk report for one token: the verdict and risk score, all nine checks, how the supply is split, the top 25 holders with their funders, and the clusters of linked wallets.

ParameterDescription
tokenA contract id (squint.nearlytrade.near) or a ticker ($SQUINT or SQUINT). A ticker that several tokens use resolves to the one with the most holders, and the response adds a resolved object saying so.
FieldDescription
verdict, riskclean, caution or danger, and a risk score from 0 to 100. See Verdicts.
checks[]Nine checks, each with id, status, a one-line headline, detail and the accounts involved. See Checks.
supplyShares held by the pool, the dev, snipers, linked wallets, other top holders, and the rest.
holders[]Top 25 holders, excluding pools and the launchpad: share, tags, funder, funder_kind, created_at.
clusters[]Groups of holders connected by funding, shared keys or transfers, with their combined share.
market, taxFully diluted value, liquidity, volume, holder count, and the trade tax fixed at launch (status is none, set or unknown).
coverageHow many of the top wallets were traced, and whether the token's transfer history has been read in full.
Sample response, arrays trimmed · Run it for the live one
{
  "token": "nearly-993927.nearlytrade.near",
  "symbol": "NEARLY",
  "name": "NEARLY",
  "icon": "https://nearly.trade/api/img/146653e7e11dc99419b4421d14450ab0.webp",
  "creator": "nearlytrade.near",
  "created_at": "2026-09-22T00:36:42.372Z",
  "verdict": "clean",
  "label": "Clean",
  "risk": 12,
  "summary": "No major red flags.",
  "flags": {
    "bad": 0,
    "warn": 1
  },
  "checks": [
    {
      "id": "copy",
      "label": "Original or copy",
      "status": "good",
      "headline": "The most held $NEARLY.",
      "detail": "6 other tokens use this ticker, all with far fewer holders.",
      "accounts": []
    },
    {
      "id": "dev",
      "label": "Developer wallet",
      "status": "good",
      "headline": "Developer holds 0.0%.",
      "detail": "Developer: nearlytrade.near. Bought 1.0 NEAR worth at launch.",
      "accounts": [
        "nearlytrade.near"
      ]
    },
    {
      "id": "history",
      "label": "Developer history",
      "status": "good",
      "headline": "First launch from this developer.",
      "detail": "",
      "accounts": []
    }
  ],
  "market": {
    "fdv_usd": 6672672.62,
    "liquidity_near": 40383.52,
    "volume_near": 1192710.1,
    "holders": 2114
  },
  "tax": {
    "status": "none",
    "buy_pct": 0,
    "sell_pct": 0
  },
  "supply": {
    "pool": 0.06135,
    "dev": 0,
    "snipers": 0.014788,
    "linked": 0.024537,
    "holders": 0.422422,
    "rest": 0.476903
  },
  "holders": [
    {
      "rank": 1,
      "account": "soundtoad4414.near",
      "share": 0.018569,
      "tags": [
        "fresh"
      ],
      "funder": "a9c8669de0ba79fbd634549bcfc9a250c94b49d8f0e021f491cb23b247eac61d",
      "funder_kind": "wallet",
      "funded_via": null,
      "created_at": "2026-09-22T21:36:24.968Z"
    },
    {
      "rank": 2,
      "account": "0xdcc200cee7a6453fbc5e26d6c7c91708f80fcfd5",
      "share": 0.016547,
      "tags": [
        "fresh"
      ],
      "funder": null,
      "funder_kind": null,
      "funded_via": "m-eth-wallet.near",
      "created_at": "2026-09-27T14:13:27.313Z"
    }
  ],
  "clusters": [
    {
      "id": "A",
      "share": 0.031514,
      "wallets": [
        "nearwithmee.near",
        "ngear.near",
        "bnearr.near"
      ],
      "funders": [
        "colddress6080.near"
      ],
      "linked_by": [
        "funding"
      ],
      "links": [
        {
          "from": "colddress6080.near",
          "to": "nearwithmee.near",
          "type": "funded"
        },
        {
          "from": "colddress6080.near",
          "to": "ngear.near",
          "type": "funded"
        }
      ]
    }
  ],
  "coverage": {
    "wallets_traced": 41,
    "wallets_checked": 41,
    "transfers_complete": false
  },
  "socials": {
    "website": "https://nearly.trade",
    "twitter": "https://x.com/nearlytrade",
    "telegram": null
  },
  "links": {
    "report": "https://nearsquint.tech/?q=nearly-993927.nearlytrade.near",
    "nearly": "https://nearly.trade/t/nearly-993927.nearlytrade.near"
  },
  "checked_at": "2026-09-28T05:46:39.330Z",
  "resolved": {
    "from": "$NEARLY",
    "matches": 7,
    "picked": "most holders"
  }
}
GET/v1/tokens/{token}/map

The graph behind the bubble map. Nodes are the top holders, the developer, shared funders and pools. Edges are funding, shared signing keys and token transfers between them. Use it to draw your own map.

FieldDescription
nodes[]id, kind (holder, dev, funder, pool), share, tags, holder rank, cluster id, funder, created_at.
edges[]from, to, type (funded, key, transfer). Transfers add the share of supply moved and a count.
clusters[]Same as in the report.
transfersHow much of the token's transaction history has been read: complete, scanned, total.
Sample response, arrays trimmed · Run it for the live one
{
  "token": "nearly-993927.nearlytrade.near",
  "symbol": "NEARLY",
  "nodes": [
    {
      "id": "soundtoad4414.near",
      "kind": "holder",
      "share": 0.018569,
      "tags": [
        "fresh"
      ],
      "rank": 1,
      "cluster": null,
      "funder": "a9c8669de0ba79fbd634549bcfc9a250c94b49d8f0e021f491cb23b247eac61d",
      "created_at": "2026-09-22T21:36:24.968Z"
    },
    {
      "id": "0xdcc200cee7a6453fbc5e26d6c7c91708f80fcfd5",
      "kind": "holder",
      "share": 0.016547,
      "tags": [
        "fresh"
      ],
      "rank": 2,
      "cluster": null,
      "funder": null,
      "created_at": "2026-09-27T14:13:27.313Z"
    }
  ],
  "edges": [
    {
      "from": "colddress6080.near",
      "to": "nearwithmee.near",
      "type": "funded"
    },
    {
      "from": "colddress6080.near",
      "to": "ngear.near",
      "type": "funded"
    }
  ],
  "clusters": [
    {
      "id": "A",
      "share": 0.031514,
      "wallets": [
        "nearwithmee.near",
        "ngear.near",
        "bnearr.near"
      ],
      "funders": [
        "colddress6080.near"
      ],
      "linked_by": [
        "funding"
      ],
      "links": [
        {
          "from": "colddress6080.near",
          "to": "nearwithmee.near",
          "type": "funded"
        },
        {
          "from": "colddress6080.near",
          "to": "ngear.near",
          "type": "funded"
        }
      ]
    }
  ],
  "transfers": {
    "complete": false,
    "scanned": 11833,
    "total": 16800
  },
  "checked_at": "2026-09-28T05:46:39.330Z"
}
GET/v1/wallets/{account}

One wallet's record: when it was created and who funded it, the Nearly coins it holds right now, how often it was among the first five buyers of a launch, how it trades, the coins it has launched, and the wallets it's linked to.

FieldDescription
labelsPlain flags: serial_sniper, early_buyer, developer, serial_launcher, quick_flipper (sells within 30 minutes, as a median over 3+ coins), funds_holders and new_wallet (under 24 hours old).
walletcreated_at, the first funder and its funder_kind (wallet or service, such as an exchange or bridge), funded_via when it arrived through a relayer or NEAR Intents, key_siblings, and funded_wallets: traced holders whose first NEAR came from this wallet. traced is false when its history couldn't be read.
holdingsThe Nearly coins it holds now, read live: each coin's share of supply, amount, value_usd and verdict, plus the total. null when balances couldn't be read.
sniperfirst_buyer_in: launches where it was one of the first five buyers. serial is true at 10 or more.
tradingCoins traded, buys, sells, USD in and out, and median_minutes_to_first_sell: for each coin, the time from its first buy to its first sell after that, as a median across coins. Built from the trades Squint has recorded, which can miss a small share.
launchesTokens this account created on Nearly, with their current verdict.
Sample response, arrays trimmed · Run it for the live one
{
  "account": "5d194c7b6c82ebeefbade009e71eefccaae24d2ff54fdaf65b358613ab22b4cc",
  "labels": [
    "serial_sniper",
    "new_wallet"
  ],
  "wallet": {
    "traced": true,
    "created_at": "2026-09-27T16:21:58.470Z",
    "funder": null,
    "funder_kind": null,
    "funded_via": "intents.near",
    "key_siblings": [],
    "funded_wallets": []
  },
  "holdings": {
    "count": 0,
    "value_usd": 0,
    "tokens": []
  },
  "sniper": {
    "first_buyer_in": 51,
    "serial": true,
    "launches": [
      {
        "token": "illia-2.nearlytrade.near",
        "symbol": "ILLIA",
        "rank": 1,
        "seconds_after_open": 11.8,
        "launched_at": "2026-09-27T20:34:16.142Z"
      },
      {
        "token": "derarhea.nearlytrade.near",
        "symbol": "DERARHEA",
        "rank": 2,
        "seconds_after_open": 12.1,
        "launched_at": "2026-09-27T20:29:16.453Z"
      }
    ]
  },
  "trading": {
    "coins_traded": 51,
    "buys": 52,
    "sells": 57,
    "bought_usd": 205.08,
    "sold_usd": 482.77,
    "median_minutes_to_first_sell": 119.3,
    "sold_within_1h": 8,
    "first_trade_at": "2026-09-27T16:59:21.203Z",
    "last_trade_at": "2026-09-27T21:43:41.570Z",
    "recent": [
      {
        "token": "gnear.nearlytrade.near",
        "symbol": "GNEAR",
        "icon": "https://nearly.trade/api/img/1aa101d594b535a144edbdbfdd99c33b.webp",
        "buys": 1,
        "sells": 2,
        "bought_usd": 0,
        "sold_usd": 2.46,
        "first_buy_at": "2026-09-27T18:00:24.508Z",
        "first_sell_at": "2026-09-27T18:06:21.300Z",
        "holds_share": 0
      }
    ]
  },
  "launches": {
    "count": 0,
    "recent": []
  },
  "checked_at": "2026-09-28T05:55:56.511Z"
}
GET/v1/coins

Every Nearly launch Squint has read, with its latest grade. Sort and filter it like the coin index on the site.

ParameterDescription
sortoptionalmcap (default), volume, holders, age, risk, change or name.
diroptionaldesc (default) or asc. With sort=risk, desc puts the riskiest first. Coins not graded yet always come last.
verdictoptionalOnly clean, caution or danger coins.
min_holdersoptionalLeave out coins with fewer holders.
limit, offsetoptionalPage size from 1 to 100 (default 50), and where to start.
Sample response, arrays trimmed · Run it for the live one
{
  "total": 818,
  "offset": 0,
  "count": 5,
  "sort": "volume",
  "dir": "desc",
  "verdict": null,
  "near_usd": 5.1703,
  "coins": [
    {
      "token": "nearly-993927.nearlytrade.near",
      "symbol": "NEARLY",
      "name": "NEARLY",
      "icon": "https://nearly.trade/api/img/146653e7e11dc99419b4421d14450ab0.webp",
      "created_at": "2026-09-22T00:36:42.372Z",
      "holders": 2114,
      "fdv_usd": 6227785.1,
      "fdv_near": 1204530.71,
      "volume_24h_usd": 3900907.56,
      "volume_24h_near": 754483.79,
      "change_24h_pct": 103.6
    },
    {
      "token": "ninu-4.nearlytrade.near",
      "symbol": "NINU",
      "name": "NEAR INU",
      "icon": "https://nearly.trade/api/img/a46185756d201acb8290d4c4e64cc4f3.webp",
      "created_at": "2026-09-27T09:30:49.994Z",
      "holders": 877,
      "fdv_usd": 438609.14,
      "fdv_near": 84832.44,
      "volume_24h_usd": 747341.68,
      "volume_24h_near": 144545.13,
      "change_24h_pct": 8383.24
    }
  ]
}
GET/v1/snipers

Serial snipers: wallets that were among the first five buyers in at least min launches, most active first. Useful as a watchlist or a blocklist.

ParameterDescription
minoptionalMinimum number of launches (default 10, lowest 3).
limit, offsetoptionalPage size from 1 to 200 (default 50), and where to start.
Sample response, arrays trimmed · Run it for the live one
{
  "min_launches": 10,
  "launches_tracked": 420,
  "offset": 0,
  "count": 10,
  "snipers": [
    {
      "account": "internisactive.near",
      "first_buyer_in": 55,
      "avg_seconds_after_open": 58.6,
      "last_seen_at": "2026-09-28T04:24:17.633Z"
    },
    {
      "account": "5d194c7b6c82ebeefbade009e71eefccaae24d2ff54fdaf65b358613ab22b4cc",
      "first_buyer_in": 51,
      "avg_seconds_after_open": 9.4,
      "last_seen_at": "2026-09-27T20:34:16.142Z"
    }
  ]
}
GET/v1/stats

How much Squint has indexed, and when it last synced with Nearly. It syncs every minute.

Sample response · Run it for the live one
{
  "launches": 818,
  "trades": 38666,
  "wallets_traced": 1410,
  "serial_snipers": 19,
  "synced_at": "2026-09-28T05:55:19.001Z",
  "newest_trade_at": "2026-09-28T05:55:05.358Z"
}

Verdicts and risk

Every token starts at a risk of 0. Each check that comes back bad adds 30 and each warn adds 12, up to 100.

VerdictRiskMeaning
clean0 to 25No major red flags.
caution26 to 55Flags worth a closer look before you buy.
danger56 to 100Serious red flags. Most buyers should walk away.

Checks

A check's status is good, warn, bad or unknown. Unknown means the chain couldn't be read just then; it doesn't add risk, and the next scan tries again.

idLooks atwarnbad
copyOther tokens with the same ticker–Another one has 5× the holders (and at least 20)
devWhat the developer holds and has soldOver 3%, or sold over $500Over 10%
historyThe developer's other launches3 or more8 or more, or 5 dead
snipersSupply still held by the earliest buyersOver 10%Over 25%
linkedHolders connected by funding, keys or transfersOver 8% combinedOver 20%, or the developer's group over 10%
top10The ten largest holders, excluding poolsOver 35%Over 55%
freshWallets created just before the launch or after itOver 30%Over 50%
taxThe trade tax fixed at launch3% or more on either side–
liquidityNEAR in the pool (locked by Nearly)Under 30 NEAR–

Holder tags

TagMeaning
sniperOne of the first five buyers, or bought within 20 seconds of the pool's first trade.
serialOne of the first five buyers in 10 or more launches.
freshWallet created within 24 hours before the launch, or after it.
linkedIn a cluster with other holders.
devThe account that launched the token.

Map and clusters

Squint traces each of the top 40 holders back to the first account that sent it NEAR, and looks up every other account that shares its signing key. It also reads the token's own transfer events.

  • funded: the first NEAR this wallet ever received came from that account. A funder appears on the map when it funded two or more holders, or when it is itself a holder.
  • key: both accounts are controlled by the same full-access key.
  • transfer: tokens moved directly between the two wallets, counted when the total is at least 0.05% of supply. Pools, routers and the launchpad are left out.

A cluster is every holder connected through any chain of those links. Its linked_by lists the kinds of link involved: funding, shared keys and transfers. Funders that are services (exchanges, bridges and similar hubs, or any account with over 3,000 transactions) have funder_kind: "service" and never link wallets on their own.

Terms

  • Free for any use, including commercial bots and dashboards. Where people will see the data, please credit Squint with a link to nearsquint.tech.
  • Scores are automated readings of public blockchain data. They can be incomplete or wrong and are not financial advice.
  • v1 fields won't be renamed or removed. New fields may be added at any time, so ignore any you don't recognise.

Changelog

28 Sep 2026Wallets gain labels, live holdings and funded_wallets. change_24h_pct in /coins is now a true percentage (it was 100× too small). /tokens/{wallet} now answers 404 with a pointer to /wallets.
28 Sep 2026v1 released: token reports, holder maps, wallet records, the coin index, search, serial snipers and stats.