Getting addresses in
Three routes, equivalent once the lookup starts.Upload a file
CSV or Excel. Drop it anywhere on the page.
Paste a list
Any text holding addresses. They are picked out of whatever surrounds them.
Import a contract
Give a contract address, get its holders. Included with every credit pack.
Files
A CSV or.xlsx is scanned for a wallet column, and any balance or value column is detected automatically and used for priority scoring. Other columns come along unchanged and appear in the export, so a list arriving with a tier or a cohort label leaves with it.
Pasting
Addresses are extracted by pattern, so a block of text with addresses scattered through it works as well as a clean list. Duplicates are removed.Contract import
We cover eight networks: Ethereum, Base, Robinhood Chain, Arbitrum, Polygon, Optimism, BNB Chain and HyperEVM. Both NFT collections and token contracts are supported on all eight.HyperEVM NFT holder lists are read from the collection itself, one token at a
time, so a very large collection is refused rather than sampled. If you hit
that, upload the holder list instead: a pasted or uploaded list is resolved
exactly the same way as an imported one.
A holder list can be truncated. Token holder lists in particular come from an
index with its own ceiling, and when a result fills that ceiling exactly we
say so rather than implying the list is complete. Treat a truncation warning
as real: the collection has more holders than you are looking at.
How much a lookup costs
You are charged for matches, not for addresses submitted. A match is a wallet we resolve to an X handle or a Farcaster account. A wallet we cannot resolve costs nothing, so a list with a low match rate costs you less rather than the same.
Credits are cumulative and account-wide, not per lookup: twenty runs of 500
addresses draw exactly what one run of 10,000 draws. They last 12 months from
purchase, and every pack is a one-time payment, not a subscription.
The free allowance rolls rather than resetting: each match frees up again 30
days after it was spent, so credits return a few at a time rather than the whole
allowance coming back on a fixed date. It is there to try the product. Contract
import, reverse lookup, deep scan with onchain ENS, priority score, follower
counts, the X list export, growing a saved lookup, Farcaster DMs from the app
and the API need a pack. The packs differ only in how many matches they hold;
nothing is gated by pack size.
Limits on addresses
A few limits are on addresses rather than matches, and which one applies depends on how you are signed in.- Not signed in: 500 addresses per lookup, plus a rate limit per IP address. There is no account-wide quota, because there is no account; instead each lookup opens at most 50 matches, and the rest appear as locked rows. Sign in and buy a pack to open them, on that same lookup.
- Signed in, on the free allowance: 500 addresses per lookup, or ten times your remaining free matches, whichever is lower.
- Holding a pack: no per-lookup cap. A submission may be at most ten times your remaining matches.
When a lookup finds more than your balance covers
Because addresses are bounded at ten times your remaining matches, a high-hit-rate list can find more matches than you have left. This is true of pack credits as well as the free allowance. The lookup still runs in full. The matches your balance covered are open in the result; the rest appear as locked rows: the wallet stays, along with anything never billed (an ENS name, a Lens or GitHub account), and the X handle or Farcaster account is withheld. You are charged only for the open matches. A little headroom is built in. A match rate cannot be known before a lookup runs, so a list sized honestly against a pack can still overshoot it; a small margin past your balance is delivered and not charged for, and only a real overshoot is locked. The count you are likely to need is shown next to your file before you start, so a list that will outrun your balance says so first. Importing holders from a contract stops at what your credits cover rather than at the address limit, and the import tells you when that is why it stopped. Locked matches stay with the lookup. Buy a pack and unlock them from the results view: the unlock draws one credit per locked match and opens the same rows, in the live result and in the saved copy alike. The rolling allowance does not open them by itself; the way through the gate is a pack.Choosing how hard to look
Before starting, pick Fast or Deep scan. Deep is the default and finds the most; fast answers from the walletlink index alone and returns in seconds. The estimate on screen follows the choice. Scan depth covers what each one reads and when the cheaper answer is the right one.Keeping the result
A lookup is saved to your history by default, and you can name it while it runs. An unnamed lookup is still saved; the name is there so you can find it again among twenty others. Turn saving off for a one-off, and export before you leave the page: nothing is kept.Growing a saved lookup
With a pack, a saved lookup is a living list rather than a snapshot. Every pack includes this.- Add addresses to it later. They are resolved and merged into the existing result rather than starting a separate one, so a holder list that grows stays in one place.
- See what is new since you last opened it. The index gains identities every day, so a wallet that resolved to nothing in March may resolve now. Rows that gained an identity since your last visit are marked
NEWwhen you reopen the lookup, which means a list you ran once keeps paying out without you re-running anything.
Getting results out
CSV
Every column, every row, sorted by priority score. Your original columns are
preserved alongside the resolved identities.
Handle list
Just the handles, in the shape an X list import expects.