map

The same answer for a drawn shape — a polygon, or a route with a buffer

Everyone inside a drawn shape: a school zone, a delivery area, a walking route. Send one of polygon or route.

The response is the viewport response for the shape's bounding box, limited to what is inside the shape, plus shape. The detail level follows the same zoom rules as GET /v1/map/viewport. In pins and markers mode total is exact. In clusters mode a cluster is included when its centre is inside the shape, and the response carries "totalIsEstimate": true.

Billing. One map request per answer. Test mode and any error response are free.

post/v1/map/area

Request

  • Base URL: https://api.offendersearch.app
  • URL: https://api.offendersearch.app/v1/map/area
  • Auth: one of:
    • API key in header X-API-Key
    • HTTP bearer

Request body

zoomnumber

As on GET /v1/map/viewport.

format'json' | 'geojson'
detail'full' | 'count'
precision'street'

street keeps only people with an exact street address.

sandboxboolean

true answers in test mode.

Response

The answer for this shape.

mode'clusters' | 'pins' | 'markers' | 'count'

clusters at zoom 3–12, or for a closer view holding more than 300 pins. pins at zoom 13–14. markers at zoom 15+. count with detail=count.

zoominteger

The effective zoom this view was answered at.

bboxnumber[]

[west, south, east, north] of the view answered.

datasetVersionstring date

The version of the data that answered.

totalinteger

People in the view (in clusters mode: in the clusters returned). In radius mode: people inside the circle.

centernumber[]

Radius mode only: [lat, lng].

radiusMilesnumber

Radius mode only.

withinRadiusinteger

Radius mode only: people inside the circle. Exact.

shape'polygon' | 'route'

POST /v1/map/area only.

totalIsEstimateboolean

POST /v1/map/area in clusters mode only: true.

sandboxboolean

Present and true on a test-mode answer.

noticestring

Example response

{
  "mode": "clusters",
  "zoom": 9,
  "bbox": [
    -83.5,
    39.6,
    -82.4,
    40.3
  ],
  "datasetVersion": "2026-10-12",
  "total": 1840,
  "breakdown": {
    "street": 1502,
    "housed": 310,
    "homeless": 96,
    "incarcerated": 41
  },
  "clusters": [
    {
      "id": "c9_551_775",
      "lat": 39.9612,
      "lng": -82.9988,
      "count": 412,
      "bbox": [
        -83.06,
        39.91,
        -82.97,
        39.98
      ],
      "expansionZoom": 11,
      "breakdown": {
        "street": 350,
        "housed": 80,
        "homeless": 22,
        "incarcerated": 9
      }
    }
  ],
  "markers": [],
  "areas": [],
  "unplaced": {
    "count": 96,
    "states": [
      "OH"
    ]
  },
  "notice": "A pin shows a registered address, not a person's current location."
}

Changes

No recorded changes to this operation across all 1 revision of this API.