Offendersearch
One key · two offender searches

The Offender Search API

One offender search API for both questions people mean by “offender”. Search registered sex offenders across 58 US registries, and search criminal records from jail, prison, court and warrant systems, with the same key and the same scored, cited answer from each.

25 free calls · No card · $0.15 a call, $0.11 past 2,000 a month

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"
    }
  }'
The basics

What the offender search API searches

“Offender” means two things in US public records. On a registry it means a person required to register as a sex offender. In corrections and the courts it means anyone in the system: booked into a county jail, held in a state prison, charged in a court case or named on a warrant. Those are different records, held by different agencies, and a search of one says nothing about the other.

The offender search API covers both, as two endpoints on one account. The registry search reaches 58 US registries — the 50 states, DC and the territories. The criminal search reaches more than a thousand county, state and federal jurisdictions, with coverage in every US state. You call whichever one your question needs, or both for the same person.

Endpoints

Two offender search endpoints, one API key

EndpointSearchesNeedsReturns
POST /v1/search
Reference →
Registered sex offenders across 58 US registriesA name, an address, a ZIP or a lat/lng radiusRegistry records with photographs, addresses, offenses and the registry that holds each one
POST /v1/criminal/search
Reference →
Jail bookings, prison custody, court cases, warrants and registriesA last name; first name and date of birth strongly recommendedCriminal records with cases, charges, dispositions, custody status and the jurisdiction that holds each one

Each endpoint in depth: the sex offender search API and the criminal search API.

Registry search

Search registered sex offenders by name or location

POST /v1/search takes a name with an optional date of birth or age, or a location on its own: a street address, a ZIP, a city, or a latitude and longitude with a radius up to 100 miles. One person registered in several places comes back as one record whose sources[] lists each registry. To choose which registries are searched, see the sex offender registry API.

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"
    }
  }'
Criminal search

Search criminal offender records: jail, prison, court and warrants

POST /v1/criminal/search takes a last name, ideally with a first name and date of birth, and optionally a state or county to narrow it. A last name is required: an unbounded criminal query would return an arbitrary slice, not an answer. Each record carries its cases, charges and dispositions where the holder publishes them, and sources[].level says whether a county, state or federal system holds it. The full picture is on the criminal records API page.

curl -X POST https://api.offendersearch.app/v1/criminal/search \
  -H "X-API-Key: $OFFENDERSEARCH_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "query": { "lastName": "Okafor", "firstName": "Morgan",
                   "dob": "1990-06-18", "state": "OK" },
        "page": 1, "perPage": 50
      }'
Choosing

Which offender search to call, and when

The questionCallWhy
Is this person a registered sex offender?Registry searchA name and date of birth against 58 registries, with a registry citation on every match.
Who is registered near this address?Registry searchAddress, ZIP or lat/lng radius up to 100 miles. The criminal search has no location-only query.
Is this person in jail or prison right now?Criminal searchJail rosters and state prison systems, with custody status on the record.
Does this person have a court case or a conviction?Criminal searchCourt cases with charges and dispositions, where a court publishes them.
Is there an active warrant?Criminal searchStatewide warrant systems where a state publishes one.
I need everything on this personBothSend the same person to both endpoints. Two calls, each billed once.
Both at once

Run both offender searches for one person

The two endpoints accept the same person object, so checking someone against the registries and criminal records is two requests with one payload. They are independent: run them in parallel, and treat each response’s status on its own.

import os, requests

API = "https://api.offendersearch.app"
HEADERS = {"X-API-Key": os.environ["OFFENDERSEARCH_KEY"]}
person = {"firstName": "Morgan", "lastName": "Okafor", "dob": "1990-06-18"}

registry = requests.post(f"{API}/v1/search", headers=HEADERS,
                         json={"query": person}, timeout=30).json()
criminal = requests.post(f"{API}/v1/criminal/search", headers=HEADERS,
                         json={"query": person}, timeout=30).json()

print("registry:", registry["status"], len(registry["records"]))
print("criminal:", criminal["status"], len(criminal["records"]))
One model

