Every US jurisdiction, one API.
US-wide by default. A single search covers the 50 states, the District of Columbia, and every US territory — normalized into one schema, scored, and source-tagged.
One schema across every jurisdiction
Fifty-eight registries do not agree on a field name, a date format, a name order or a vocabulary. They agree in our response, because normalization happens before the record reaches you — so your integration is written once and reads a South Carolina record and a Guam record with the same code.
Identity
Name parsed into parts rather than left as one string, plus aliases, the date-of-birth criteria the record supports, and demographics in the vocabulary the source uses.
Location
Typed addresses — residential, secondary, employment, school — each with its own coordinates where a coordinate applies, so a radius search and an address lookup read the same array.
Offence & status
The statute, the description, the tier or risk level as the registering jurisdiction expresses it, and the status flags a screening decision turns on.
Match
How strong this match is and exactly which criteria produced it — returned per record, so your threshold is a number in your code rather than a setting on your account.
Provenance
Each registry this person appears on, each with that registry’s own link to them and its own timestamp. This is the citation you attach to a file when a decision is questioned.
Jurisdiction-specific
Values a particular registry publishes that have no national equivalent are kept under a namespaced key rather than flattened into the common schema, so a field never changes meaning between states.
The full field-by-field reference is in the Record object documentation.
Four things a single-state lookup cannot do
Coverage is a count until the response does something with it. These are the four behaviours that turn fifty-eight registries into one answer.
1. One person, one record — across state lines
Someone registered in one state and living in another appears on more than one registry. You get them back once, as a single record whose sources array names each registry that holds them, each with its own link. Corroboration across registries raises the confidence score rather than producing a second row for your reviewer to reconcile. That is the entire reason to search nationwide rather than to loop over states.
2. Match strength is labelled, not implied
Send a date of birth and every record comes back carrying matchState — a plain label saying which criteria the match was actually made on — alongside matchConfidence and a matchBasis array listing the individual signals. Three modes (strict, balanced, broad) move the recall/precision trade-off. You decide what passes; nothing is silently collapsed into a yes or a no.
3. The response says what it covered
Every search returns counts and a per-source status block naming which registries answered, plus a machine-readable status on the response itself. An answer you can branch on beats an answer you have to trust: a result set is only evidence of absence if you know what was searched, and this is the field that tells you.
4. Every record cites its origin
Each source entry carries the registry, that registry’s own permanent link to the registrant, and a lastCheckedAt timestamp. Store the link and the jurisdiction together and you have a durable key for that person on that registry — one that survives a change to your query scope and gives you something to diff against on the next screen.
US-wide by default, narrowed on purpose
Send no jurisdictions
The search runs across every US registry we cover. This is the default because it is the shape most screening questions actually have: you are asking whether this person appears anywhere, not whether they appear in the state you happened to think of. A prior out-of-state registration surfaces without you knowing to look for it.
Send a jurisdictions array
The search is scoped to those registries and answers faster. Note the difference from query.state, which filters the result set rather than selecting which registries are searched — the two are separate controls on purpose, and the jurisdictions reference sets out every code the API accepts.
The same coverage, five ways to consume it
Coverage does not change with the transport. Pick the one that matches your traffic shape rather than your plan — none of these is a tier.
Synchronous search
One POST, one response, every jurisdiction. The default path for an interactive screen where somebody is waiting.
Async & webhooks
Submit and collect, with no request-timeout ceiling. Poll for the result or take a signed webhook, and retry safely with an idempotency key.
Batch & CSV
Up to 1,000 lookups per call as JSON or CSV. Results return in input order and each row is fault-isolated, so one bad row does not cost you the batch.
Verification reports
A timestamped PDF of a search you already ran, with a source citation on every record — one document for the audit file.
Drop-in compatibility
A compatibility endpoint mirrors the legacy request and response envelope, so a migration is a base URL and a key rather than a rewrite.
MCP & AI agents
The same nationwide search as a Model Context Protocol tool, so an agent can run it and cite what it found.
Coverage, state by state
Every jurisdiction is included in a nationwide search by default — you scope down, you never opt in. Each record comes back in the same normalized shape whichever jurisdiction it came from, carrying its own source and lastCheckedAt, so one integration reads all of them.
| Jurisdiction | Type | Page |
|---|---|---|
| Alabama | State | View |
| Alaska | State | View |
| Arizona | State | View |
| Arkansas | State | View |
| California | State | View |
| Colorado | State | View |
| Connecticut | State | View |
| Delaware | State | View |
| District of Columbia | US territory | View |
| Florida | State | View |
| Georgia | State | View |
| Hawaii | State | View |
| Idaho | State | View |
| Illinois | State | View |
| Indiana | State | View |
| Iowa | State | View |
| Kansas | State | View |
| Kentucky | State | View |
| Louisiana | State | View |
| Maine | State | View |
| Maryland | State | View |
| Massachusetts | State | View |
| Michigan | State | View |
| Minnesota | State | View |
| Mississippi | State | View |
| Missouri | State | View |
| Montana | State | View |
| Nebraska | State | View |
| Nevada | State | View |
| New Hampshire | State | View |
| New Jersey | State | View |
| New Mexico | State | View |
| New York | State | View |
| North Carolina | State | View |
| North Dakota | State | View |
| Ohio | State | View |
| Oklahoma | State | View |
| Oregon | State | View |
| Pennsylvania | State | View |
| Rhode Island | State | View |
| South Carolina | State | View |
| South Dakota | State | View |
| Tennessee | State | View |
| Texas | State | View |
| Utah | State | View |
| Vermont | State | View |
| Virginia | State | View |
| Washington | State | View |
| West Virginia | State | View |
| Wisconsin | State | View |
| Wyoming | State | View |
| Puerto Rico | US territory | View |
| Guam | US territory | View |
| US Virgin Islands | US territory | View |
| American Samoa | US territory | View |
| Northern Mariana Islands | US territory | View |
50 states · DC · 6 US territories
Acceptable use
Use is subject to our acceptable-use terms and applicable law, which you accept at onboarding.
58 US registries in one call
Every state, DC, and territory — scored, de-duplicated, and source-tagged.