Offendersearch
API Reference · Criminal Search

Criminal Search API

One authenticated call searches US criminal records — statewide and federal — and returns one normalized, scored answer, in the same envelope as the Sex Offender API. Same account, same key, same dashboard.

Base URL https://api.offendersearch.app

Introduction

The Criminal Search API is a REST API for national criminal-records search. It lives under /v1/criminal/, is authenticated with the same API key as the Sex Offender API, and returns the same JSON envelope — a caller who knows one API knows both. Every match is a normalized record with a matchState, and every response carries a per-record legal notice.

  • One call, one normalized answer. A single search returns de-duplicated records across the jurisdictions we cover — each labelled with the neutral jurisdiction code and record level it came back from.
  • Cached by default, live verification on request. The default search reads a continuously updated corpus and returns in well under a second. Add a live block to re-check the actual jurisdiction(s) in-request; it is billed per completed source to a $2.00 ceiling.
  • 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.
  • Neutral jurisdiction codes. Every place is a code of the form <ST>-<COUNTY> (a county) or <ST>-<RECORD-KIND> (a statewide or federal system, e.g. TX-DOC). A code names a state and a place, and nothing else.
The Criminal Search API is not a consumer reporting agency and this data is not a consumer report. You may not use it for employment, tenant screening, credit, insurance, or any other purpose covered by the FCRA. Honouring that restriction is a condition of access, stated verbatim in the legal block of every response.

Access

Criminal Search is available on every account automatically — there is nothing to enable and no entitlement to request. Any valid /v1/criminal/* call works immediately, and live verification is included with no separate add-on. The keys are the same keys you already use for the Sex Offender API. Full detail is on Access & keys.

Your first call

Create a key in your dashboard, export it, and search. query.lastName is required; an unbounded query is refused with 422. Note that page and perPage live at the top level of the request, not inside query. The full walkthrough is on Quickstart.

POST /v1/criminal/search
curl -X POST https://api.offendersearch.app/v1/criminal/search \
  -H "X-API-Key: $OFFENDERSEARCH_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "query": { "lastName": "Hamilton", "firstName": "Alex", "state": "TX" },
        "page": 1, "perPage": 50
      }'

Coverage today

Live today: the statewide DOC (state-prison) systems. The county jail and court layer is expanding, added jurisdiction by jurisdiction, and the federal layer alongside it. The authoritative, always-current answer is the API itself — GET /v1/criminal/sources lists every jurisdiction and its currency (no key required). Read it at integration rather than hard-coding a list.

Documentation

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

Endpoint index

The public Criminal Search surface, and the page that documents each in full. Every path is prefixed with the base URL.

MethodPathWhat it does
POST/v1/criminal/searchThe primary endpoint — cached by default, live verification when you send a live block.
GET/v1/criminal/searches/{searchId}Poll an asynchronous live job for its result.
POST/v1/criminal/resolveMap a roster or court website you know to our neutral jurisdiction code.
POST/v1/criminal/batchUp to 1000 cached lookups in one call, JSON or CSV, results in input order.
GET/v1/criminal/records/{recordId}Re-fetch a single normalized record by its externalId.
GET/v1/criminal/sourcesCoverage catalog with per-jurisdiction currency. No API key required.
GET/v1/criminal/jurisdictionsThe coverage catalog filtered by state, record kind and live-reachability.
POST/v1/criminal/reportA timestamped PDF attesting a search was performed, with a citation per record.

Alongside this: the Sex Offender API

The Sex Offender API is live on the same account and key: one call searches every US registry and returns scored, source-cited records with photographs.

Read the Sex Offender API reference →