What both offender searches have in common

One key and one header

Both searches authenticate with the same X-API-Key. There is no second credential, product toggle or contract for the criminal endpoints.

The person goes in query

firstName, lastName and dob mean the same thing on both endpoints, so one person object can be sent to each.

Every match is scored and explained

matchConfidence, matchState and matchBasis appear on registry records and criminal records alike. You set one threshold policy for both.

Every record cites its holder

sources[] names the registry or jurisdiction that holds the record, with that holder’s own record link and a lastCheckedAt.

Incomplete is labelled

A top-level status and per-source status on both responses. A source that did not answer is named, not silently dropped.

One bill

Each call is $0.15, or $0.11 past 2,000 calls in a month, whichever endpoint it hits. Usage from both lands on one invoice.

The differences

Registry records vs criminal records: how the two differ

 Registry searchCriminal search
What a record isOne registrant, merged across the registries they appear onOne criminal record: a booking, a custody record, a court case or a warrant
Minimum queryA name, or a location on its ownA last name is required
Location searchAddress, ZIP, city and lat/lng radiusstate and county narrow a name search
PhotographsReturned in images[] on every responseWhere the holding jurisdiction publishes one
Coverage statement58 US registries — the 50 states, DC and the territoriesmore than a thousand county, state and federal jurisdictions, with coverage in every US state
Kind of recordAlways a registrationrecordType is always "criminal_record"; the fields that are filled and sources[].level tell you the kind

Field references: the registry record object and the criminal record object.

Matching

How an offender match is scored

A name alone is weak evidence. Thousands of people share a common name, and records spell names differently. So neither search returns a bare yes or no. Each record carries matchConfidence, a number you can threshold on; matchState, which says how the date of birth compared (dob_match, year_match, age_match, dob_mismatch or no_dob_age_year); and matchBasis, which names the fields that matched and the strategy that matched them.

That lets you decide once how your product treats a match. A common policy: auto-accept a full date-of-birth match, send a birth-year or age match to a person for review, and never act on a name-only match. The same policy then applies to registry records and criminal records. See matching and confidence for the registry search and criminal matching for the criminal one.

At volume

Batch, async and monitoring on the same key

Batch

Send a list of people and get one scored result per row, each row billed as one call. See bulk sex offender search and bulk criminal record search.

Async and webhooks

Start a long search, get an id back straight away and collect the finished result later, or have it sent to your callback URL. Reference: async and webhooks.

Monitoring

Watch a person or an address and get an alert when a matching record appears or changes. See sex offender monitoring.

Comparison

Offender search APIs compared

The offenders.io column states what offenders.io publishes about itself. Where it publishes more — tribal jurisdictions, a recurring free tier, facial search, an availability SLA — the row says so. Full detail: Offendersearch vs offenders.io.

 Offendersearchoffenders.io
Registered sex offender search58 US registries in one requestPublishes 184 state, territory and tribal registry jurisdictions
Criminal record search on the same keyYes — jail, prison, court and warrant records at POST /v1/criminal/searchNot in their public API documentation
Free usage25 free calls at sign-up, no cardFirst 50 requests free every month
Price per call$0.15 for the first 2,000 a month, then $0.11$0.20 for the next 2,000 after the free 50, then $0.15
Match score on every recordmatchConfidence, matchBasis and matchStateNot in their public API documentation
Per-source statussourceStatus names each source that answered and each that did notAn errors array flags incomplete results
Radius searchUp to 100 miles, at the base price1 to 100 miles; GIS add-on plans listed from $99 a month
BatchPOST /v1/batch, up to 1,000 people per request, or a CSV in the dashboardA CSV batch web tool, 10,000+ records per session
MCP server for AI agentsHosted MCP server on the same keyMCP server offered
Facial searchNot offeredControlled-access facial recognition
Availability SLAEnterprise terms on requestPublishes a 99.9% availability SLA
Pricing

Offender search API pricing

