Search sex offender records
Search the national sex offender registry by name, address, zip code, GPS coordinates, or free-text query. For quick demos, GET with the key query parameter remains supported. For production, prefer POST with X-API-Key or Authorization: Bearer and JSON body fields. Send optional X-Request-Id for customer-side request correlation.
Query parameters
Your API key (required). If using POST, you can send it in X-API-Key or Authorization: Bearer instead.
First name of offender
Last name of offender
Date of birth (YYYY-MM-DD). Regular Search matches exact records by full date, year_month records by year and month, and year records by year. Records with no stored DOB are excluded. A record with unknown precision but a stored date must match the full date. Extensive Mode may also return possible matches with a partial or missing DOB.
Residence city
Residence state (full name or 2-letter code)
Residence zip code
Street address search. Fuzzy by default; supports common address abbreviations and is billed at the fuzzy search rate (+$0.02/call). Do not combine with q or lat/lng. If combined with mode=extensive, also send firstName and lastName so enriched name results can be filtered by address.
Latitude for GIS radius search
Longitude for GIS radius search
Radius in miles for GIS search (default 1, max 100)
Set to 'extensive' to check additional live sources and return aliases, locations, and stateData where available. Results with a partial or missing DOB may still appear, so the result count can differ from Regular Search. +$0.05/call.
Enable typo-tolerant fuzzy name matching for structured name fields. Handles spelling variations, partial first names, nicknames, aliases, and hyphenated surnames. Structured address searches are fuzzy by default and do not require this flag. +$0.02/call.
Free-text search across names, aliases, address, city, and zip code. Use with fuzzy=true instead of firstName/lastName.
Enable prefix matching on the specified name field
Pull a single record by UUID
Pull a single record by Person UUID
Face ID from Facial Search API
Filter by first appearance in system (YYYY-MM-DD)
Filter by first appearance in system (YYYY-MM-DD)
Filter by last update in system (YYYY-MM-DD)
Filter by last update in system (YYYY-MM-DD)
Page number for GIS search pagination. Each page is billed as a separate API call.
Headers
Optional opaque client correlation ID. Use a UUID or similar request ID; do not include names, emails, DOBs, member IDs, patient IDs, search values, or other sensitive data.
Response
Successful search
Example response
{
"offenders": [
{
"name": "JOHN M DOE",
"firstName": "JOHN",
"lastName": "DOE",
"dob": "1990-01-15T00:00:00.000Z",
"dobPrecision": "exact",
"address": "123 MAIN ST",
"city": "RICHMOND",
"county": "RICHMOND CITY",
"state": "Virginia",
"zipcode": "23219",
"locations": [
{
"type": "RES (Primary)"
}
],
"sex": "Male",
"age": "35",
"eyeColor": "Brown",
"hairColor": "Black",
"height": "5 ft 10 in",
"weight": "180 lbs.",
"race": "White",
"ethnicity": "Non-Hispanic",
"marks": "TAT R ARM\nSC L KNEE",
"riskLevel": "Tier 3",
"crime": "SEXUAL ASSAULT\nINDECENT EXPOSURE",
"content": "<br><b>Zip Code:</b> 23219",
"lat": 37.5407,
"lng": -77.436,
"jurisdiction": "VA",
"sources": [
{
"id": "nsopw",
"name": "National Sex Offender Public Website"
}
],
"stateData": {
"status": "Active",
"designation": "Sexually Violent Offender",
"complianceStatus": "COMPLIANT",
"locations": [
{
"type": "RES (Primary)"
}
]
}
}
]
}Changes
Changed in 4 of the 12 revisions of this API.1537
- ○
added the optional property
//to the response with the statusresponse-optional-property-added
- ○
added the optional property
//to the response with the statusresponse-optional-property-added
- ○
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
- ○
added the optional property
//to the response with the statusresponse-optional-property-added
- ○
added the optional property
//to the response with the statusresponse-optional-property-added
- ○
- ▲
the
/////response's property type changed fromstringtobooleanfor statusresponse-property-type-changed
- ●
removed the optional property
////from the response with the statusresponse-optional-property-removed
- ●
removed the optional property
////from the response with the statusresponse-optional-property-removed
- ●
removed the optional property
/////from the response with the statusresponse-optional-property-removed
- ●
removed the optional property
/////from the response with the statusresponse-optional-property-removed
- ●
removed the optional property
///from the response with the statusresponse-optional-property-removed
- ○
added the optional property
////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ▲