Atlas · Methodology
How the number was produced
The national camera figure is the most quotable claim on this site. That makes it the one that most deserves to be checkable. This page documents the extraction end to end — including what it gets wrong.
- Source
- OpenStreetMap, via the Overpass API
- Licence
- ODbL 1.0 — © OpenStreetMap contributors
- Extract date
- Aug 15, 2026
- Query scope
- Per state, by ISO3166-2 area — 51 areas (50 states + District of Columbia)
- Mapped camera coordinates
- 118,623
- Counties holding at least one
- 2,223
- Refresh
- Manual, by re-running the fetch. There is no live feed.
What one record means
A mapped camera coordinate is one OpenStreetMap object that a volunteer recorded as an automated license plate reader. It is not an Unsurveilled field observation. We have not personally confirmed any pole.
We treat one OSM object as one physical reader. That is an assumption, and it is the largest single source of error in the count. A gantry carrying four cameras may be mapped as one node or as four; both happen. We do not correct for it, because inventing a multiplier would be worse than reporting what the source says.
The query
Each state is queried by its ISO3166-2 administrative area, not by a bounding box — a single continent-sized query times out on the public Overpass instance, and the per-state form gives every camera a state attribution for free. Within each area, two clauses:
Nodes only. Ways and relations tagged as surveillance are not matched, so a camera mapped as an area does not appear. That is a deliberate undercount: placing a point at the centroid of an area would invent a precision the source does not have.
Note what is not in the query. A device tagged only as a speed camera is not collected, even though many speed cameras do read plates, because the tag does not establish it. Nor is anything inferred from an operator or address tag. The count is therefore a floor in at least three separate ways.
Deduplication
Because each state is queried separately, an object near a boundary can be returned twice. Records are keyed by their OpenStreetMap object ID and any repeat is discarded, so the same physical node cannot be counted under two states. Coordinates the Albers USA projection cannot place — a bad latitude, a transposed pair, a point outside the United States — are dropped rather than drawn in the ocean, and the number dropped is published in the data sidecar alongside the count.
Vendor attribution
Vendor comes from the manufacturer and brand tags on the object, run through one shared classifier. The operator tag is never read as a vendor. An earlier build did read it, and "Chicago Police Department" duly appeared in the vendor list — an agency is not a manufacturer, and conflating them would misattribute hardware to organisations that merely run it.
7,534 coordinates — 6.4% — carry no vendor we can identify. Those read Unspecified, which means the fact is unrecorded, not that the camera has no vendor.
| Vendor as classified | Coordinates |
|---|---|
| Flock Safety | 96,780 |
| Unspecified | 7,534 |
| Motorola Solutions | 5,899 |
| Genetec | 2,494 |
| Axis Communications | 1,102 |
| Leonardo/Elsag | 979 |
| Ubicquia | 596 |
| Rekor | 589 |
| Ekin | 563 |
| Neology | 490 |
| Axon | 332 |
| PlateSmart | 239 |
| Avigilon | 181 |
| Verkada | 167 |
| Redspeed | 104 |
| MAV | 104 |
| LiveView Technologies | 71 |
| NDI Recognition Systems | 64 |
| Kapsch | 59 |
| Bosch | 48 |
| Insight LPR | 45 |
| Costar | 43 |
| Uniview | 42 |
| Hanwha Vision | 31 |
| PaceTalk | 26 |
| Hikvision | 13 |
| SkyCop | 11 |
| Dahua | 9 |
| Turing | 5 |
| Jenoptik | 1 |
| Inex Technologies | 1 |
| Automotus | 1 |
Operator, and why most are unknown
Where OpenStreetMap records an operator we keep it verbatim. Most objects have none. An unattributed camera is operator unknown — it is not evidence of government operation, and the Atlas never presents it as such. Some mapped readers are run by private businesses, and treating those as municipal surveillance would be a straightforward error.
Geography
State comes from the query area the object was returned by. County is assigned geometrically, by testing each coordinate against US Census county polygons — not from any address or operator tag. 2,223 counties hold at least one coordinate. Municipal camera counts on jurisdiction dossiers are point-in-polygon against the municipal boundary, never a radius around a town centre: a radius absorbs neighbouring cities, and in testing produced 65 cameras for a town whose boundary contains 46.
Place labels come from a separate OpenStreetMap extract of 5,464 cities and towns, retrieved Aug 15, 2026. A place label says nothing about whether cameras are present.
Coverage, stated as three different things
These measure different facts and the site keeps them apart:
- Coordinate coverage
- 49 of 50 states hold at least one mapped coordinate
- Jurisdiction-record coverage
- 22 of 50 states hold at least one program or decision record
- Any-data coverage
- 50 of 50 states hold either
- District of Columbia
- 77 coordinates. Queried, reported, and never counted as a state.
There is deliberately no national “devices represented” total. Adding mapped coordinates to the device counts stated in program records would count the same hardware twice wherever we hold both, so the two are published separately and never summed.
Known false-positive and false-negative risks
- Multi-camera installations mapped as a single object undercount; single cameras mapped as several overcount.
- Removed cameras can persist in OpenStreetMap until a volunteer edits them. A coordinate is evidence a reader was observed, not that it is there today.
- Mis-tagged devices. A speed camera or ordinary CCTV tagged as ALPR by mistake enters the set.
- Private deployments are included where mapped. They are surveillance infrastructure, and they are not government programs.
- Coverage follows mappers, not cameras. Dense areas reflect active local mapping communities. A state with few coordinates has thin OSM coverage, which is not a finding about that state.
- Alaska returned zero. That is an absence of mapping, not an absence of readers.
Reproducing this
The extraction is a script, not a manual process. The fetch, the vendor classifier, the point-in-polygon assignment, and the binary packer all live in the repository, and re-running them against a fresh Overpass response reproduces the dataset. The snapshot itself is committed, so any figure on this site can be checked against the exact data that produced it.
Corrections
If a coordinate is wrong — wrong position, removed camera, wrong vendor, known operator, duplicate, or not an ALPR at all — tell us and we will correct the record and say that we did. Errors in the underlying map are better fixed at the source, in OpenStreetMap itself, where the correction benefits everyone rather than only this site.