# Sex Offender Search API

> One authenticated call searches every US sex offender registry and returns scored, de-duplicated, source-tagged records.

- **HTML:** https://offendersearch.app/docs/sex-offender
- **Base URL (live):** https://api.offendersearch.app — live keys (`os_live_…`)
- **Base URL (sandbox):** https://sandbox.offendersearch.app — test keys (`os_test_…`), never billed
- **Authentication:** `X-API-Key` request header
- **OpenAPI:** https://offendersearch.app/openapi.json · https://offendersearch.app/openapi.yaml
- **Docs index for agents:** https://offendersearch.app/llms.txt

## What it does

- **All 58 US registries in one call.** The 50 states, DC, the territories and tribal registries. Omit `jurisdictions` to search all of them or name a subset.
- **One normalized record.** Every match is the same Record object — names, aliases, date of birth with its precision, addresses, offenses, photographs, registration details — plus a 36-field per-state `stateData` block on every record.
- **Scored, labelled matching.** `matchConfidence`, `matchBasis`, `matchedName` and a `matchState` for date of birth on every record, so you set the threshold.
- **Completeness you can read.** `counts` and `sourceStatus[]` say which jurisdictions finished; an empty result is only an answer when they did.
- **Live re-verification and evidence.** Re-check named registries at query time, or add `live.evidence: "pdf"` to receive the registry's own page as a document.

## Start here

- [Quickstart](https://offendersearch.app/docs/quickstart): first search in cURL, Node and Python, and the four fields to read on every response
- [Search — POST /v1/search](https://offendersearch.app/docs/search): every parameter and nine worked query shapes
- [Understanding search results](https://offendersearch.app/docs/guides/sex-offender/understanding-results): status, counts, sourceStatus, matchConfidence and matchState, read in order
- [The Record object](https://offendersearch.app/docs/record-object): every field a record carries
- [Sandbox & test keys](https://offendersearch.app/docs/sandbox): fixed test names, never billed
- [Go-live checklist](https://offendersearch.app/docs/guides/sex-offender/go-live): what to verify before production traffic

## Guides

- [Matching & confidence](https://offendersearch.app/docs/matching)
- [Searching by date of birth](https://offendersearch.app/docs/date-of-birth)
- [Regular & live searches](https://offendersearch.app/docs/freshness)
- [Live evidence](https://offendersearch.app/docs/live-evidence)
- [Jurisdictions](https://offendersearch.app/docs/jurisdictions)
- [Completeness & source status](https://offendersearch.app/docs/result-completeness)
- [Async & webhooks](https://offendersearch.app/docs/async-and-webhooks)
- [Batch & CSV](https://offendersearch.app/docs/batch)
- [Clearances](https://offendersearch.app/docs/clearances)
- [Verification reports](https://offendersearch.app/docs/reports)
- [Front-desk visitor screening](https://offendersearch.app/docs/front-desk-visitor-screening)
- [Errors & rate limits](https://offendersearch.app/docs/errors)

## Related

- [Monitoring API](https://offendersearch.app/docs/monitoring): keep a screened person current
- [Criminal Records API](https://offendersearch.app/docs/criminal)
- [Skilled nursing admissions guide](https://offendersearch.app/docs/solutions/skilled-nursing)
