Checkr API vs a lookup API: two integration shapes One orders a report on a candidate. The other answers a question.
The difference is visible in the first ten minutes of an integration, before price comes into it.
| Step | OffenderSearch API (lookup) — our pick | Checkr API (screening report) |
|---|---|---|
| 1. Credentials | X-API-Key header; the key is issued at sign-up, no card | HTTP Basic authentication with a secret key; its docs say an account must be credentialed by a Checkr account executive or customer success before using the API, with live requests enabled by Checkr |
| 2. Subject | Send name and date of birth in the search body | Create a Candidate |
| 3. Consent | Standard lookup: none. FCRA order: end user, permissible purpose and consent attestation on the order | Send an Invitation; the candidate completes disclosure and consent (candidate invitations expire after 7 days) |
| 4. Order | POST /v1/search (registries) or POST /v1/criminal/search | Create a Report against a Package |
| 5. Wait | Nothing to wait for: records return in the same response | Report status changes arrive by webhook as components complete |
| 6. Result | Scored records, the registry or source on each, and each registry’s status | A finished consumer report, then adjudication and any adverse action |
Our pick for lookups: OffenderSearch — three of Checkr’s six steps are not needed at all. Checkr’s flow as described in its public API documentation (October 2026). Checkr’s resources include Candidates, Invitations, Reports, Packages, Webhooks and Continuous Checks.
Checkr API objects mapped to OffenderSearch endpoints Where there is an equivalent, and where there deliberately is not.
| OffenderSearch endpoint | Checkr API equivalent | Notes |
|---|---|---|
| — (inline in the query) | Candidates | No stored candidate object; each search carries its own name and DOB |
| — (none) | Invitations | FCRA orders carry consent attestation (FCRA Orders API); the standard lookup needs none |
POST /v1/search, POST /v1/criminal/search | Reports (create / retrieve) | Synchronous; one round trip, elapsedMs on every response |
POST /v1/searches → GET /v1/searches/{searchId} | Reports, asynchronous | For bulk and high-volume work; poll, or pass a webhookUrl |
| — (one price per search) | Packages | $0.15 a call, $0.11 past 2,000 a month, registry and criminal alike |
POST /v1/batch, POST /v1/criminal/batch | Many candidates | Up to 1,000 rows per request, each billed as one search |
| webhookUrl on an async search; signed monitor alerts | Webhooks | See the webhook section below |
POST /v1/monitors | Continuous Checks | $3 a month per person (registry or criminal), $10 per address and radius |
POST /v1/report, POST /v1/criminal/report | Report PDF | A verification PDF within 7 days of a search, $0.02 |
| — (none on the standard API) | Adverse actions | Adverse action belongs to a CRA workflow; partners use the FCRA API |
Full request and response schemas are in the API reference; asynchronous collection is in async and webhooks.
Checkr API alternative code example: one request, one answer
A single search is the panel at the top of this page: a name and date of birth in, scored records and the status of all 58 registries out. A roster is the same idea in one request — up to 1,000 people, each billed as one search.
Swap /v1/batch for /v1/criminal/batch to run criminal records instead; the response format and billing are the same. Step-by-step guides: Python, Node.js, batch docs.
curl https://api.offendersearch.app/v1/batch \
-H "X-API-Key: $OFFENDERSEARCH_KEY" \
-H "Content-Type: application/json" \
-d '[{"firstName":"Jordan","lastName":"Sample","dob":"1980-04-12"},
{"firstName":"Avery","lastName":"Example","dob":"1975-09-30"}]'Checkr API sandbox and keys vs a free production key
Checkr publishes a staging environment with mocked data, available once Checkr grants access, and its docs say an account must be credentialed by a Checkr account executive or customer success before using the API, with live requests enabled by Checkr. That is a sensible gate for a consumer reporting agency: the account is being approved to order consumer reports on people.
An OffenderSearch key is issued the moment you sign up, with 25 free searches on production data and no card. There is no separate sandbox because the free tier is the real API — same schema, scoring and provenance as a paid key. Trial searches include a name and return up to 50 records each.
Checkr API webhooks vs OffenderSearch webhooks and alerts
Checkr sends report status changes to your endpoint, with webhooks signed with HMAC-SHA256 in an X-Checkr-Signature header. Your integration is built around those events because a report completes later.
OffenderSearch has two kinds. An async search can carry a webhookUrl; the POST is a notification, unsigned and sent once, so your handler fetches GET /v1/searches/{searchId} with your key and trusts that response — polling always works even if the webhook never arrives. Monitoring alerts are signed: each carries X-Offendersearch-Signature, an HMAC-SHA256 you verify before acting.
Most integrations need neither: a synchronous search returns the answer in the request.
Checkr API alternative error handling and retries
Every POST /v1/searches request is a new job, billed as one search at acceptance, and the search API does not read an idempotency header. Make retries safe on your side: store the searchId from the 202 as soon as you receive it and recover by polling that id rather than resubmitting.
Each response lists the registries searched and whether each completed, so an incomplete answer is never mistaken for a clean one. Errors are typed — for example a criminal query without a last name is declined with 422 guard_unbounded_query rather than answered loosely. See errors and result completeness.
Checkr API pricing vs per-call API pricing
Ordering through the Checkr API is priced like ordering in its dashboard: per report, by package — Basic $29.99, Essential $59.99, Complete $94.99 on its pricing page (October 2026) — with standard third-party court and database access fees may apply, passed through at cost, and add-ons such as a county criminal search at $25.
An OffenderSearch call is $0.15, then $0.11 past 2,000 in a calendar month, with no platform fee, seats or minimum on search. A batch of 1,000 is 1,000 calls. Live re-verification adds $0.02 per completed registry, capped at $2.00. The worked volumes are on background check API pricing; the model is explained on pay-as-you-go background check API.
A Checkr API alternative for AI agents and automation
Any tool-calling agent can call the REST API directly: one POST, a JSON answer, every match carrying matchConfidence, matchBasis and matchState so the agent can explain why a record matched. An MCP server for registry search is built and in private beta, by request.
For workflow tools, the async endpoint plus a webhook fits queue-based automation, and monitors turn a one-off check into a standing watch.
When the Checkr API is still the right API
- Your product hires or onboards workers, and the result decides whether they are engaged — that needs an FCRA consumer report
- You need candidate consent, disclosures, adjudication and adverse action inside the integration
- You need MVRs, drug tests, employment or education verification through the same API
- You screen people outside the US
- You are a screening company that needs registry and criminal data under FCRA — then see the FCRA API rather than either standard API
Checkr API alternative FAQ
What is the best Checkr API alternative?
Can I get a Checkr API key without talking to sales?
Does OffenderSearch have a sandbox like Checkr staging?
How do I search many people at once?
Are OffenderSearch webhooks signed?
Can the OffenderSearch API be used for hiring decisions like the Checkr API?
Which languages are supported?
Try the Checkr API alternative free — 25 searches, no card
Your API key works the moment you sign up. Registry and criminal search on one key, $0.15 a call.