First 25 callsFree, no card required, on either search
Registry search$0.15 a call
Criminal search$0.15 a call
Past 2,000 calls in a month$0.11 per call
Both searches for one personTwo calls
BatchEach row billed as one call
Seats, search minimums, contractsNone

Worked out by monthly volume: background check API pricing. Full schedule: pricing.

Start free25 free calls, no card.
FAQ

Offender search API: common questions

What is an offender search API?

An offender search API lets software look a person up in public offender records with an HTTP request. Depending on the provider that means the sex offender registries, corrections and court records, or both. Offendersearch offers both on one key: a registry search across 58 US registries and a criminal record search across jail, prison, court and warrant records.

Does the offender search API cover sex offenders and criminal records?

Yes, as two endpoints. POST /v1/search searches the sex offender registries. POST /v1/criminal/search searches jail bookings, prison custody, court cases and warrants. They share a key, a query shape and a scoring model, and each call is billed once.

Do I need two API keys or two accounts?

No. One account and one X-API-Key reach both searches. If you have integrated one endpoint, the other needs no new credential and no new contract.

Can I search both with one request?

They are separate requests, so you choose what you pay for. To check a person against both, send the same query object to each endpoint. The code sample on this page does it in parallel.

What do I need to run an offender search?

For the registry search: a name, or just an address, ZIP or coordinates. For the criminal search: a last name at minimum. On both, a first name and a date of birth cut false positives more than anything else.

How much does the offender search API cost?

$0.15 per call for the first 2,000 calls in a month, then $0.11 per call, on either endpoint. The first 25 calls are free with no card. There are no seats, search minimums or contracts.

Is there a free offender search API?

The first 25 calls are free and need no payment method. They work on both the registry and criminal searches, so you can test real names before paying anything.

How do I tell a booking from a conviction?

Read the record, not just the hit. A criminal record carries its cases, charges and each charge’s disposition, plus a currentStatus, and sources[].level says whether a county, state or federal system holds it. A jail booking with no disposition is an arrest record, not a conviction.

Can I look up an inmate with the offender search API?

Yes. The criminal search returns jail roster and state prison records with custody status. Federal custody is covered as well; the federal criminal records page explains what a federal search includes.

How do I know the search was complete?

Both responses carry a status of "complete" or "partial" and a status entry per source. If a registry or jurisdiction did not answer, it is named, so an empty result is never mistaken for a clean one.

Can I run offender searches in bulk?

Yes. Both searches have a batch endpoint that takes a list of people and returns one scored result per row, with each row billed as one call. The dashboard accepts a CSV upload for the same job.

Can AI agents use the offender search API?

Yes. A hosted MCP server exposes the registry search as tools on the same key, so an assistant can run a search and cite the official record in its answer. Criminal records are available to an agent through the REST API on that key.

Is an offender search a background check under the FCRA?

Results from the standard API are not a consumer report. A hiring or tenant decision is an FCRA-regulated use and runs through FCRA Partner Access, a separately enabled service for consumer reporting agencies and screening platforms under a written FCRA agreement.

The Offendersearch APIs

One account, one key, one bill — the sex offender registry and criminal records, side by side.

Sex offender registry

Criminal records

Build with it

Screening and compliance

Comparisons & research

Further reading

Independent comparisons of the tools in this category — including where other vendors are the better answer.

The best sex offender APIs in 2026, compared

Five ways to search US registries programmatically, measured on coverage you can enumerate, provenance, match quality and price.

The best criminal record search APIs in 2026

Jail bookings, prison custody, court cases and warrants are four different systems. Which API you want depends on which one your question needs.

The best background check APIs in 2026

Five brands, three companies: the consolidation nobody mentions, each vendor’s real published price, and the only per-call API on the list.

How to build a sex offender map with MapLibre

A developer tutorial with full code: clusters, pins, names and a record panel, built in free test mode.

More in our comparisons and research.

Run your first offender search in minutes

25 free calls, no card, and one key for the registry and criminal searches. Sign up, create a key and send the request above.