Offendersearch vs offenders.io
Offendersearch is built directly on all 58 official registries — every source named and individually addressable, with a lastCheckedAt on every record. That is a different product from vendors who resell a licensed extract and let it age between deliveries. Deeper fields on every record, a far more sophisticated contract, and a drop-in switch for existing offenders.io integrations.
The offenders.io alternative built on live registries
Three differences do most of the deciding — each one testable before you sign, and each stated honestly (where offenders.io is stronger, the table below says so).
Freshness you can read per record
Every result carries its own lastCheckedAt, and you can add live re-verification at the source in the same call — instead of a single dataset-wide freshness claim you have to take on trust.
Sources you can name
58 official registries, each individually addressable, with per-source provenance on every response — so an incomplete search is never silently returned as an empty one.
Switching is one-way cheap
A drop-in compatibility endpoint accepts offenders.io’s exact request and response shape, so an existing integration moves by changing the base URL and key — no rewrite.
Offendersearch vs offenders.io, honestly
Every row traces to a measurement we hold and will send you. Where offenders.io is stronger, the row says so.
| Feature | Offendersearch | offenders.io |
|---|---|---|
| Source coverage | ✓ The 50 states, DC & US territories — 58 official registries, each one named and individually addressable in a single schema | A nationwide aggregate; the underlying sources are not enumerated, so a buyer cannot tell which registries answered |
| Field coverage | ✓ A 76-field record schema, and the fields are populated — on our largest registries every measured dimension (DOB, sex, race, height, weight, eyes, hair, scars/marks, aliases, offences, images) is filled on the large majority of records | Their published claim is "70+ fields"; the distinct keys their API actually returns measure materially fewer, and their deepest fields come back empty on the large majority of records |
| Housing status | ✓ Normalized homeless / incarcerated / housed on every record, derived from whichever field each registry uses to state it | Not offered as a field |
| Per-source provenance | ✓ Every response names which sources answered, so an incomplete search is never silently returned as an empty one | Aggregate response, no per-source status |
| Data freshness | ✓ Continuously updated, with per-record lastCheckedAt on every result, and optional live re-verification at the source in the same request | Their API’s own updatedAt field routinely shows record ages of six months to over a year and a half — and it stamps a record mutation, not a re-verification |
| Match confidence score | ✓ matchConfidence + matchBasis on every record | No score in their record shape |
| Offence detail | ✓ Statute-level detail with risk level and every conviction, not just the first, normalized into one schema | Varies by jurisdiction, no normalized offence field |
| Verification reports | ✓ Branded PDF/HTML report with a source citation on every record | Not offered |
| Webhooks on async completion | ✓ Yes — the finished result is POSTed to your callback | None |
| Price (base) | ✓ $0.15 / call, dropping to $0.11 after 2,000 a month — no setup fee, no per-seat licence, no minimum, no contract | $0.15–$0.20 / call (their published pricing) |
| Live verification | ✓ Regular is the base rate; Live re-verifies named jurisdictions at +$0.02 / source ($2.00 ceiling) | No live re-verification |
| Switching cost | ✓ A drop-in compatibility endpoint accepts their request shape and returns their response envelope, so an existing integration moves without a rewrite | Moving away means rewriting against a different schema |
| Radius search | ✓ Radius search up to 100 miles, on records carrying latitude and longitude wherever the jurisdiction publishes an address | Radius search offered |
Every row above traces to a measurement we hold and will show you. We publish them as ranges rather than frozen decimals on purpose — the underlying counts move constantly, and an exact figure printed on a web page is wrong within a week. Ask us for the current run and the exact per-jurisdiction numbers; we will send them, and they are in our field reference for integrators. Where a competitor is stronger on a row, the row says so. offenders.io is a competitor and is never used as a data source.
On the freshness row specifically
How freshness is stated. Ours is the median of lastCheckedAt — the per-record currency timestamp every response carries, so you can read it off the answer rather than take our word for it. Competitor figures are scored on the only freshness field their API exposes to a paying customer. We state these results in ranges rather than exact figures because the underlying numbers move constantly, and a figure fixed into a web page stops being true quickly. Ask us for the current run — we will send you the exact per-jurisdiction numbers.
- Their timestamp records a change, not a re-check. offenders.io’s updatedAt records when a row last changed, which is not the same as when it was last re-checked against the source. It is nonetheless the only freshness field their API exposes to a paying customer, so it is the only thing a buyer can actually measure them on — and a row whose updatedAt is years old is a row they cannot show has been re-checked since.
- Freshness is a measured property. Freshness and coverage are two different measurements and a buyer should judge them separately. Offendersearch returns per-source status and a last-verified timestamp on every response, so freshness is something you read off the answer rather than something a vendor asserts about itself.
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.
More in our comparisons and research.
Common questions
Is Offendersearch a drop-in replacement for offenders.io?
Yes. Our /v1/compat/sexoffender endpoint accepts offenders.io's exact parameters and returns their exact { offenders, page, totalPages } envelope, so you switch by changing only the base URL and API key.
How does Offendersearch pricing work?
Simple usage-based pricing: $0.15 per call, dropping to $0.11 after 2,000 calls a month. A Regular search is billed at the base rate; live re-verification adds $0.02 per completed source (capped at $2.00 a search), and each verification PDF adds $0.02. Volume/enterprise terms available — contact sales.
What does Offendersearch have that offenders.io doesn't?
A match confidence score and match basis on every result, per-source provenance so you always know which registries answered, normalized housing status, statute-level offence detail with every conviction rather than only the first, verification reports, and webhooks on async completion. Underneath all of it, the substantive difference is the data itself: the richest national dataset available, continuously updated, with a lastCheckedAt on every record — against an offering whose own updatedAt field routinely shows record ages of six months to over a year and a half, stamps a record mutation rather than a re-verification, and is the only freshness signal their API gives a customer.
How should a buyer evaluate an offender-data vendor?
On five properties, each testable before you sign. Whether every record carries its own per-source freshness stamp, or freshness is asserted as a general claim. Whether the sources are enumerable, or hidden inside a nationwide aggregate. Whether the response tells you which sources answered, so an incomplete search is never returned as a silently empty one. Whether the deep fields a vendor advertises are actually populated, which you should check by counting non-empty values on real records rather than counting keys in their documentation. And whether freshness is reported per source rather than asserted as a general claim. Run the same query against any two vendors and compare the responses directly.