---
title: "Search sex offender records with JSON body"
method: POST
path: "/sexoffender"
---

# Search sex offender records with JSON body

`POST /sexoffender`

Recommended production method. Send your API key in X-API-Key or Authorization: Bearer and send search fields in the JSON body. Send optional X-Request-Id for customer-side request correlation. The standard endpoint also remains compatible with key in the JSON body for existing clients.

## Headers

- `X-Request-Id` string

## Request body

- SearchRequest — JSON body for POST /sexoffender. Uses the same fields as the GET query parameters. At least one search field is required.
  - `key` string — Your API key (required). If using POST, you can send it in X-API-Key or Authorization: Bearer instead.
  - `firstName` string — First name of offender
  - `lastName` string — Last name of offender
  - `dob` string, date — Date of birth (YYYY-MM-DD)
  - `city` string — Residence city
  - `state` string — Residence state (full name or 2-letter code)
  - `zipcode` string — Residence zip code
  - `address` string — 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.
  - `lat` number — Latitude for GIS radius search
  - `lng` number — Longitude for GIS radius search
  - `radius` number — Radius in miles for GIS search (default 1, max 100)
  - `mode` 'extensive' — Set to 'extensive' for alias search, state-level enrichment, and additional response fields (aliases, locations, stateData). +$0.05/call.
  - `fuzzy` boolean — 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.
  - `q` string — Free-text search across names, aliases, address, city, and zip code. Use with fuzzy=true instead of firstName/lastName.
  - `prefixMatch` 'firstName' | 'lastName' — Enable prefix matching on the specified name field
  - `uuid` string — Pull a single record by UUID
  - `personUuid` string — Pull a single record by Person UUID
  - `faceId` string — Face ID from Facial Search API
  - `createdAtStart` string, date — Filter by first appearance in system (YYYY-MM-DD)
  - `createdAtEnd` string, date — Filter by first appearance in system (YYYY-MM-DD)
  - `updatedAtStart` string, date — Filter by last update in system (YYYY-MM-DD)
  - `updatedAtEnd` string, date — Filter by last update in system (YYYY-MM-DD)
  - `page` integer — Page number for GIS search pagination. Each page is billed as a separate API call.

## 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
    - `dobPrecision` 'exact' | 'year' | 'year_month' | 'unknown' — Precision of the dob field. Some registries provide only a birth year, which is normalized to YYYY-01-01 and marked as year.
    - `address` string
    - `city` string
    - `state` string
    - `zipcode` string
    - `locations` Location[] — All official addresses (Extensive Mode only)
      - `type` string
      - `address` string
      - `streetAddress` string
      - `city` string
      - `county` string
      - `state` string
      - `zipcode` string
      - `zipCode` string
      - `fromDate` string
      - `toDate` string
    - `sex` string
    - `age` string
    - `eyeColor` string
    - `hairColor` string
    - `height` string
    - `weight` string
    - `race` string
    - `ethnicity` string
    - `marks` string — Tattoos, scars, marks
    - `riskLevel` string
    - `crime` string
    - `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
    - `sources` Source[]
      - `id` string
      - `name` string
      - `url` string, uri
    - `stateData` StateData — State-specific registry data (Extensive Mode only). Availability varies by state.
      - `stateOffenderId` string
      - `status` string
      - `designation` string
      - `registrationEnds` string
      - `verificationRequirement` string
      - `lawAgency` string
      - `judgmentOfConvictionUrl` string, uri
      - `locations` Location[]
        - `type` string
        - `address` string
        - `streetAddress` string
        - `city` string
        - `county` string
        - `state` string
        - `zipcode` string
        - `zipCode` string
        - `fromDate` string
        - `toDate` string
      - `offenses` object[]
        - `offense` string
        - `convictionDate` string
        - `releaseDate` string
        - `statute` string
        - `victimAge` string
        - `victimSex` string
        - `jurisdiction` string
        - `caseNumber` string
      - `vehicles` object[]
      - `names` string[]
      - `photos` object[]
        - `photoId` string, nullable
        - `isCurrent` string
        - `datePosted` 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

---

[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/ca3556695c98?raw)
