Developer docs · v1.0.0

Sex Offender API vs. Criminal Records API

Two different datasets with two different questions. Most screening calls both.

Side by side

Sex Offender Search APICriminal Records API
DatasetPublic sex offender registries: every US state, DC, the territories, tribal registries.Criminal records from jails, prisons (DOC), criminal courts, warrant systems, registries and exclusion lists the platform holds.
AnswerRegistrants matching the person, with registration details, offenses, addresses and photographs where published.Records of bookings, custody, cases, charges and dispositions matching the person, each tagged with its source and record type.
Completeness modelEvery jurisdiction in scope is searched; sourceStatus says which finished.Every stored record is read or the search is refused as too broad; live checks say which sources finished.
Key fieldsmatchConfidence, matchState (DOB tiers), offenses[], sources[]matchConfidence, recordType, cases[].charges[], currentStatus, sources[]
EndpointPOST /v1/searchPOST /v1/criminal/search
Live re-checklive.jurisdictions or live.scope: "matched"; evidence PDFs with live.evidence: "pdf".live.jurisdictions or live.scope: "matched".

When to call which

  • Registry status is the question (visitor screening, admissions, volunteer checks): the Sex Offender Search API.
  • Criminal history is the question (bookings, convictions, custody): the Criminal Records API.
  • A person is being screened: both, then a Monitoring watch. A registrant may have no criminal record in the sources held, and a person with criminal records may not be a registrant.
curl -X POST https://api.offendersearch.app/v1/search \
  -H "X-API-Key: $OFFENDERSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": {"firstName": "Jordan", "lastName": "Rivera", "dob": "1988-04-12"}}'