Offendersearch
New · live now

The Criminal Background Check API: one cited answer per person

One call with a name and identifiers; one decision-ready answer across county, state and federal criminal records. Live now, on the same key that already runs our registry check.

Registry screening remains our primary product — the sex offender registry check, 58 US registries, continuously updated.

Read the API reference

The flows this is being built for

Hiring

A candidate accepts an offer and your ATS needs an answer inside its own flow — not a login to a third-party portal and a PDF three days later. It sits behind exactly that call.

Tenancy

An application arrives with a name, a date of birth and yesterday as the deadline. A check belongs in the same screen the application is already on, with a result you can keep on file.

Marketplaces & platforms

Drivers, sitters, contractors, sellers: platform trust teams screen at signup and re-screen on a schedule. That is an API-shaped problem, and batch-shaped at renewal time.

Why a check needs all three layers

A background check that reads one layer is a check with a hole in it. Most criminal cases are county matters; a state repository may lag or omit them; a federal case — fraud, interstate offenses — appears in neither. The criminal search is being designed so one call reads across all three and tells you, per record, exactly which court it came from.

  • One person in, one consistent, cited answer out
  • County, state and federal layers in a single call
  • Bulk screening for re-checks and renewals
  • A dashboard for the teams who never want to write code

Screening today? The registry check is live, and the criminal reference shows the shape it follows.

The call

One request, one cited answer

POST /v1/criminal/search takes a person and returns every matching record with the jurisdiction that holds it and how it matched. Add live to check named sources at the moment of the search.

POST /v1/criminal/search
{
  "query": {
    "firstName": "Alex",
    "lastName": "Hamilton",
    "dob": "1989-04-23",
    "state": "TX"
  },
  "live": { "jurisdictions": ["TX-DALLAS"] }
}
{
  "status": "complete",
  "counts": { "records": 1, "sourcesQueried": 1,
              "sourcesComplete": 1, "sourcesIncomplete": 0 },
  "sourceStatus": [{ "code": "TX-DALLAS", "ok": true,
                     "records": 1, "live": true }],
  "records": [{
    "externalId": "TX-DALLAS:booking:889201",
    "name": { "first": "ALEX", "last": "HAMILTON" },
    "matchState": "dob_match",
    "matchConfidence": 0.95,
    "liveChecked": true
  }],
  "legal": { "notice": "Not a consumer report. …" }
}

More than two live sources, or ones that are not sync-eligible, run asynchronously: the response returns a searchId and a poll URL. Full reference: criminal search docs. Every parameter and record type, endpoint by endpoint, is on the criminal search API page; the county, state and federal layers it reaches are explained on the criminal records API page.

What comes back

The fields a screening decision needs

FieldWhat it tells you
matchStateHow the record was tied to the person: dob_match, year_match, age_match or name-only — the line between a lead and an identification
matchBasis, matchConfidenceWhich identifiers agreed, and a score you can threshold
cases[], caseNumber, filedDateThe court case behind a record, with its county and filing date
charges[], statute, levelEach charge, the statute where published, and felony, misdemeanor or infraction
charges[].disposition, dispositionDateHow each charge ended — the field that decides whether a record is a conviction
sentence, custody fieldsSentence where published; current or past incarceration and facility
currentStatusFor warrants and custody records, whether the status is current
sources[], sourceStatus[]The jurisdiction holding each record, and whether each source answered — live or not

The complete schema is the criminal record object. The guide to reading a background check explains each field in plain language.

Accuracy

Matching, and the false positives it prevents

The costly failure in criminal screening is not a missed record — it is a record attached to the wrong person. Public criminal records are filed under names, and most carry a date of birth with varying precision. An API that answers “match” or “no match” hides the difference between a full date-of-birth agreement and a shared surname.

Every record here says how it matched. A query with a date of birth labels each record by what its source published: a full date match, a birth-year match, an age-only match, or no date at all — flagged as unverified. Your system can act automatically on the first and route the rest to a person. That is the design that keeps a namesake from becoming an accusation.

Speed and cost

Seconds per check, priced per call

$0.15 per call

The same price as a registry search, dropping to $0.11 past 2,000 calls in a month. One account and one key cover both products.

$0.02 per live source

A live check at a named source adds $0.02 per completed source, capped at $2.00 a search. Every response reports exactly what was charged.

Seconds, not days

A search answers in seconds; live checks of several sources run asynchronously and you poll for the result. See how long checks take.

Full detail on the pricing page, including batch and monitoring.

Compared

How this differs from a typical background check API

