Exact counts and nameless pins along one route, its legs and its stops
Changed onWho is registered along a route: within a corridor either side of a line, within a radius of each stop, or both. The answer is exact, never an estimate and never partial.
Send the line as one of path (a GeoJSON LineString, or [[lng, lat], …]), points ([[lng, lat], …]) or polyline (an encoded polyline: precision 5 for Google Directions overview_polyline, 6 for Mapbox Directions geometry: polyline6). Without a line, two or more stops are joined by straight lines.
The answer counts people per leg (between two stops) and per stop, places every pin on the route (distanceMiles, leg, alongMiles) and next to its nearest stop (nearestStop, stopDistanceFeet). People mapped only to a ZIP code, city or county are counted separately under approximate and never in total. A route answer never carries a name, on any plan; for a labelled map, request a viewport at zoom 15 or closer. The record behind a pin opens with GET /v1/map/records/{markerId}.
Billing. A route is billed as route units, each one map request: ceil(corridor miles) × width factor when the corridor is measured (×1 up to a 0.25-mile corridor) plus ceil(stops / 10) when stop radii are measured, at least 1. A 17.42-mile bus route with a 0.1-mile corridor and 35 stops at 1,000 feet is 18 + 4 = 22 units. detail=count costs the same. A 304, test mode and any error response are free.
Never partial. More than 300 pins with detail=full is 422 route_too_many_people with the exact counts and nothing charged; a route through more addresses than one call counts exactly is 422 route_too_dense; a read that fails is 503 with no result and nothing charged.
Caching. Cache-Control: private, max-age=300 and an ETag. Send it back in If-None-Match: the same route asked again answers 304, free.
Auth. A secret API key, or a map browser key (os_map_pk_…) from a site on its list. A browser key must send X-End-User.
Request
- Base URL: https://api.offendersearch.app
- URL: https://api.offendersearch.app/v1/map/route
- Auth: API key in header X-API-Key
Headers
Any id you use for the end user behind this request. The daily area budget is then also counted per end user (2,000 distinct areas a day), so one heavy user is limited before the account is; on the route routes, so is the number of different routes a day, and on the records route the daily open limit when one is set. Optional with a secret key; required on the route routes with a map browser key (422 end_user_required).
The ETag from an earlier answer for the same view. An unchanged view answers 304 with no body and is not billed.
Request body
Response
The answer for this route.
Example response
{
"datasetVersion": "2026-10-18",
"approximate": {
"areas": [
{
"place": "43215"
}
]
},
"unplaced": {
"states": [
"OH"
]
},
"notice": "A pin shows a registered address, not a person's current location."
}Changes
- info
endpoint added
- info