Offendersearch
Map API · 58 US registries

The Sex Offender Map API

Your map, our data: clusters when zoomed out, pins closer in, names close up, and the full record when one is opened.

$2.00 per 1,000 map requests and $0.015 per record opened, with a $300 monthly minimum applied toward usage.

Loading the sample map…

This is the real click sequence. Zoom in until the clusters become pins, then names. Click a pin to open its record. A pin shows a registered address, not a person's current location.

How it works

Three levels of detail, chosen by the zoom

You send the box on screen and the zoom. The sex offender map API returns what a map at that height should draw. One request per view, whatever is in it.

Step 1

Zoomed out: clusters

Below zoom 13 the answer is a count per area, with a breakdown by housing status. A cluster carries the box and the zoom that split it, so a click on it fits the map and the cluster comes apart.

Step 2

Zoom 13 and closer: pins

One pin per registered address, with its position, how exact that position is, and whether it is a home, work or school address. No names yet. From zoom 15 each pin also carries a first initial and last name, housing status and whether a photograph exists.

Step 3

On click: the full record

When someone opens a pin, one more request returns the complete record: photographs, aliases, addresses, offenses and the registry that holds it. It is the same record object the search API returns.

Send no zoom and the API works one out from the size of the box. The response always states the zoom it used. Parameters are in the viewport reference.

The click sequence

What your app calls, and what each step costs

Most clicks need no request at all. The answer for a view already holds what a hover or a popup shows.

The personYour app callsCharge
Opens the map, or types an addressviewport with the box in view1 map request
Pans or zoomsviewport again, once the map settles1 map request
Hovers a clusterNothing. The count and breakdown are already on itFree
Clicks a clusterNothing. Fit the map to the cluster’s bbox at its expansionZoomThe next map request
Clicks a named pinNothing. The label and housing status are on the pinFree
Clicks a pin that stands for several peoplegroups/{groupId}1 map request per page
Clicks “view record”records/{markerId}1 record open
Closes the record and opens it againrecords/{markerId}, the same idFree
Saves or shares a recordStore the recordRef; open it later with records/{recordRef}1 record open, then free for 24 hours

A cluster never traps the user: it always splits into smaller clusters, pins, or one pin that lists the people at a shared address. The full sequence, with code, is in the click sequence guide.

What you can build

One route, eight kinds of map

A browse map

Pan and zoom freely across the country or down to one block. Any size of view is answered; the detail level follows the zoom.

A results list beside the map

At name zoom the markers array is the list: sorted by distance from the centre of the view, with the same ids as the pins and a total for the heading.

“Near this address”

Send a centre and a radius of up to 100 miles instead of a box. Each pin gains its distance in miles, and the response gives the exact count inside the circle.

A count badge for listing pages

Ask for detail=count and get numbers only: “3 within half a mile” on a property, school or venue page, for one map request.

Filters

Filter by housing status, or show exact street addresses only. Every cluster carries the breakdown, so filtered counts need no extra request.

Drawn areas and routes

Post a polygon for a school zone or a delivery area, or a route with a buffer either side for a walk to school. The answer is everyone inside the shape.

Saved links

Marker ids last 24 hours. Every opened record also returns a lasting reference, so a bookmark or a shared link opens the same record later.

Alerts on an area

When a user asks to be told about changes near a place, hand the view to a location monitor. Monitoring is a separate product on the same key.

Looking for one named person rather than a place? That is the sex offender search API: its records carry coordinates, so your app can plot them on the same map. Alerts are set up through sex offender monitoring. For map libraries that take a feature collection, see sex offender GeoJSON.

Response shapes

What comes back at each level

The same envelope every time. mode says which of the arrays is filled.

{
  "mode": "clusters",
  "zoom": 9,
  "bbox": [-88.3, 41.5, -87.2, 42.2],
  "total": 1840,
  "breakdown": {
    "street": 1502, "housed": 310, "homeless": 96, "incarcerated": 41
  },
  "clusters": [
    {
      "id": "c9_131_190",
      "lat": 41.8781, "lng": -87.6298,
      "count": 412,
      "bbox": [-87.70, 41.83, -87.60, 41.91],
      "expansionZoom": 11,
      "breakdown": {
        "street": 350, "housed": 80, "homeless": 22, "incarcerated": 9
      }
    }
  ],
  "markers": [],
  "areas": [],
  "unplaced": { "count": 96, "states": ["IL"] },
  "notice": "A pin shows a registered address, not a person's current location."
}
  • Clusters. bbox is the extent of the people in the cluster. Fit the map to it at expansionZoom and the cluster comes apart.
  • Pins and named markers. label is a first initial and last name. A person with two mapped addresses has two pins; total counts them once.
  • A many-people pin has id: null, a count and a groupId. Up to 10 people are listed inline at name zoom; the groups route pages through the rest.
  • An area pin stands for people placed only to the middle of a ZIP code, city or county. It is never drawn as an exact address.

Every field is in the clusters and markers reference.

Pricing

Sex offender map API pricing

$2.00 per 1,000 map requests and $0.015 per record opened, with a $300 monthly minimum applied toward usage.

Map requests$2.00 per 1,000 map requests
Records$0.015 per record opened. Volume accounts move to a lower rate, down to $0.005
Minimum$300 monthly minimum, applied toward usage
Clusters and pinsNever charged per person
Opening the same marker againFree
An unchanged view, the status route, test modeFree

What a map request is

A map request is one answer for one map view. It costs the same whether the view holds three people or three hundred.

Clusters and pins are never charged per person. A view that has not changed (HTTP 304), the status route and test mode are free.

What a record open is

A record open is the complete record behind one marker. Opening the same marker again is free. A new map request returns new marker ids, so opening that person from the new result is a new charge.

