Service Status: All Systems Operational — Safeguarded by our multi-cloud infrastructure.
📄 Download PDF Version
The PDF guide includes additional details, diagrams, and examples not covered on this page.

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

All Systems Operational
Uptime: Avg Response:
On This Page

Base URL

https://api.offenders.io/sexoffender

Authentication

Pass your API key as a query parameter key on every request.

GET /sexoffender?key={YOUR_API_KEY}&firstName=Alice

Get a free API key at offenders.io/pricing. First 50 requests/month are free.

💡 Using an AI assistant? You can also access full records via our MCP server with the same API key — no code needed.

Search Modes

Regular Search

Targeted lookups by name, DOB, address, zip code, or any combination. At least one query param is required.

GET /sexoffender?key={KEY}&firstName=Alice&zipcode=12345

Extensive Mode +$0.05/call

Add &mode=extensive to search through all known aliases on file. Ideal for state-compliance visitor screening (e.g. healthcare facilities).

GET /sexoffender?key={KEY}&firstName=Alice&lastName=Smith&mode=extensive

⚠ Slower response (~2s+). Has rate limit — not for batch processing.

GIS / Geospatial Search EXCLUSIVE

Find offenders within a radius of any GPS coordinate. The only API with native geospatial search. Can combine with name/city filters.

GET /sexoffender?key={KEY}&lat=30.967&lng=-91.116&radius=2&page=1

Query Parameters

ParameterTypeDescriptionExample
keystringYour API key (required)YOUR_API_KEY
firstNamestringFirst name of offenderAlice
lastNamestringLast name of offenderSmith
dobstringDate of birth1990-01-15
citystringResidence citySan Francisco
statestringResidence state (full name)California
zipcodestringResidence zip code94104
latnumberLatitude (GIS search)30.967
lngnumberLongitude (GIS search)-91.116
radiusnumberRadius in miles (default 1, max 100)5
modestringSet to extensive for alias searchextensive
prefixMatchstringPrefix match on firstName or lastNamefirstName
createdAtStartstringFilter by when the registrant first appeared in our system. Use this to create alerts for new offenders (e.g., new registrants in a zip code this month).2026-01-01
createdAtEndstringFilter by first appearance in system2026-01-31
updatedAtStartstringFilter by last update in system2026-01-01
updatedAtEndstringFilter by last update in system2026-01-31
faceIdstringFace ID from Facial Search API4d8ade05...
uuidstringPull single record by UUID807ff46d...
personUuidstringPull single record by Person UUID83425e56...
pagenumberPage number (GIS search pagination)3

Response Fields

Each offender object in the offenders array contains:

FieldTypeDescriptionEmpty
namestringFull name including middle name""
firstNamestringFirst name""
lastNamestringLast name""
aliasesarrayKnown aliases (Extensive Mode only)[]
dobISO dateDate of birth in UTC. Some states report year only (defaults to YYYY-01-01)null
addressstringResidence street address""
citystringResidence city""
statestringResidence state (full name)""
zipcodestringResidence zip code""
locationsarrayAll official addresses (Extensive Mode only)[]
sexstringRegistered sex""
agestringAge""
eyeColorstringEye color""
hairColorstringHair color""
heightstringHeight""
weightstringWeight""
racestringRace""
EthnicitystringEthnicity""
marksstringMarks, tattoos, scars""
riskLevelstringRisk level""
crimestringCrimes committed for registration""
registrationDateISO dateDate first registerednull
offenderUrlstringURL to source state agency pagenull
offenderImageUrlstringProfile image URLnull
latnumberLatitude of address-1
lngnumberLongitude of address-1
jurisdictionstringJurisdiction code (e.g. CA, WV)null
isAbsconderbooleanKnown absconder statusnull
updatedAtISO dateLast update timestampnull
uuidstringUnique record identifier""
contentstringPre-formatted HTML summary""
sourcesarrayData source references[]
pagenumberCurrent page (GIS only)1
totalPagesnumberTotal pages (GIS only)1
stateData*objectRaw state agency data (experimental)null

* Experimental fields are not guaranteed and may be removed without notice.

Full Example Response

