Sex Offenders API Sex Offenders API

The CrimeoMeter Sex Offenders API — 2 published operations (record search and radius search) over US state sex offender registry data, transcribed from CrimeoMeter's public Postman collection.

Operations 2

GET /sex-offenders/records Search registered sex offender records #
GET /sex-offenders/location Search registered sex offenders around a location #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sex-offenders-api-sex-offenders-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sex-offenders-api-sex-offenders-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: CrimeoMeter Sex Offenders API
  description: |
    The Sex Offenders API by CrimeoMeter (CityCop Corporation dba CrimeoMeter) returns
    registered sex offender records across the United States, searchable by zip code,
    name, alias, birthdate, last-updated window, or by latitude/longitude radius.

    PROVENANCE: paths, HTTP methods, query parameters and the x-api-key header are
    transcribed verbatim from CrimeoMeter's own PUBLIC Postman collection
    "CrimeoMeter API" (published 2024-07-26), reached from the Documentation link on
    https://www.crimeometer.com/docs and served at
    https://documenter.getpostman.com/view/12755833/TzK2auPn
    (machine-readable at https://documenter.getpostman.com/api/collections/12755833/TzK2auPn).
    The 200 response schema is derived from the single response example CrimeoMeter
    publishes on https://www.crimeometer.com/sex-offenders-api — that example is shown
    against the v3 path, so field-level fidelity is asserted only for the documented
    example, not for every v5 field. Error responses are transcribed from live
    unauthenticated probes of api.crimeometer.com on 2026-08-28.
    No response body was invented.
  version: v5
  contact:
    name: CrimeoMeter
    url: https://www.crimeometer.com/#contactus
  termsOfService: https://www.crimeometer.com/tos
servers:
  - url: https://api.crimeometer.com/v5
    description: Production v5 — the version published in CrimeoMeter's public Postman collection (2024-07-26)
  - url: https://api.crimeometer.com/v3
    description: v3 — the version still documented on the Sex Offenders API product page (www.crimeometer.com/sex-offenders-api)
security:
  - apiKeyAuth: []
tags:
  - name: Sex Offenders
    description: Registered sex offender records across the United States.
paths:
  /sex-offenders/records:
    get:
      tags: [Sex Offenders]
      summary: Search registered sex offender records
      description: |
        Returns registered sex offender records filtered by zip code, name, alias,
        birthdate, or a last-updated window. Parameter set transcribed from the
        published Postman collection requests.
      operationId: getSexOffenderRecords
      parameters:
        - in: query
          name: zipcode
          schema: { type: string }
          description: Zip code to search (fuzzy/prefix match as published).
          example: '11212'
        - in: query
          name: exact_zipcode
          schema: { type: string }
          description: Zip code to match exactly.
          example: '11212'
        - in: query
          name: first_name
          schema: { type: string }
          description: Offender first name.
          example: CHRISTOPHER
        - in: query
          name: last_name
          schema: { type: string }
          description: Offender last name.
          example: ANDREWS
        - in: query
          name: birthdate
          schema: { type: string, format: date }
          description: Offender birthdate, YYYY-MM-DD.
          example: '1975-02-11'
        - in: query
          name: alias
          schema: { type: string }
          description: Known alias to search (fuzzy match as published).
          example: 'HARPER, MICHAEL'
        - in: query
          name: exact_alias
          schema: { type: string }
          description: Known alias to match exactly.
          example: 'HARPER, MICHAEL'
        - in: query
          name: last_updated_after
          schema: { type: string }
          description: Lower bound on sex_offender_last_updated, published in the form "YYYY-MM-DD HH:MM:SS".
          example: '2026-01-01 00:00:00'
        - in: query
          name: last_updated_before
          schema: { type: string }
          description: Upper bound on sex_offender_last_updated, published in the form "YYYY-MM-DD HH:MM:SS".
          example: '2027-01-01 00:00:00'
      responses:
        '200':
          description: Matching sex offender records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SexOffenderRecords'
        '403':
          description: >-
            Returned by the AWS API Gateway edge when the x-api-key header is missing,
            invalid, or the key is not entitled to the resource. Observed live on
            2026-08-28 (x-amzn-errortype: ForbiddenException).
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Error' }
              example: { message: Forbidden }
  /sex-offenders/location:
    get:
      tags: [Sex Offenders]
      summary: Search registered sex offenders around a location
      description: |
        Returns registered sex offender records within a radius of a latitude/longitude
        point, optionally constrained to a last-updated window. Parameter set transcribed
        from the published Postman collection requests.
      operationId: getSexOffendersByLocation
      parameters:
        - in: query
          name: lat
          required: true
          schema: { type: number, format: double }
          description: Latitude of the search centre.
          example: 41.9777476245164
        - in: query
          name: lon
          required: true
          schema: { type: number, format: double }
          description: Longitude of the search centre.
          example: -87.6472903440513
        - in: query
          name: distance
          schema: { type: string }
          description: Search radius, published in the form "<number>mi" (e.g. 5mi, 10mi).
          example: 10mi
        - in: query
          name: last_updated_after
          schema: { type: string }
          description: Lower bound on sex_offender_last_updated, published in the form "YYYY-MM-DD HH:MM:SS".
          example: '2024-01-01 00:00:00'
        - in: query
          name: last_updated_before
          schema: { type: string }
          description: Upper bound on sex_offender_last_updated, published in the form "YYYY-MM-DD HH:MM:SS".
          example: '2025-01-01 00:00:00'
      responses:
        '200':
          description: Matching sex offender records near the supplied point.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SexOffenderRecords'
        '403':
          description: >-
            Returned by the AWS API Gateway edge when the x-api-key header is missing or
            invalid. Observed live on 2026-08-28.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Error' }
              example: { message: Forbidden }
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Private API key issued by CrimeoMeter. Requested through the "Contact Us" form
        on www.crimeometer.com; there is no self-service key issuance endpoint.
  schemas:
    Error:
      type: object
      description: Error envelope observed on live unauthenticated calls (AWS API Gateway shape).
      properties:
        message:
          type: string
          examples: [Forbidden, Missing Authentication Token]
    SexOffenderRecords:
      type: object
      description: >-
        Envelope derived from the response example CrimeoMeter publishes on
        https://www.crimeometer.com/sex-offenders-api.
      properties:
        sex_offenders_count:
          type: integer
          description: Total number of matching records.
        pages_count:
          type: integer
          description: Number of result pages available for the query.
        sex_offenders:
          type: array
          items: { $ref: '#/components/schemas/SexOffender' }
    SexOffender:
      type: object
      description: >-
        Field set transcribed from the single published response example. Types are
        inferred from the example values; no field was added that the example does not show.
      properties:
        sex_offender_state: { type: string, description: Two-letter US state code. }
        sex_offender_location: { type: string, description: City or locality. }
        sex_offender_zipcode: { type: string }
        sex_offender_lat: { type: number, format: double }
        sex_offender_lon: { type: number, format: double }
        sex_offender_name: { type: string, description: Full name as registered. }
        sex_offender_first_name: { type: string }
        sex_offender_middle_name: { type: string }
        sex_offender_last_name: { type: string }
        sex_offender_birthdate: { type: string, format: date }
        sex_offender_age: { type: integer }
        sex_offender_address_line1: { type: string }
        sex_offender_address_line2: { type: string }
        sex_offender_sex: { type: string }
        sex_offender_race: { type: string }
        sex_offender_height: { type: string, description: 'Published as free text, e.g. "6ft 00in".' }
        sex_offender_weight: { type: string, description: Published as a string in the example. }
        sex_offender_hair: { type: string }
        sex_offender_eyes: { type: string }
        sex_offender_marks: { type: string, description: Semicolon-delimited scars/marks/tattoos. }
        sex_offender_aliases: { type: string, description: Semicolon-delimited known aliases. }
        sex_offender_charges: { type: string, description: Semicolon-delimited registered charges. }
        sex_offender_changes: { type: string, description: Most recent registered change record. }
        sex_offender_is_predator: { type: string, description: Published as the string "true"/"false" in the example. }
        sex_offender_is_absconder: { type: string, description: Published as the string "true"/"false" in the example. }
        sex_offender_image_url: { type: string, format: uri }
        sex_offender_last_updated: { type: string, format: date-time }
        sex_offender_created: { type: string, format: date-time }
        sex_offender_last_synced: { type: string, format: date-time }
        sex_offender_is_synced: { type: boolean }