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. Your state is in the table below, with how a date of birth resolves there.
25 free searches, no card. $0.15 per call. Jurisdiction codes › Read the docs ›
{ "query": { "lastName": "Sample", "dob": "1980-04-12" } }{
"status": "complete",
"counts": { "sourcesQueried": 58, "sourcesComplete": 58,
"sourcesSkippedByScope": 0 },
"sourceStatus": [
{ "source": "TX", "status": "ok", "matched": 1 },
{ "source": "GA", "status": "ok", "matched": 0 },
{ "source": "GU", "status": "ok", "matched": 0 },
… 55 more
]
}Sex offender API coverage, state by state. Coverage, state by state: every jurisdiction is in a US-wide 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. Date-of-birth precision is how a birth date resolves there: full date returns dob_match, year returns year_match, age returns age_match within the tolerance you set.
| Jurisdiction | Type | Registered | DOB precision | matchState | Page | Criminal |
|---|---|---|---|---|---|---|
| Alabama | State | — | Age precision | age_match | View | Records |
| Alaska | State | ≈ 3,730 | Full date | dob_match | View | Records |
| Arizona | State | — | Age precision | age_match | View | Records |
| Arkansas | State | — | Full date | dob_match | View | Records |
| California | State | — | Full date | dob_match | View | Records |
| Colorado | State | ≈ 10,400 | Full date | dob_match | View | Records |
| Connecticut | State | — | Full date | dob_match | View | Records |
| Delaware | State | ≈ 4,010 | Full date | dob_match | View | Records |
| District of Columbia | Federal district | ≈ 1,060 | Full date | dob_match | View | Records |
| Florida | State | ≈ 92,600 | Full date | dob_match | View | Records |
| Georgia | State | — | Year precision | year_match | View | Records |
| Hawaii | State | ≈ 2,930 | Year precision | year_match | View | Records |
| Idaho | State | — | Full date | dob_match | View | Records |
| Illinois | State | ≈ 44,200 | Full date | dob_match | View | Records |
| Indiana | State | — | Age precision | age_match | View | Records |
| Iowa | State | ≈ 7,140 | Full date | dob_match | View | Records |
| Kansas | State | — | Date or year | dob_match / year_match | View | Records |
| Kentucky | State | — | Full date | dob_match | View | Records |
| Louisiana | State | — | Full date | dob_match | View | Records |
| Maine | State | ≈ 2,890 | Full date | dob_match | View | Records |
| Maryland | State | — | Age precision | age_match | View | Records |
| Massachusetts | State | — | Year precision | year_match | View | Records |
| Michigan | State | ≈ 40,700 | Full date | dob_match | View | Records |
| Minnesota | State | — | Date, or on the name | dob_match / no_dob_age_year | View | Records |
| Mississippi | State | — | Full date | dob_match | View | Records |
| Missouri | State | — | Full date | dob_match | View | Records |
| Montana | State | ≈ 6,690 | Date, or on the name | dob_match / no_dob_age_year | View | Records |
| Nebraska | State | — | Full date | dob_match | View | Records |
| Nevada | State | ≈ 7,690 | Year precision | year_match | View | Records |
| New Hampshire | State | — | Full date | dob_match | View | Records |
| New Jersey | State | — | Full date | dob_match | View | Records |
| New Mexico | State | — | Year precision | year_match | View | Records |
| New York | State | — | Full date | dob_match | View | Records |
| North Carolina | State | ≈ 29,800 | Full date | dob_match | View | Records |
| North Dakota | State | ≈ 2,240 | Year precision | year_match | View | Records |
| Ohio | State | — | Full date | dob_match | View | Records |
| Oklahoma | State | ≈ 8,330 | Full date | dob_match | View | Records |
| Oregon | State | ≈ 34,600 | Full date | dob_match | View | Records |
| Pennsylvania | State | ≈ 25,300 | Year precision | year_match | View | Records |
| Rhode Island | State | ≈ 1,540 | Full date | dob_match | View | Records |
| South Carolina | State | — | Full date | dob_match | View | Records |
| South Dakota | State | — | Full date | dob_match | View | Records |
| Tennessee | State | ≈ 27,800 | Full date | dob_match | View | Records |
| Texas | State | ≈ 99,000 | Full date | dob_match | View | Records |
| Utah | State | — | Full date | dob_match | View | Records |
| Vermont | State | — | Full date | dob_match | View | Records |
| Virginia | State | ≈ 25,800 | Age precision | age_match | View | Records |
| Washington | State | — | Age precision | age_match | View | Records |
| West Virginia | State | — | Full date | dob_match | View | Records |
| Wisconsin | State | ≈ 27,400 | Age precision | age_match | View | Records |
| Wyoming | State | — | Full date | dob_match | View | Records |
| Puerto Rico | US territory | — | Full date | dob_match | View | — |
| Guam | US territory | ≈ 857 | Full date | dob_match | View | — |
| US Virgin Islands | US territory | ≈ 139 | Full date | dob_match | View | — |
| American Samoa | US territory | ≈ 147 | Full date | dob_match | View | — |
| Northern Mariana Islands | US territory | ≈ 108 | Full date | dob_match | View | — |
Sex offender API coverage by date-of-birth precision. 39 of 56 jurisdictions resolve a full date.
Precision decides which matchState a record can earn. Set your auto-accept rule on dob_match and route the rest to a reviewer; the table above shows where each state lands.
| Birth evidence on record | Best matchState | Jurisdictions |
|---|---|---|
| Full date of birth | dob_match | 39 |
| Birth year only | year_match | 7 |
| Age, within your ageTolerance | age_match | 7 |
| Full date where published, name-only otherwise | dob_match · no_dob_age_year | 2 |
| Full date on part of the roster, year on the rest | dob_match · year_match | 1 |
The sex offender registry API covers the 5 US territories in the same call.
Puerto Rico, Guam, US Virgin Islands, American Samoa, Northern Mariana Islands answer in the same schema as Texas, with the same matchState labels, and are searched by default — a person registered in a territory is not missed because nobody thought to ask.
Criminal records API coverage on the same key. 1,914 jurisdictions catalogued, 1,564 answering live, in 51 states, DC and federal custody.
| Layer | Catalogued | Live | What a record carries |
|---|---|---|---|
| County jail rosters | 1,375 | 992 | booking date, charges as filed, bond, release, photo link |
| State corrections | 53 | 53 | facility, custody status, sentence, projected release, parole |
| Courts and dispositions | 24 | 24 | case number, charges, disposition, sentence |
| Warrants | 28 | 28 | active warrants, flagged on the person |
| Federal custody | 1 | live | Bureau of Prisons register number and facility, on every search |
One schema across every jurisdiction. Fifty-eight registries do not agree on a field name, a date format or a name order. They agree in our response.
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. The full field-by-field reference is in the Record object documentation.
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.
name.first · name.last · aliases[] · dob · birthYear · age · sex · race
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.
addresses[] · addresses[].type · addresses[].lat · addresses[].lng · registrationState
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.
offense.statute · offense.tier · offense.riskLevel · flags.absconder · flags.predator
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.
matchConfidence · matchBasis[] · matchState
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.
sources[] · sources[].jurisdiction · sources[].recordUrl · sources[].lastCheckedAt
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.
stateData · jurisdiction · ethnicity
US-wide sex offender search: 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.
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 US-wide rather than to loop over states.
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.
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.
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.
Sex offender search API scope: 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.
{ "query": { "lastName": "Sample", "dob": "1980-04-12" } }
→ sourcesQueried 58 · sourcesComplete 58Send 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.
{ "query": { "lastName": "Sample" }, "jurisdictions": ["TX", "OK", "LA"] }
→ sourcesQueried 3 · sourcesSkippedByScope 55Sex offender API delivery: the same coverage, five ways to consume it. 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.
Synchronous search ›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.
Async & webhooks ›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.
Batch & CSV ›Verification reports
A timestamped PDF of a search you already ran, with a source citation on every record — one document for the audit file.
Verification reports ›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.
Drop-in compatibility ›MCP & AI agents
The same US-wide search as a Model Context Protocol tool, so an agent can run it and cite what it found.
MCP & AI agents ›Sex offender API acceptable use
Use is subject to our acceptable-use terms and applicable law, which you accept at onboarding. Standard results are not a consumer report; FCRA-covered hiring, tenant, credit and insurance decisions run through FCRA Partner Access.
Trust & security ›Sex offender API coverage questions
Do you cover my state?
Yes — every state, DC and the 5 US territories are in the table above. There is no state you opt into; you only ever scope down.
Why does date-of-birth precision differ by state?
Each registry publishes birth evidence at its own precision. The response tells you which — dobPrecision on the record and matchState on the match — so you can hold one threshold for a full-date match and another for a year or age match.
Can I re-verify a specific registry at decision time?
Yes. Add a live block naming the jurisdictions and the search re-checks them at the source in the same request, billed per source.
58 US registries in one call. Every state, DC, and territory — scored, de-duplicated, and source-tagged.
One POST covers every US registry, each answers with its own status, and you read one list. 25 free searches to see it on a real name.