---
title: "Search sex offender records"
method: GET
path: "/sexoffender"
---

# Search sex offender records

`GET /sexoffender`

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

- `key` string
- `firstName` string
- `lastName` string
- `dob` string, date
- `city` string
- `state` string
- `zipcode` string
- `address` string
- `lat` number
- `lng` number
- `radius` number
- `mode` 'extensive'
- `fuzzy` boolean
- `q` string
- `prefixMatch` 'firstName' | 'lastName'
- `uuid` string
- `personUuid` string
- `faceId` string
- `createdAtStart` string, date
- `createdAtEnd` string, date
- `updatedAtStart` string, date
- `updatedAtEnd` string, date
- `page` integer

## Headers

- `X-Request-Id` string

## Response `200`

Successful search

- object
  - `offenders` Offender[]
    - `name` string — Full name
    - `firstName` string
    - `lastName` string
    - `middleName` string
    - `aliases` Alias[] — Known aliases (Extensive Mode only)
      - `prefix` string, nullable
      - `givenName` string
      - `middleName` string, nullable
      - `surName` string
      - `suffix` string, nullable
    - `dob` string, date-time, nullable — Normalized date of birth in UTC when available. Use dobPrecision to distinguish a full date from source-reported year-month, year-only, or unknown values.
    - `dobPrecision` 'exact' | 'year' | 'year_month' | 'unknown' — Source precision of the dob field: exact, year_month, year, or unknown.
    - `address` string
    - `city` string
    - `county` string — Residence county when available.
    - `state` string
    - `zipcode` string
    - `locations` Location[] — All official addresses (Extensive Mode only)
      - `type` string
      - `streetAddress` string
      - `city` string
      - `county` string
      - `state` string
      - `zipCode` string
      - `fromDate` string
      - `toDate` string
      - `latitude` number, double
      - `longitude` number, double
    - `sex` string
    - `age` string
    - `eyeColor` string
    - `hairColor` string
    - `height` string
    - `weight` string
    - `race` string
    - `ethnicity` string
    - `marks` string — Formatted tattoos, scars, and marks. Multiple source entries are newline-delimited.
    - `riskLevel` string
    - `crime` string — Newline-delimited public summaries derived from validated official offense records.
    - `content` string — Pre-formatted HTML summary when provided by the source response.
    - `registrationDate` string, date-time, nullable
    - `offenderUrl` string, uri — URL to source state registry page
    - `offenderImageUrl` string, uri — Profile image URL from state registry
    - `offenderImageUrlR2` string, uri — Cached profile image URL
    - `lat` number — Latitude (-1 if unknown)
    - `lng` number — Longitude (-1 if unknown)
    - `jurisdiction` string — State/jurisdiction code
    - `isAbsconder` boolean, nullable
    - `isPredator` boolean, nullable
    - `updatedAt` string, date-time
    - `createdAt` string, date-time, nullable
    - `uuid` string, uuid — Unique identifier for this record.
    - `personUuid` string, uuid — Identifier used to connect known records for the same person.
    - `locationHistory` LocationHistoryEpisode[] — Available address history for this record. Returned by Sex Offender History only.
      - `address` string — Street address.
      - `addressFull` string — Full formatted address, when available.
      - `city` string
      - `state` string
      - `zipcode` string
      - `lat` number, double
      - `lng` number, double
      - `observedAt` string, date-time
      - `basis` 'source' | 'vendor' | 'legacy' | 'synthetic' — Address reference category: source means it came from a public registry record; vendor means an address reference; legacy means an earlier saved address record; synthetic means fake testing-key data.
    - `sources` Source[]
      - `id` string
      - `name` string
      - `url` string, uri
    - `stateData` StateData — Allowlisted jurisdiction-specific registry data (Extensive Mode only). Availability varies by jurisdiction. Repeated entities such as offenses and photos are object arrays; marks is one formatted string with multiple source entries newline-delimited.
      - `stateOffenderId` string
      - `status` string
      - `designation` string
      - `complianceStatus` string
      - `aliases` string[]
      - `initialRegistrationDate` string
      - `lastVerificationDate` string
      - `addressVerificationDate` string
      - `registrationEnds` string
      - `isLifetimeRegistration` boolean
      - `marks` string — Formatted scars, marks, and tattoos. Multiple source entries are newline-delimited.
      - `verificationRequirement` string
      - `lawAgency` string
      - `ethnicity` string
      - `incarcerationStatus` string
      - `school` string
      - `employer` string
      - `registrationStartDate` string — Official registration start date, when published by the jurisdiction
      - `sourceModifiedAt` string — Official source-system modification value in the jurisdiction's native precision and format; not a registration, verification, conviction, release, or other offender business-event date
      - `registrationEndDate` string
      - `registrationDuration` string
      - `comments` string
      - `judgmentOfConvictionUrl` string, uri
      - `locations` Location[]
        - `type` string
        - `streetAddress` string
        - `city` string
        - `county` string
        - `state` string
        - `zipCode` string
        - `fromDate` string
        - `toDate` string
        - `latitude` number, double
        - `longitude` number, double
      - `offenses` object[]
        - `offense` string
        - `convictionDate` string
        - `releaseDate` string
        - `statute` string
        - `victimAge` string
        - `victimSex` string
        - `jurisdiction` string
        - `caseNumber` string
        - `adjudication` string
      - `vehicles` object[]
        - `type` string
        - `make` string
        - `model` string
        - `plate` string
        - `state` string
        - `color` string
        - `year` string
        - `hullNumber` string — Official vessel hull identifier, when published by the jurisdiction
      - `photos` object[]
        - `photoId` string
        - `isCurrent` boolean
        - `datePosted` string
        - `date` string
        - `url` string, uri
      - `victimInfo` object[]
        - `gender` string
        - `sex` string
        - `age` string
        - `minor` boolean
        - `classification` string
        - `race` string
      - `criminalHistory` object[]
        - `offense` string
        - `date` string
        - `charge` string
        - `arrestDate` string
        - `disposition` string
        - `dispositionDate` string
  - `page` integer — Current page (GIS only)
  - `totalPages` integer — Total pages (GIS only)

