OffenderSearch
Warrant search API · statewide warrant systems in 35 states

Warrant search API

Open warrant records as JSON: the issuing agency, the charge, the warrant type and status, the physical description, and a link to the system that lists it. One criminal search at $0.15 reaches the warrant systems alongside the jails, prisons and courts.

Get a free API keyRead the docs25 free calls · no card

Updated November 8, 2026 · API changelog

The warrant block on the record, from the sandbox answer
FieldValue in the sample
recordTypewarrant
currentStatusactive_warrant
warrant.typeFailure to appear
warrant.issuedBySample County Sheriff’s Office
cases[0].charges[0].severitymisdemeanor
matchStatedob_match
POST /v1/criminal/search · sandbox
curl -X POST "https://sandbox.offendersearch.app/v1/criminal/search" \
  -H "X-API-Key: $OFFENDERSEARCH_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
      "query": {
        "firstName": "Active",
        "lastName": "Warrant",
        "dob": "1985-09-09"
      }
    }'
One open warrant (currentStatus active_warrant).Sandbox people are synthetic; production answers have the same shape.
35states with a statewide warrant system in the search, as of 2026-11-08
1,934live jurisdictions in the same call; the dated list
$0.15a search, $0.11 past 2,000 in a month
1 callwarrants, bookings, custody and court cases together

The warrant record, field by field

The sandbox’s answer for its open-warrant persona: one failure-to-appear warrant in Georgia. Every key the serializer emits is in the body; the table names the ones a warrant integration reads.

