leak_extended_database_search runs a full-text Lucene query across every indexed leak file and returns one row per matching record. The same person or credential can appear many times, across many leaks. Nothing is parsed or deduplicated.
In the dashboard, this is the Raw Leaks tile in Search by Source and the Raw Data tab in Unified Search.
Availability: every plan with a license in force. No plan feature is checked.
Cost: no metered allowance. With an API key, each call counts once toward your monthly API Calls allowance, every page you walk included, and only 2xx responses count. See Rate limits.
When your organization’s license is not active, both Raw Data endpoints return 403 with {"detail": "Your license is not active."}. They never return the plan-feature 403, an allowance 429 or a capacity 409. See Plans and quotas.
Why you see duplicates. Free leaks get repackaged: the same breach resurfaces under new names, rebundled into new combolists and reposted across forums and channels. One credential showing up many times is expected. Heavy duplication of a single leak tells you it is widely recirculated. Deduplicate when you need a clean count. Keep the duplicates when you want to gauge how far something has spread.
What a search returns
The leaked content comes back in the form a threat actor packaged it. One search can surface any of these:- SQL dumps
- JSON exports
- CSV and Excel spreadsheets
- Plain-text files and documents
- Configuration files and logs
- Combolists (email and password pairs)
- Stealer-log captures
content. fileName and fileExtension tell you the format. leakId, leakName, leakSource, leakSize, leakTags, leakPublishDate, leakDiscoverDate and cvssScore describe the leak it came from. id and createdAt identify the record and when it was indexed.
Write a query
Pass a Lucene query inquery, 3 to 1024 characters. The default field is content, so a bare term searches the leaked text itself. Scope a term to a field, and combine terms with AND, OR and NOT.
A bare term matches the word, or any token it is part of.
acme.com matches jdoe@acme.com and hr.acme.com alike, and also a longer name that ends in -acme.com.
Queries contain spaces and characters such as : and [, so let curl -G --data-urlencode encode them:
Read a raw record
A response is one page of records. Here is the first of 8,421 matches foracme.com:
partial on every page. It is true when the results are incomplete: the search hit its time limit, or part of the leak index did not answer in time. The page and its counts then cover only the parts that answered. partialReason says why, such as timeout or shard_failures, and is null when the results are complete.
Two kinds of tags appear in that record, and they mean different things:
<kaduu:h>…</kaduu:h>insidecontentmarks where your search term matched. Sendhighlight=trueand every hit on your term is wrapped in these markers, so you can find it in a wall of raw text. The default isfalse.leakTagslists the kinds of data in the whole parent leak (password,email,ip,name,hash,sqlhere). It describes the leak, not this one row.
Page and sort
Increase
page until the response says "last": true. To get a whole result set as a file, export it instead of paging.
See which leaks expose you
leak_simple_database_search runs the same query but rolls the matches up by leak. You get one row per leak your term appears in, each with resultCount, the number of matching records inside it. Instead of tens of thousands of raw rows, you see which leaks expose you and how big each hit is.
It takes the same query, page and size. Its sort defaults to resultCount,desc, so the leak with the most matches comes first. It has no length or highlight, because it returns no content.
partial and partialReason work as in Read a raw record. Each row is leak metadata plus resultCount. Its id is the leak’s ID. To read the records inside one leak, run a Raw Data search with leakId:<id>, alone or combined with your term.
Export a full result set
To get every matching record as a file, use the export service instead of walking pages:- Call
list_export_servicesand find the entry whosenameisControlLeak. It exports Raw Data records.ControlLeakDistinctexports the by-leak roll-up. - Call
create_exportwith the entry’sidasservice, one of itsallowed_typesastype, andargsset to{"query": "<your Lucene query>"}. Read the entry’sargsfor the other fields it accepts. - Poll the export and download the file, as Export result sets describes.
Need the original leak file? Direct leak-file downloads are for small source files. For anything else, keep the work in Raw Data: search
leakId:<id> to browse the indexed leak, or add a keyword to search inside it. Downloads and exports helps you choose between a result-set export and an original-file download.Errors
Errors lists every error the API returns.
Other credential searches
Use Raw Data when you want everything and will triage it yourself. Find leaked credentials compares all five approaches.