## Other responses

- `400` — Bad request — missing or invalid parameters
- `401` — Unauthorized — missing or invalid API key
- `405` — Method not allowed

## Changes

- **2026-09-01** `0c8be8ca6bda` — 2 info
  - added the optional property `offenders/items/locationHistory` to the response with the `200` status
  - added the optional property `offenders/items/personUuid` to the response with the `200` status
- **2026-08-29** `1a186f221867` — 2 info
  - added the optional property `offenders/items/stateData/sourceModifiedAt` to the response with the `200` status
  - added the optional property `offenders/items/stateData/vehicles/items/hullNumber` to the response with the `200` status
- **2026-08-27** `53628c51d691` — 2 info
  - added the optional property `offenders/items/content` to the response with the `200` status
  - added the optional property `offenders/items/county` to the response with the `200` status
- **2026-08-26** `d4170c2a8abc` — 1 breaking, 5 warning, 31 info
  - the `offenders/items/stateData/photos/items/isCurrent` response's property type changed from `string` to `boolean` for status `200`
  - removed the optional property `offenders/items/locations/items/address` from the response with the `200` status
  - removed the optional property `offenders/items/locations/items/zipcode` from the response with the `200` status
  - removed the optional property `offenders/items/stateData/locations/items/address` from the response with the `200` status
  - …33 more

[Change history](https://skmtc.dev/offenders/apis/offenders-io-sex-offender-registry-api/changes/sexoffender/get.md)

---

[API](https://skmtc.dev/offenders/apis/offenders-io-sex-offender-registry-api.md) · [All operations](https://skmtc.dev/offenders/apis/offenders-io-sex-offender-registry-api/llms.txt) · [OpenAPI document](https://skmtc.dev/offenders/apis/offenders-io-sex-offender-registry-api/revisions/3839b7742c8a?raw)
