How to Integrate the National Sex Offender Search API: Complete Developer Guide

A PDF version of this guide can be found here:
https://offenders.io/guides/integration.pdf

Offenders.io Sex Offender Registry API Integration Guide

Welcome to the documentation for the Best Sex Offender API on the market. Offenders.io provides the industry’s most comprehensive Sex Offender Search API, granting developers direct access to over 900,000+ offender records across all 50 states, territories, and tribal lands.

🚀 Why Developers Choose Offenders.io

Unlike competitors with weekly updates, our Sex Offender Registry API features daily updates and an exclusive 99.9% Uptime SLA, making it the reliable choice for background checks, security platforms, and public safety applications.

Regular Search

Use Case: Targeted lookups by Name/DOB.

Perform precise lookups using known information of a person. Ideal for verifying if a specific individual is registered.

GIS Search EXCLUSIVE

Use Case: Geolocation & Mapping.

The only API with native radius filtering. Instantly retrieve all offenders living within a 1-100 mile radius of any coordinate.

Need to process bulk data? Check out our Batch Processing tool for handling CSV uploads.

1. Search Modes (Technical Implementation)

Regular Search

The Search Mode will search based on the provided query params. You can use any combination of firstName, lastName, city, state, zipcode, dob. The API will process your query as long as there is at least one query param presented in the request.

https://api.offenders.io/sexoffender?key={YOUR_API_KEY}&firstName=Alice&zipcode=12345

Regular Search – Extensive Mode (+$0.05/call)

Supports an additional &mode=extensive param. This pulls additional datasets to perform an extensive search & match, including searching through all known aliases on file with the state.

  • Use Case: State-compliance visitor screening (e.g. healthcare facilities).
  • Performance: Significant response time increase (~ 2s+).
  • Warning: Has a rate limit and should not be used for batch processing.

GIS (Geolocation) Search

Used to do geolocation-based searches. Takes in lat, lng, and radius. You can further filter down results with query params like name or city.

https://api.offenders.io/sexoffender?lat=30.967&lng=-91.116&radius=2&key={YOUR_KEY}&firstName=Michael&page=3

2. Request Query Params

Supported parameters for filtering your request.

Field Name Description Example Value
firstName (string) First name of the offender “Alice”
lastName (string) Last name of the offender “Ceci”
dob (string) A valid date “1900-01-01”
city (string) Residence city of the offender “San Francisco”
state (string) Residence state. Use full state name only. “California”
zipcode (string) Residence zipcode of the offender “94104”
lat (number) Latitude of registered address 41.85321135
lng (number) Longitude of registered address -87.72353654
radius (number) GIS Search Radius. Default: 1 mi. Max: 5 mi. 1
prefixMatch (string) Do prefix match on firstName or lastName. “firstName”
createdAtStart (string) Filter by date added (Start). Use for new offender alerts. “2024-11-15”
createdAtEnd (string) Filter by date added (End). “2024-11-31”
faceId (string) Face ID obtained from Facial Search API. “4d8ade05…”
uuid (string) Quick pull single record by UUID. “807ff46d…”
personUuid (string) Quick pull single record by Person UUID. “83425e56…”
page (number) The page number you are requesting. 12

3. Request Response Fields

Data returned in the JSON response object.

Field Name Description Example Value Empty Value
name (string) Full name including middle name “Alice Bob Ceci” “”
firstName (string) First name “Alice” “”
lastName (string) Last name “Ceci” “”
aliases (array) List of official aliases (Extensive Mode Only) [{“surName”:”SMITH”…}] []
dob (ISO Date) DOB in UTC time. Please note all DOB is stored as UTC time, please make sure you process them accordingly. Some agencies only report DOB year only, and in such cases we default the DOB to YYYY-01-01, please make sure your workflow handles this correctly if you use strict DOB matching. “1957-07-14…” null
address (string) Residence address “000 Farris Street” “”
city (string) Residence city “San Francisco” “”
state (string) Residence state (Full name) “California” “”
zipcode (string) Residence zipcode “94104” “”
locations (array) List of official addresses (Extensive Mode Only) [{“zipCode”:”12345″…}] []
sex (string) Registered sex “Male” “”
age (string) Age of offender “40” “”
eyeColor (string) Eye color “Blue” “”
hairColor (string) Hair color “Brown” “”
height (string) Height “6’00\”” “”
weight (string) Weight “260 lbs.” “”
race (string) Race “White” “”
Ethnicity (string) Ethnicity “Hispanic” “”
marks (string) Marks/Tattoos/Scars “tattoo on chest…” “”
riskLevel (string) Risk level “High risk” “”
crime (string) Specific crimes committed for registration. “Crime: 0735000…” “”
registrationDate (ISO Date) Date first registered (UTC). “1957-07-14…” null
content (string) Formatted HTML combining info for easy rendering. “<br><b>Zip…” “”
offenderUrl (string) URL to source State agency https://meganslaw… null
offenderImageUrl (string) URL of profile image https://meganslaw… null
lat (number) Latitude of address 41.85321135 -1
lng (number) Longitude of address -87.72353654 -1
updatedAt (ISO Date) Last update timestamp. “2023-08-19…” null
isAbsconder (boolean) Known absconder status. true/false null
jurisdiction (string) Jurisdiction code (e.g., WV) “WV” null
page (number) Current result page (GIS only) 7 1
totalPages (number) Total result pages (GIS only) 25 1
stateData* (object) Structured data directly from state agency. *Experimental {shoeSize: 7…} null

*Experimental fields: not guaranteed to be always available, client fallback logic is strongly recommended. Experimental fields might be removed at any time without notice.

4. Default Result Limits

To ensure our API endpoint can provide blazing-fast responses, the following limitations are applied by default.

  • Regular Search: Limited to 50 records by default. Filter by city or zip code for better results.
  • GIS Search: Radius defaults to 1 mi (Max 100 mi). Returned payload limited to 50 records per page. Use page and totalPages to navigate.

5. Error Handling

Common HTTP status codes and JSON error responses.

{ “code”: 401, “message”: “Missing API key” }
Code Meaning
400 Bad Request: Any requests that we are unable to handle.
401 Unauthorized: Missing API key or invalid API key.
405 Method Not Allowed: Request sent using a method we don’t support.

Example: Invalid Params

{ “error”: “Invalid input params”, “reason”: “no query params presented” }

Connect our API in minutes, not days — or skip the code and upload a file for instant results.

X