Typical background check APIOffendersearch
Result shapeA report, often a PDF, after hours or daysStructured JSON in the same call
Match evidenceMatch / no matchMatch state and basis on every record
Which sources answeredRarely statedPer-source status, live or not
Registry and criminalSeparate products or add-onsOne key, one price
PricingPer report, by package, often by quotePublished per call, from $0.11
Consumer report?Yes, when sold by a CRANo — use a CRA for FCRA-covered decisions
Integration

From key to first check in four steps

  1. Create an account and copy your API key — the free trial covers your first searches
  2. Send POST /v1/criminal/search with a name and, ideally, a full date of birth
  3. Act on dob_match records; route weaker matches to a reviewer; check sourceStatus before reading an empty result as clear
  4. Add batch for re-screens and a monitor to keep watching after the check
Limits

What a criminal background check API cannot tell you

No API reaches a record a jurisdiction does not publish. Some states publish a statewide court index; many do not, and their dispositions live only in county files. Our state-by-state pages show which layers each state publishes, so you can see where an empty result is strong evidence and where it is not.

An empty result is only as good as the sources that answered. That is why the response separates sourcesComplete from sourcesIncomplete: a search with a source that did not answer is not a clear search, and your system should treat it that way.

And no data source makes a decision lawful by itself. If the result will be used to decide on hiring, housing, credit or insurance, the Fair Credit Reporting Act applies: order the report through a consumer reporting agency, get the applicant’s authorization, and follow the adverse action process. Offendersearch results are not a consumer report.

Monitoring API

Keep watching after the check

A check answers today. A monitor keeps answering: POST /v1/monitors creates a recurring watch on a person by name and date of birth, evaluated every morning against our continuously updated data, and emails an alert when a matching criminal record appears or changes. Person monitoring is $3/mo.

Criminal and sex offender person monitors are billed separately, and criminal-record location monitoring is coming soon. Full reference: the Monitoring API docs. Monitoring is not a consumer report and must not be used for FCRA-governed hiring, tenancy, or credit decisions — those run through FCRA Partner Access.

POST /v1/monitors
{
  "product": "criminal",
  "type": "person",
  "person": { "name": "Jordan Rivera", "dob": "1988-04-12" },
  "channels": { "email": ["alerts@example.com"] }
}

Background check API FAQ

Is the criminal background check API available today?

Yes. It is live and callable, reaching more than a thousand county, state and federal jurisdictions. The sex offender registry check — 58 US registries, continuously updated — remains our primary product and runs on the same key, callable from the API or without code from the dashboard.

How does a check differ from a records search?

A records search answers "what exists about this name". A check is that answer shaped for a decision: one person, their identifiers, the matching records across county, state and federal layers, each one cited to where it came from — in a schema your system can act on.

Can it be used for FCRA-regulated criminal checks?

Yes, through FCRA Partner Access — FCRA orders for approved consumer reporting agencies and screening platforms, under a written FCRA agreement, covering a criminal search, a registry search or both. It requires an exact date-of-birth match, withholds non-conviction records older than seven years unless the salary exemption applies, re-checks records live before they are furnished, and records evidence per order. Standard results are not a consumer report.

Can I screen against the sex offender registry today?

Yes, and it remains our primary product: 58 US registries behind one search, with photographs, aliases and the official record citation. The criminal layers run alongside it on the same key.

What does it cost to try?

There is a free trial on the same account as the registry search, and pricing is published before you are asked to commit to anything.

How much does the criminal background check API cost?

$0.15 per call, dropping to $0.11 per call past 2,000 calls in a month — the same price as a registry search. Live checks at named sources add $0.02 per completed source, capped at $2.00 per search. Batch rows are billed as one call each.

Do I need a date of birth?

It is optional but strongly recommended. With a date of birth, every record is labelled by how well it matched — full date, birth year, age or name only — so you can act on strong matches and review the rest. Without one, every result is a name match.

How fast is a criminal background check through the API?

A search answers in seconds. Asking for live checks at more than two sources, or at sources that are not sync-eligible, switches to asynchronous mode: you get a search ID and poll for the result.

Which jurisdictions does it cover?

It reaches more than a thousand county, state and federal jurisdictions. GET /v1/criminal/sources publishes the live list with per-jurisdiction status, and every response says which sources answered.

More criminal record types

Criminal Records API

The hub: county, state and federal criminal records behind one search — the same way the offender registry search works.

County Criminal Records

The courthouse layer — where most criminal cases actually live, spread across more than a thousand county jurisdictions.

Federal Criminal Records

The federal district courts: fraud, interstate and other federal offenses that never appear in a county search.

Statewide Criminal Search

One search per state instead of a patchwork of portals — or every covered state at once in a single call.

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