Offendersearch
API Reference · v1.0.0

Sex Offender Search API

A single authenticated call searches nationwide sex-offender data — the 50 states, DC, and the territories — and returns scored, de-duplicated, source-tagged records. Synchronous for interactive checks; asynchronous for batch and high-volume work.

Base URL https://api.offendersearch.app

Introduction

The Offendersearch API is a REST API for national sex-offender screening. It provides nationwide sex-offender data behind one endpoint, offers full legacy field parity, and adds scored matches, per-source status, live re-verification, and consolidated verification reports. Every request is authenticated with an API key; every response is JSON.

  • One call, nationwide. Omit jurisdictions to search the full dataset, or name a subset. Nickname-aware name search, date-of-birth and age match-states, and a lat/lng radius search are all built in.
  • One normalized schema across 58 jurisdictions. Every match is a 76-field superset — full legacy field parity plus a 34-field extensive stateData block (registration status, compliance, verification dates, restrictions, and more) via include: ["stateData"].
  • Per-source status on every response. sourceStatus[] reports every jurisdiction the request touched, individually — so an incomplete search is always labelled as one, never returned as a silently short list.
  • Labelled match strength. matchState is dob_match, year_match, age_match or no_dob_age_year on every record, so you set your own confidence threshold rather than inherit one.
  • Provenance built in. Every record carries source provenance with a lastCheckedAt, and any search can be re-verified live per request.
  • Additive contract. New data (e.g. criminal records) lands as a new recordType — the response shape never breaks.
  • Machine-readable spec. The full OpenAPI document is published at /openapi.json and /openapi.yaml — generate a client from it rather than hand-writing types. It is the same spec these pages are written against.
Offendersearch is not a consumer reporting agency and results are not a consumer report. Do not use them for FCRA-covered decisions without appropriate process. Use is subject to our acceptable-use terms and applicable law, which you accept at onboarding.

Your first call

Create a key in your dashboard, export it, and search. Passing jurisdictions: null — or omitting it — searches the full dataset at once. Then read status, counts, and each record’s matchState. The full walkthrough is on Quickstart.

curl https://api.offendersearch.app/v1/search \
  -H "X-API-Key: $OFFENDERSEARCH_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
      "firstName": "John",
      "lastName": "Doe",
      "dob": "1980-04-12"
    },
    "jurisdictions": null,
    "match": "balanced",
    "include": ["stateData"]
  }'

Documentation

Each section below is its own page, with its own worked examples, and its own markdown alternate at /docs/{section}.md.

Endpoint index

Every public endpoint, and the page that documents it in full with parameters, examples and response shapes.

MethodPathWhat it does
POST/v1/searchSynchronous search across every jurisdiction, scored and de-duplicated.
POST/v1/searchesAsynchronous search — submit now, collect by polling or webhook.
GET/v1/searches/{searchId}Status and results of an asynchronous search.
POST/v1/batchUp to 1000 queries in one call, JSON or CSV, results in input order.
POST/v1/reportA consolidated, timestamped PDF of a search you already ran.
GET/v1/records/{recordId}Fetch a single normalized record by id.
GET/v1/sourcesThe live coverage catalog with per-jurisdiction health.
POST/v1/compat/sexoffenderDrop-in compatibility endpoint returning the legacy envelope.

Machine-readable documentation

These docs are published for automated consumption as well as for people. Every page has a markdown alternate, and the API has a published OpenAPI definition in both serialisations from a single source, so they cannot drift.

URLMedia typeWhat it is
/docs.mdtext/markdownThe complete documentation as one markdown document.
/docs/{section}.mdtext/markdownAny single section as markdown, e.g. /docs/search.md.
/openapi.jsonapplication/jsonThe OpenAPI definition, for SDK and MCP-server generators.
/openapi.yamlapplication/yamlThe same definition, YAML serialisation.
/.well-known/api-catalogapplication/linkset+jsonRFC 9727 API catalog linking the definition and this documentation.