POST /v1/criminal/searchsandbox scenario “Active warrant” · query {"firstName":"Active","lastName":"Warrant","dob":"1985-09-09"}
200 OK · the sandbox's answer, captured from its code
{
  "status": "complete",
  "counts": {
    "records": 1,
    "recordsReturned": 1,
    "sourcesQueried": 0,
    "sourcesComplete": 0,
    "sourcesIncomplete": 0,
    "candidatesCapped": false,
    "exclusionsIncluded": false,
    "sourcesOnFile": 1934,
    "sourcesPending": 197
  },
  "warnings": [],
  "page": 1,
  "perPage": 50,
  "totalPages": 1,
  "sourceStatus": [],
  "cappedOmittedSources": [],
  "omittedFields": [
    "sourceData"
  ],
  "records": [
    {
Read recordType, then currentStatus, then the warrant block. cases[0].status is Active and the charge carries no disposition: that is what an outstanding warrant looks like in the same shape a closed court case uses.Run it yourself with a test key ›
FieldTypeWhat it tells you
recordTypestringwarrant for a warrant system’s entry; wanted_fugitive for a most-wanted listing. Treat the field as an open string.
currentStatusstringactive_warrant while the warrant is outstanding. A booking on the same person later shows as a separate record with its own status.
warrant.typestringThe kind of warrant as the system states it: failure to appear, probation violation, bench warrant, arrest warrant.
warrant.issuedBy, issuedDatestring, dateThe agency or court that issued it and the date it was issued, where published.
warrant.reward, caution, capturedstring, string, booleanFields a most-wanted listing often carries and a court index rarely does; null where absent.
identifiers.warrantNumber, ncicNumberstringThe system’s own number for the warrant, and an NCIC number where the system publishes one.
cases[].court, status, charges[]objectThe underlying case where the warrant system names one: the court, status: Active, and the charge with its statute, description and severity.
physicalobjectHeight, weight, hair, eyes, build and marks, as the agency published them. Warrant records carry more physical description than most court records.
vehicles[]arrayVehicles named on the listing, as free text.
normalized.recordCategory, custodyStatusstringwarrant and active_warrant: the same facts in the normalized layer that every record kind shares, so one filter works across kinds.
sources[].code, level, recordUrl, lastCheckedAtobjectWhich system holds it, its tier, the system’s own page for the entry and when it was last asked.
A field the warrant system did not publish is null, never a guess; the physical and vehicle fields are free text as the agency wrote them.The whole record object ›

What a warrant record is, and what it is not

A warrant says a jurisdiction is looking for someone. It does not say what happened, and the response is built so your code cannot mistake the two.

A warrant record is

  • An outstanding instruction, issued by a court or an agency, that a person be brought in. warrant.type says why: failure to appear, a probation violation, an arrest warrant on a new charge.
  • Published by the jurisdiction that holds it: a statewide warrant or wanted-persons system, a sheriff’s list, sometimes the court index itself. sources[].code and recordUrl say which.
  • Time-bound. warrant.issuedDate is when it was issued; lastCheckedAt is when the system was last asked; captured flips when a most-wanted listing says the person was found.
  • Often thin on identity. Many systems publish a name, an age and a description and no date of birth, which is why matchState and unverified matter more here than on a court record.

A warrant record is not

  • A conviction. normalized.hasConviction is false on the sample and the charge’s outcome is pending. Nothing has been decided.
  • Proof the person is in custody. currentlyIncarcerated is false; when the person is booked, that is a separate jail_booking record on the same person.
  • A statement that the warrant is still valid. A quashed or recalled warrant a system has not yet taken down is still a listing; the record reports the listing, and a live block asks the system again.
  • A civil matter. No civil judgments, no traffic citations: criminal warrants only, like the rest of the criminal records API.

The distinction is carried in two layers so one filter serves every record kind. recordType and the warrant block are the kind-specific layer; normalized.recordCategory: warrant, normalized.custodyStatus: active_warrant and normalized.outcomes: ["pending"] are the shared one. A product that shows a badge reads the normalized layer; a product that shows the warrant itself reads the block. The arrest records and court records search pages describe the booking and the disposition this record sits between.

Which states have a statewide warrant system in the search?

The 35 states whose warrant or wanted-persons system answers a search, with the jail, prison and court columns beside them. Where a state has no statewide system, warrants can still appear inside county jail and court records.

Each state links to its criminal records by state page; the consumer warrant search page lists the same systems for a person checking one name.

StateWarrantsCounty jail rosters (live / catalogued)Prison systemCourts
AlabamaStatewide24 / 26StatewideStatewide
ArkansasStatewide31 / 34StatewideStatewide
CaliforniaStatewide66 / 71StatewideStatewide
ColoradoStatewide51 / 70StatewideStatewide
ConnecticutStatewide0 / 1StatewideStatewide
DelawareStatewide6 / 6Statewide—
FloridaStatewide57 / 63StatewideStatewide
IdahoStatewide38 / 50Statewide—
IllinoisStatewide30 / 33StatewideStatewide
IowaStatewide22 / 22StatewideStatewide
KansasStatewide18 / 21StatewideStatewide
LouisianaStatewide28 / 29StatewideStatewide
MichiganStatewide46 / 48StatewideStatewide
MinnesotaStatewide30 / 31StatewideStatewide
MississippiStatewide34 / 36StatewideStatewide
NevadaStatewide17 / 24StatewideStatewide
New JerseyStatewide25 / 26StatewideStatewide
New MexicoStatewide34 / 46StatewideStatewide
New YorkStatewide65 / 67StatewideStatewide
North CarolinaStatewide39 / 40StatewideStatewide
North DakotaStatewide11 / 14StatewideStatewide
OhioStatewide82 / 86StatewideStatewide
OklahomaStatewide25 / 28StatewideStatewide
OregonStatewide42 / 44StatewideStatewide
PennsylvaniaStatewide69 / 71StatewideStatewide
Rhode IslandStatewide0 / 1StatewideStatewide
South CarolinaStatewide72 / 73StatewideStatewide
South DakotaStatewide21 / 22StatewideStatewide
TennesseeStatewide21 / 25StatewideStatewide
TexasStatewide84 / 104StatewideStatewide
UtahStatewide27 / 34StatewideStatewide
VirginiaStatewide60 / 62StatewideStatewide
WashingtonStatewide47 / 51StatewideStatewide
West VirginiaStatewide11 / 11StatewideStatewide

Jurisdictions in our catalogue as of 2026-11-08; a live jurisdiction answers a search today. Approximate, not an official figure. Exact, dated counts per jurisdiction: criminal coverage reference.

A warrant system is a different kind of source from a court index. It is maintained by the agency looking for people, it lists what is outstanding rather than what was resolved, and it is absent from most conviction-based searches, which is why a product that only reads court records misses it. GET /v1/criminal/jurisdictions?recordKind=warrant returns the live list with each system’s code, so a client can show its own coverage without copying this table.

How to search warrants by name and date of birth

There is no warrant-only endpoint. The criminal search returns the warrant beside everything else on the person; the client keeps the kinds it wants.

query.lastName is required. firstName, dob and state narrow it, and the date of birth is the field that turns a warrant hit from a lead into an identification: with it, a record that carries birth evidence can reach dob_match; without it, the strongest state a record can reach is name_match.

Filter the result on recordType in (warrant, wanted_fugitive) or on normalized.recordCategory == warrant, and read status and counts.sourcesIncomplete before trusting an empty list: a search in which a warrant system did not answer says partial, and “no warrant found” is only true of the systems that replied.

Scope to a state when you know one. state: "GA" keeps the search to Georgia’s systems, and a liveblock naming the warrant system’s code asks it during the request for $0.02. The criminal records by name and date of birth tutorial walks the query; the criminal record verification API page covers the live check.

curl -X POST https://api.offendersearch.app/v1/criminal/search \
  -H "X-API-Key: $OFFENDERSEARCH_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": { "firstName": "Active", "lastName": "Warrant", "dob": "1985-09-09", "state": "GA" }
  }'
# then keep the records whose recordType is "warrant" or "wanted_fugitive"
matchState on a warrantMeaningAct on it?
dob_matchName and full date of birth agreeAutomatically, with the citation kept
year_match / age_matchThe system published a year or an age, and it agreesRoute to a person
name_matchName only; the system published no birth evidenceA lead, not an identification
no_dob_age_yearNo birth evidence at all; unverified: trueRanked last; confirm live or by another identifier

Warrant search API or warrant search?

Same warrant systems, different reader.

Warrant search API (this page)Warrant search
Who it is forA developer adding warrant checks to a productA person checking one name
How it is usedAn HTTPS call from your server, JSON backA search form, results on screen
VolumeOne person, or a roster through batch, or a standing monitorOne name at a time
What you seeThe whole record: warrant, cases[], physical, sources[]A readable card with the agency and the charge
Where to startThe criminal quickstartWarrant search

A warrant record is not a consumer report

A product that shows a warrant to a security desk or a trust-and-safety reviewer is on the first path. A product that decides a job or a home on it is on the second.

Path 1

Data API, not FCRA

$0.15a call, 25 free, no card
  • For: visitor and volunteer screening, trust and safety, research, monitoring, and software that shows a public record to the person who asked for it.
  • Must not decide: whether someone is hired, housed, insured or given credit. The response is a public-records lookup, not a consumer report, and the key is not approved for those uses.
  • Example: An admissions desk screens a visitor against the registries before a visit; no hiring, housing or credit decision is involved.

Self-serve: get a key, then POST /v1/search or /v1/criminal/search.

Path 2

FCRA Partner Access

$4.95per order, searches and live checks included, no court fees
  • Built in: end-user registration with a permissible purpose, consent on every order, the pre-adverse and adverse-action notices with the consumer’s copy, and a consumer portal.
  • Disputes: a dispute endpoint; the record is re-checked with the registry or court that holds it, with an outcome inside 30 days, and a correction reaches every partner that received it.
  • Example: A screening company furnishes a report an employer or landlord will act on; the order runs the consent, notice and dispute steps.

Under a written agreement: Request FCRA Partner Access.

The records can be the same; the process around them is not. How the program works: FCRA Partner Access · the orders endpoint: FCRA orders API · reference and statute citations: FCRA docs. This page describes the product, not legal advice.

Warrant search API pricing

A warrant costs what any criminal search costs. There is no per-kind or per-state fee.

ItemPriceUnit
Criminal search, warrants included$0.15per call, the first 2,000 in a calendar month
Free to start25 callsonce per account, on production data, no card
Sandbox$060 calls a minute and 2,000 a day per test key

No minimum on search. The Map API has its own $300 monthly minimum. No seats, no platform fee, no per-state fee; a batch row is billed as one call.

Monthly calls:
$1,180
a month
$0.118
effective per call
8,000
calls at $0.11

The first 2,000 calls in a calendar month are $0.15 each, every one after that $0.11. The 25 free calls on a new account are not subtracted here. Live re-verification, monitors and FCRA orders are billed separately.

Worked examples by volume: background check API pricing · every rate: pricing.

Limits of a warrant search API

Rate limits, the response cap, a 429 body, and what is not returned.

LimitValue
Sandbox, per test key60 calls a minute, 2,000 a day; nothing billed
Production, per keyNo published ceiling. A 429 only when the service is at capacity, with Retry-After; a 429 is never billed
Records per responseUp to 4,000 in one answer; above that capped: true, and perPage pages through the rest
Batch1,000 rows a call; a failing row is reported in place and never stops the batch
DeadlinedeadlineMs bounds the wait for slow jurisdictions; an unanswered one is named in sourceStatus and the answer says partial
EndpointsPOST /v1/criminal/search; one X-API-Key header
  • No civil cases, no traffic citations. Criminal records only: jail bookings, prison custody, court cases with dispositions, warrants, and the registries.
  • No international records. US county, state and federal sources, and the 58 US registries.
  • Not a consumer report. A hiring, housing, credit or insurance decision runs as an order through FCRA Partner Access, not through the standard key.
  • No SSN, no credit, no verifications, no drug or driving records. Scope comes from the name, the date of birth and the places you already hold.
  • No warrant a system does not publish. Sealed warrants, and warrants in a state without a published system, are not in the response; coverage.sourcesPending counts catalogued systems not yet answering.
  • No statement on validity. A record is a listing; whether the warrant is still enforceable is for the issuing court, and a live block only asks whether the listing is still there.

Retry rules and backoff: rate limits, retries and idempotency · every status code: errors.

What a rate-limit answer looks like
HTTP/1.1 429 Too Many Requests
Retry-After: 12
Content-Type: application/json

{
  "detail": {
    "code": "overloaded",
    "retryAfterSeconds": 12
  }
}
Nothing was searched and nothing was billed; wait retryAfterSeconds and send the same request again.

Warrant search API questions

Endpoints, currency, identifiers, coverage, alerts, the sandbox and the FCRA line.

Is there a separate warrant endpoint?

No. A warrant is one recordType in the response of POST /v1/criminal/search, beside bookings, custody records and court cases. Filter on recordType or on normalized.recordCategory; the same search returns the other kinds, so a person who was wanted and then booked shows both records.

How current is a warrant record?

Each record says: sources[].lastCheckedAt is when that system was last asked about it, and lifecycle.presentInLastSweep says whether the system still listed it then. To ask the system during your request, name it in live.jurisdictions; a completed live check costs $0.02 and sets sources[].live to true.

Why does a warrant record often have no date of birth?

Warrant and wanted-persons systems publish fewer identifiers than court indexes. A record with no birth evidence comes back unverified: true with matchState: no_dob_age_year, ranks below records with birth evidence, and is never dropped for a date it could not disagree with. A live check can sometimes confirm your date with the system (dobVerification: source_confirmed).

Which states have a warrant system in the search?

35 states as of 2026-11-08, listed in the coverage table above; GET /v1/criminal/jurisdictions?recordKind=warrant returns the current list with codes. Where a state has no statewide system, warrants can still surface inside county jail and court records.

Can I be alerted when a warrant is issued for someone?

Yes. A criminal person monitor ($3.00 a month) files a new alert when a warrant record first matches the person and a removed alert when the system stops listing it. The continuous criminal monitoring API documents the signed webhook.

What does the sandbox return for a warrant?

The persona “Active Warrant”, born 1985-09-09, returns one open failure-to-appear warrant in Georgia with the issuing agency, a reward line and a vehicle, exactly the body on this page. The sandbox allows 60 calls a minute per test key and bills nothing.

Can a warrant record be used to deny someone a job or a home?

Not through the standard key, whose responses are not consumer reports. A screening decision runs as an order through FCRA Partner Access, and a warrant, like an arrest, is not a conviction: an employer or landlord acting on one is in the territory the FCRA and state rules govern, which the FCRA criminal background check API page describes.

Learn the API by example

Runnable guides that use this endpoint as the worked example.

Criminal records by name and date of birth ›Why the date of birth decides whether a hit is an identification or a lead.
Arrest records API example ›A jail booking as JSON, why a booking is not a conviction, and a monitor for a new one.
No-match and multiple-match results ›The three shapes of "nothing", possibles, and a decision table per matchState.
Background check API response explained ›Every field of a real sandbox response, group by group.
Monitor a person with webhooks ›A standing watch on a person, signed alerts, and the receiver that verifies them.
Test a background check integration ›The sandbox scenario matrix, a test suite, CI and the switch to production.

All guides: Learn APIs by example · reference: developer docs · packages: SDKs and CLI.

Related background check API pages

The rest of the developer surface, one anchor per page.

Background check API ›Criminal records and 58 US sex offender registries on one key, per call.
Criminal records API ›Court cases, jail bookings, prison custody and warrants as JSON.
Sex offender API ›One POST across 58 US registries, scored and cited.
Free background check API ›25 free calls on real data, no card, plus the free sandbox.
Employment screening API ›The public-records stage of a hiring pipeline, and the FCRA path for the decision.
Tenant screening API ›The registry and criminal layer behind a rental application.
Inmate search API ›State prison and county jail custody records.
Background check API pricing ›Costs from 100 to 100,000 searches a month.
Public API for testing ›A free sandbox with documented test people in the production shape.
SDKs: Python, Node, CLI ›Client status and the method surface, one per endpoint.
Postman collection ›Every endpoint with sandbox bodies pre-filled.
MCP server ›Registry and criminal lookups as tools for Claude, Cursor and agents.

Run the open-warrant scenario on the sandbox

Mint an os_test_ key, search “Active Warrant”, 1985-09-09, and read the warrant block. The background check API hub covers the registries on the same key.