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.
Updated November 8, 2026 · API changelog
| Field | Value in the sample |
|---|---|
recordType | warrant |
currentStatus | active_warrant |
warrant.type | Failure to appear |
warrant.issuedBy | Sample County Sheriff’s Office |
cases[0].charges[0].severity | misdemeanor |
matchState | dob_match |
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" } }'
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.
{
"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": [
{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 ›| Field | Type | What it tells you |
|---|---|---|
| recordType | string | warrant for a warrant system’s entry; wanted_fugitive for a most-wanted listing. Treat the field as an open string. |
| currentStatus | string | active_warrant while the warrant is outstanding. A booking on the same person later shows as a separate record with its own status. |
| warrant.type | string | The kind of warrant as the system states it: failure to appear, probation violation, bench warrant, arrest warrant. |
| warrant.issuedBy, issuedDate | string, date | The agency or court that issued it and the date it was issued, where published. |
| warrant.reward, caution, captured | string, string, boolean | Fields a most-wanted listing often carries and a court index rarely does; null where absent. |
| identifiers.warrantNumber, ncicNumber | string | The system’s own number for the warrant, and an NCIC number where the system publishes one. |
| cases[].court, status, charges[] | object | The underlying case where the warrant system names one: the court, status: Active, and the charge with its statute, description and severity. |
| physical | object | Height, weight, hair, eyes, build and marks, as the agency published them. Warrant records carry more physical description than most court records. |
| vehicles[] | array | Vehicles named on the listing, as free text. |
| normalized.recordCategory, custodyStatus | string | warrant 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, lastCheckedAt | object | Which system holds it, its tier, the system’s own page for the entry and when it was last asked. |
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.typesays 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[].codeandrecordUrlsay which. - Time-bound.
warrant.issuedDateis when it was issued;lastCheckedAtis when the system was last asked;capturedflips 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
matchStateandunverifiedmatter more here than on a court record.
A warrant record is not
- A conviction.
normalized.hasConvictionisfalseon the sample and the charge’soutcomeispending. Nothing has been decided. - Proof the person is in custody.
currentlyIncarceratedisfalse; when the person is booked, that is a separatejail_bookingrecord 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
liveblock 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.
| State | Warrants | County jail rosters (live / catalogued) | Prison system | Courts |
|---|---|---|---|---|
| Alabama | Statewide | 24 / 26 | Statewide | Statewide |
| Arkansas | Statewide | 31 / 34 | Statewide | Statewide |
| California | Statewide | 66 / 71 | Statewide | Statewide |
| Colorado | Statewide | 51 / 70 | Statewide | Statewide |
| Connecticut | Statewide | 0 / 1 | Statewide | Statewide |
| Delaware | Statewide | 6 / 6 | Statewide | — |
| Florida | Statewide | 57 / 63 | Statewide | Statewide |
| Idaho | Statewide | 38 / 50 | Statewide | — |
| Illinois | Statewide | 30 / 33 | Statewide | Statewide |
| Iowa | Statewide | 22 / 22 | Statewide | Statewide |
| Kansas | Statewide | 18 / 21 | Statewide | Statewide |
| Louisiana | Statewide | 28 / 29 | Statewide | Statewide |
| Michigan | Statewide | 46 / 48 | Statewide | Statewide |
| Minnesota | Statewide | 30 / 31 | Statewide | Statewide |
| Mississippi | Statewide | 34 / 36 | Statewide | Statewide |
| Nevada | Statewide | 17 / 24 | Statewide | Statewide |
| New Jersey | Statewide | 25 / 26 | Statewide | Statewide |
| New Mexico | Statewide | 34 / 46 | Statewide | Statewide |
| New York | Statewide | 65 / 67 | Statewide | Statewide |
| North Carolina | Statewide | 39 / 40 | Statewide | Statewide |
| North Dakota | Statewide | 11 / 14 | Statewide | Statewide |
| Ohio | Statewide | 82 / 86 | Statewide | Statewide |
| Oklahoma | Statewide | 25 / 28 | Statewide | Statewide |
| Oregon | Statewide | 42 / 44 | Statewide | Statewide |
| Pennsylvania | Statewide | 69 / 71 | Statewide | Statewide |
| Rhode Island | Statewide | 0 / 1 | Statewide | Statewide |
| South Carolina | Statewide | 72 / 73 | Statewide | Statewide |
| South Dakota | Statewide | 21 / 22 | Statewide | Statewide |
| Tennessee | Statewide | 21 / 25 | Statewide | Statewide |
| Texas | Statewide | 84 / 104 | Statewide | Statewide |
| Utah | Statewide | 27 / 34 | Statewide | Statewide |
| Virginia | Statewide | 60 / 62 | Statewide | Statewide |
| Washington | Statewide | 47 / 51 | Statewide | Statewide |
| West Virginia | Statewide | 11 / 11 | Statewide | Statewide |
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 warrant | Meaning | Act on it? |
|---|---|---|
dob_match | Name and full date of birth agree | Automatically, with the citation kept |
year_match / age_match | The system published a year or an age, and it agrees | Route to a person |
name_match | Name only; the system published no birth evidence | A lead, not an identification |
no_dob_age_year | No birth evidence at all; unverified: true | Ranked 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 for | A developer adding warrant checks to a product | A person checking one name |
| How it is used | An HTTPS call from your server, JSON back | A search form, results on screen |
| Volume | One person, or a roster through batch, or a standing monitor | One name at a time |
| What you see | The whole record: warrant, cases[], physical, sources[] | A readable card with the agency and the charge |
| Where to start | The criminal quickstart | Warrant 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.
Data API, not FCRA
- 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.
FCRA Partner Access
- 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.
| Item | Price | Unit |
|---|---|---|
| Criminal search, warrants included | $0.15 | per call, the first 2,000 in a calendar month |
| Free to start | 25 calls | once per account, on production data, no card |
| Sandbox | $0 | 60 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.
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.
| Limit | Value |
|---|---|
| Sandbox, per test key | 60 calls a minute, 2,000 a day; nothing billed |
| Production, per key | No published ceiling. A 429 only when the service is at capacity, with Retry-After; a 429 is never billed |
| Records per response | Up to 4,000 in one answer; above that capped: true, and perPage pages through the rest |
| Batch | 1,000 rows a call; a failing row is reported in place and never stops the batch |
| Deadline | deadlineMs bounds the wait for slow jurisdictions; an unanswered one is named in sourceStatus and the answer says partial |
| Endpoints | POST /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.sourcesPendingcounts 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
liveblock only asks whether the listing is still there.
Retry rules and backoff: rate limits, retries and idempotency · every status code: errors.
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.
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.
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.
The OffenderSearch APIs
One account, one key, one bill.