//Response
{
  "offenders": [
    {
      "name": "First M Last",
      "firstName": "First",
      "firstName_nicknames": ["firsty", "firs", "1st"],
      "lastName": "Last",
      "aliases": [
        {
          "prefix": null,
          "givenName": "FIR",
          "middleName": null,
          "surName": "ST",
          "suffix": null
        },
        {
          "prefix": null,
          "givenName": "FIRST",
          "middleName": "M",
          "surName": "LA",
          "suffix": null
        },
        {
          "prefix": null,
          "givenName": "FIRST",
          "middleName": "NONAME",
          "surName": "LAST",
          "suffix": null
        },
        {
          "prefix": null,
          "givenName": "X",
          "middleName": null,
          "surName": "THE X",
          "suffix": null
        }
      ],
      "dob": "1900-10-01T00:00:00.000Z",
      "address": "10000 San Francisco Way",
      "city": "San Francisco",
      "state": "California",
      "zipcode": "94104",
      "locations": [
        {
          "name": null,
          "type": "R",
          "streetAddress": "10000 San Francisco Way",
          "city": "San Francisco",
          "county": "California",
          "state": "CA",
          "zipCode": "94104",
          "zipCodeExtension": null,
          "latitude": 50.12345,
          "longitude": -34.67890
        },
        {
          "name": null,
          "type": "E",
          "streetAddress": "200 FL DRIVE",
          "city": "Miami",
          "county": "Miami-Daide",
          "state": "FL",
          "zipCode": "33129",
          "zipCodeExtension": null,
          "latitude": 34.67890,
          "longitude": -50.12345
        }
      ],
      "sex": "Male",
      "age": "123",
      "offenderUrl": "https://meganslaw.ca.gov/OffenderDisplay.aspx?search...",
      "offenderImageUrl": "https://meganslaw.ca.gov/NSOPWPI.ashx?f=...&NSOPRFlag=True",
      "jurisdiction": "CA",
      "isAbsconder": false,
      "isPredator": true,
      "eyeColor": "Green",
      "hairColor": "Brown",
      "height": "5'11\"",
      "weight": "200 lbs.",
      "race": "White",
      "marks": "tattoo on r_arm (cross / cover the cross with tribal symbol); tattoo on l_arm (pic of a lady); tattoo on l_arm (something); ...",
      "riskLevel": "2",
      "crime": "Crime:  14:81 - Indecent Behavior with Juveniles; Juvenile victim, Conviction date:  2199-09-09, Jurisdiction:  California",
      "registrationDate": "2012-12-31T00:00:00.000Z",
      "content": "<br><b>Zip Code: </b>94104<br><b>Sex: </b>Male<br><b>Age: </b>123...",
      "lat": 50.12345,
      "lng": -34.67890,
      "sources": [
        {
          "name": "National Sex Offender Public Website",
          "id": "nsopw",
          "url": "https://www.nsopw.gov/"
        },
        {
          "name": "New York State Division of Criminal Justice Services",
          "id": "criminaljustice.ny.gov",
          "url": "https://www.criminaljustice.ny.gov/"
        }
      ],
      "updatedAt": "2026-03-05T21:35:42.936Z",
      "uuid": "5893a310-37ce-58d8-b101-39e76a60e94a"
    }
  ]
}

Result Limits

Error Handling

CodeMeaningExample Response
400Bad Request{"error":"Invalid input params","reason":"no query params presented"}
401Unauthorized — missing or invalid API key{"code":401,"message":"Missing API key"}
405Method Not Allowed

Code Examples

JavaScript / Node.js

const res = await fetch(
  `https://api.offenders.io/sexoffender?key=${API_KEY}&zipcode=94104`
)
const { offenders } = await res.json()
console.log(offenders[0].name, offenders[0].city)

Python

import requests

r = requests.get("https://api.offenders.io/sexoffender", params={
    "key": API_KEY,
    "firstName": "Alice",
    "zipcode": "94104"
})
offenders = r.json()["offenders"]

cURL

curl "https://api.offenders.io/sexoffender?key=YOUR_KEY&lat=30.967&lng=-91.116&radius=2"

Batch Processing

Need to process thousands of records? Use our web-based batch tool at batch.offenders.io — upload a CSV with First Name, Last Name, and optional DOB. See the Batch Processing Guide for details.

Ready to integrate?

Get your free API key and start making calls in minutes — via REST API or MCP server.

Get Free API Key →