Offendersearch
API Reference · FCRA

FCRA API

FCRA-regulated orders for approved consumer reporting agencies and screening platforms: one order covers a sex offender search, a criminal search or both, with controls before anything is furnished, a disputes endpoint, a consumer portal and signed webhooks.

Base URL https://api.offendersearch.app

Introduction

The FCRA API is for approved consumer reporting agencies and screening platforms under a written FCRA agreement. It is an orders API: one order carries a sex offender search, a criminal search, or both, for one consumer, under one end user, one permissible purpose and one consent attestation. Orders run in the background and report back by signed webhook.

  • One order, both products. searches: [{"type":"sex_offender"},{"type":"criminal"}] — each search has its own status, result and records.
  • The FCRA facts travel with the order. The end user, the permissible purpose and your consent attestation are recorded on every order, with the subject’s full date of birth.
  • Live where it matters. Each search runs live in every state the subject lived in and where the job or housing is, and in our data everywhere else. A source-by-source coverage table shows exactly what is behind every result, including a clear.
  • Controls before anything is furnished. Exact date-of-birth matching, state restrictions, the seven-year rules for criminal records, dispute suppressions and re-verification with the official source. Anything that fails is withheld and counted by reason.
  • Disputes are an endpoint. Open a reinvestigation on a furnished record, follow it on the 30-day clock, and receive the outcome by webhook.
  • A consumer portal on every order. The access code on each order lets the consumer see exactly what was furnished about them and dispute any item.
  • Evidence anyone can check. Every live search keeps what the official source returned, with its hash; the stored PDF carries a QR code to a public page where anyone can confirm the file against its signed receipt without uploading it.
The standard Sex Offender and Criminal Search APIs are not a consumer report and may not be used for FCRA-covered decisions. FCRA-regulated use runs only through this API, under FCRA Partner Access. FCRA pricing is quoted per partner — contact us for pricing.

What FCRA workflows are for

FCRA workflows are meant primarily for tenant screening and hiring decisions — any time a result will help decide whether to rent to someone or whether to hire them (including contractors, volunteers in paid programs and promotions or retention). Those decisions are regulated by the Fair Credit Reporting Act, so the search has to run as a consumer report: with a permissible purpose, a consent attestation, accuracy controls, and a dispute path for the consumer.

  • Use the FCRA API for: tenant and rental-applicant screening, pre-employment and employment screening, and any other eligibility decision your agreement covers (permissiblePurpose: employment, tenant_screening, consumer_written_instructions, legitimate_business_need).
  • Use the standard Sex Offender and Criminal Search APIs for everything that is not an eligibility decision about a consumer — community safety, platform trust and safety signals reviewed by your own team, research, and monitoring.
  • Not sure? If a person could be turned down for housing or a job because of the result, it is an FCRA workflow.

The lifecycle of an order

  1. Register the end user once — the employer or landlord the report is for, with its permissible purposes and your certification.
  2. Create the order with the subject, the purpose, your consent attestation, where the job or housing is, and the searches to run. You get 202 and an order id at once.
  3. Each search runs — live in the relevant jurisdictions and in our data elsewhere, matched, filtered through the controls, re-verified — and moves from queued to complete (or unavailable when a source cannot answer). The order is partial while some searches are done and others are not.
  4. You are told by search.completed and order.completed webhooks, or you poll the order.
  5. You read the results — the furnished records with their match evidence, and the counts of what was withheld and why — and adjudicate under your own process.
  6. If the consumer disputes, through you or the consumer portal, a reinvestigation runs on the 30-day clock and the outcome reaches every partner that received the record.

Your first order

POST /v1/fcra/orders
curl -X POST https://api.offendersearch.app/v1/fcra/orders \
  -H "X-API-Key: $OFFENDERSEARCH_KEY" \
  -H "Idempotency-Key: 8f1c2a7e-order-889" \
  -H "Content-Type: application/json" \
  -d '{
    "endUserId": "eu_3b9d71c2",
    "permissiblePurpose": "employment",
    "consent": { "obtainedAt": "2026-10-02T13:55:00Z", "method": "esign", "documentRef": "auth-55120" },
    "subject": {
      "firstName": "Jordan", "lastName": "Example", "dob": "1984-02-11",
      "aliases": [{ "firstName": "Jordan", "lastName": "Sample" }],
      "addresses": [{ "state": "IL", "city": "Springfield", "from": "2019-01", "to": null }]
    },
    "useLocation": { "state": "IL" },
    "liveScope": "relevant",
    "searches": [{ "type": "sex_offender" }, { "type": "criminal" }],
    "clientReference": "cra-order-889",
    "callbackUrl": "https://your-cra.example/hooks/offendersearch"
  }'

Endpoint index

MethodPathWhat it does
POST/v1/fcra/end-usersRegister an employer, landlord or other end user, with its permissible purposes and your certification.
GET/v1/fcra/end-users/{id}Retrieve an end user. PATCH updates its purposes or suspends it.
POST/v1/fcra/ordersCreate an order with a sex offender search, a criminal search, or both. Returns 202.
GET/v1/fcra/orders/{id}The order, its status, and the status and result of each search.
POST/v1/fcra/orders/{id}/cancelCancel an order that has not completed.
GET/v1/fcra/orders/{id}/searches/{searchId}One search with the records furnished.
POST/v1/fcra/searches/{searchId}/reverifyRun a search again; the old one is marked superseded.
GET/v1/fcra/orders/{id}/reportThe furnished report, as JSON or the stored PDF.
GET/v1/fcra/orders/{id}/evidenceEvery official-source capture taken for the order, with its hash.
GET/v1/fcra/orders/{id}/evidence/{captureId}One capture: exactly what the official source returned, as stored.
GET/v1/fcra/receipts/{orderId}A public signed receipt for a completed order. No key, no personal data.
POST/v1/fcra/orders/{id}/disputesOpen a dispute on furnished records.
GET/v1/fcra/disputes/{id}A dispute, its due date and its outcome. GET /v1/fcra/disputes lists them.
POST/v1/fcra/disputes/{id}/informationAdd the consumer’s new information — the one 15-day extension.
PUT/v1/fcra/webhook-endpointSet your webhook URL and get its signing secret. GET and DELETE too.
GET/v1/fcra/eventsEvery event for your account, to poll when a webhook is missed.
POST/v1/fcra/events/{id}/resendDeliver one event to your webhook again.

Documentation

Each section below is its own page, with worked examples and a markdown alternate at /docs/fcra/{section}.md.

Get access

FCRA Partner Access is enabled after a written FCRA agreement that sets your permissible purposes. FCRA pricing is quoted per partner — contact us for pricing. Request FCRA Partner Access, or read the program overview.