The monthly minimum

The $300 monthly minimum is applied toward everything the account uses that month, search included. A month with $110 of usage is billed $300; a month with $1,100 is billed $1,100.

$300 covers 150,000 map requests on its own. Records opened and searches run in the same month count toward it too.

Worked months. Search calls are priced at the published per-call rate.
MonthMap requestsRecords openedSearch callsUsageBilled
Trial period with the minimum waived12,0006000$33.00$33.00
Light month40,0002,0000$110.00$300.00
Map plus search40,0002,0001,000$260.00$300.00
Exactly at the minimum105,0006,0000$300.00$300.00
Above the minimum400,00020,0000$1,100.00$1,100.00

Search prices, monitoring and volume terms are on the pricing page. Line-by-line billing rules are in the Map API billing reference.

Turning it on

Self-serve, on the key you already have

Nobody has to approve access. Turn the Map API on from the dashboard and the same key answers map requests at once.

The day you turn it on

Any paying account can turn the Map API on. Turning it on charges the $300 minimum that day, and it covers the rest of that calendar month.

Later months

From the next month the minimum is settled on the month-end invoice: you pay your usage, or the minimum if usage is lower.

Turning it off

Turn it off at any time and the map routes stop at once. A minimum already paid is not refunded, and turning it back on in the same month costs nothing more.

If the card is declined, nothing is turned on and nothing is charged. Step by step: turning the Map API on.

Turn on the Map APIOr build in test mode first. It is free.
Test mode

Build the whole map before you pay

Test mode returns made-up people in the real response shape. Add sandbox=true to any map request. It needs no plan and is never charged.

curl -G https://api.offendersearch.app/v1/map/viewport \
  -H "X-API-Key: $OFFENDERSEARCH_KEY" \
  -d bbox=-87.70,41.83,-87.60,41.91 \
  -d zoom=12 \
  -d sandbox=true

Every label in test mode starts with “Sample”, so a made-up person is never mistaken for a real one in a screenshot or a demo. Group and marker ids from a test-mode response open test-mode records, so the whole click sequence works. The step-by-step version is how to build a sex offender map.

Addresses

Approximate and unplaced addresses

A registry does not publish a street address for everyone. The map says so instead of guessing.

Exact pins

Across the 58 registries, the large majority of records carry mappable coordinates. A pin with precision: "street" is at a registered street address.

Areas

People placed only to a ZIP code, city or county come back in areas, along with anyone in custody or with no fixed address. Draw them as a labelled region marker with a count. The groups route lists who is in it.

Unplaced

unplaced is the number of people in the states in view with no mappable address. Show it beside the map: “96 more are registered in this state with no mapped address.”

Every response carries a notice to show on the map: “A pin shows a registered address, not a person's current location.” Showing it is a condition of use. A user should never read a pin as proof of where someone is today.

Access

From your server, or straight from the browser

Secret key, from your server

Your page asks your server; your server adds the secret key in X-API-Key and passes the request on. The key never reaches a browser, and you decide who may see the map. Phone apps work this way too.

Browser key, limited to your sites

A map browser key can be used in page code. It answers only the map routes, and only for requests from the sites you list for it. Used from anywhere else, it is refused.

Send an X-End-User header with any id of your choosing and one heavy user is limited before your whole account is. Keys and a proxy sample are in Map API access.

Questions

Sex offender map API: common questions

What is a sex offender map API?

It is an API that tells your map what to draw. You send the area on screen; it returns clusters, pins or named pins for that area, and the full registry record when a pin is opened. This one covers 58 US registries: the 50 states, DC and the US territories.

Do you host the map?

No. You draw it with the map library you already use: MapLibre, Mapbox GL, Leaflet or Google Maps. The API returns positions, counts and labels as JSON or GeoJSON, and your code styles them.

What does the Map API cost?

$2.00 per 1,000 map requests and $0.015 per record opened, with a $300 monthly minimum applied toward usage. Clusters and pins are never charged per person. A view that has not changed (HTTP 304), the status route and test mode are free.

Is the monthly minimum charged on top of usage?

No. The $300 monthly minimum is applied toward everything the account uses that month, search included. A month with $110 of usage is billed $300; a month with $1,100 is billed $1,100.

Why does a pin have no name until I zoom in?

Names start at zoom 15. Between zoom 13 and there, a pin is a position only. A wide view is for seeing where registered addresses are; a name appears when the user has gone to a street.

What happens when a view holds a very large number of pins?

A response holds at most 300 pins. A denser view is answered as clusters on a finer grid, so the map stays fast and the user zooms in one more step.

Are we charged twice for opening the same record?

A record open is the complete record behind one marker. Opening the same marker again is free. A new map request returns new marker ids, so opening that person from the new result is a new charge.

Can we build before paying the minimum?

Yes. Test mode returns made-up people in the real response shape. Add sandbox=true to any map request. It needs no plan and is never charged.

Can we store what the map returns?

The data is for display in your own application. You may cache a result for up to 24 hours; you may not keep a bulk copy or build a data set from it. The Map API section of the terms sets this out.

How current is the data on the map?

The map shows the same continuously updated registry data the search API returns. Each record you open carries its own lastCheckedAt, so you can see how current it is.

Is a map result a consumer report?

No. Results from the standard API, the map included, are not a consumer report and must not be used for FCRA-governed hiring, tenancy or credit decisions. Those run through FCRA Partner Access.

Display, caching and storage rules are in the terms of service.

Put the registry on your map

Build in test mode today. Turn the Map API on when the map is ready to show real records.

The Offendersearch APIs

One account, one key, one bill — the sex offender registry and criminal records, side by side.

Sex offender registry

Criminal records

Build with it

Screening and compliance