Skip to main content
There is no Find.ly package to install: Node.js 18 and newer ship fetch. The examples are ES modules (.mjs files, or "type": "module" in package.json) so they can use top-level await.
Run this code on a server, never in a browser. The API sends no CORS headers, and a key in front-end JavaScript is a key anyone can read.

A small helper

Put this in findly.mjs. It sends the key, keeps the timeout above the 30-second search limit, and turns the error envelope into an exception.
findly.mjs

Check your key and quotas

Free: never billed, never runs a search.

Phonebook as a text file

format: 'txt' returns one selector per line, at the same price as JSON. An empty result is 204 No Content.

Download a raw file

A single free-text value, or combined fields that must all match:
Columns in record vary from one breach to the next: read the keys you need and ignore the rest.

Stealer Export

The archive is the body on success; errors are still JSON, and call throws them.

Handle errors and retries

Branch on code, wait Retry-After on a 429, and stop on quota_exceeded: the quota only comes back at 02:00 Paris time.
Errors never use a request. The full list is in Errors.