drive through most american cities today and you'll pass a flock safety camera without noticing it. it's a small, solar-powered box mounted on a pole, quietly photographing every license plate that passes.
after digging into how these actually work, it's hard to see them as anything but infrastructure nobody voted for. here's why.
there's no consent and no real oversight
flock cameras log a plate, a timestamp, gps coordinates, and a "vehicle fingerprint" — make, color, damage, bumper stickers — for every car that passes, regardless of whether that car is connected to a crime.
data sharing expands past its stated purpose
departments network their flock feeds together, and that network has repeatedly been used well outside its original scope. mountain view, ca pulled its flock contract in 2026 after an audit found misuse of access patterns.
it normalizes mass tracking as infrastructure
a single camera at an intersection is a curiosity. hundreds of thousands of them, cross-linked into a shared national search index, is a tracking system that was never put to a public vote in most places.
the access controls live in a contract, not in the hardware
none of this requires believing anyone involved has bad intentions. the problem is architectural: a passive, blanket surveillance layer bolted onto ordinary streets, where "we only allow local law enforcement" hides a much broader data-sharing ecosystem.
the upside: it's radically documented
ironically, the same openness that makes flock's spread visible is what makes it possible to push back on. a community project called deflock crowdsources camera locations onto openstreetmap, volunteers map them, and the project makes them searchable.
that means you don't have to take it on faith that a camera exists near you. you can query it directly.
checking for cameras near you
openstreetmap tags alpr cameras with man_made=surveillance, surveillance:type=ALPR, and, when known, manufacturer=Flock Safety. that data is queryable straight from the overpass api, no auth required.
interface OverpassElement {
id: number;
lat: number;
lon: number;
tags: Record<string, string>;
}
interface OverpassResponse {
elements: OverpassElement[];
}
interface FlockCamera {
id: number;
lat: number;
lon: number;
manufacturer?: string;
direction?: string;
}with those types in place, the actual query is just a POST to overpass with an overpass QL string:
async function findNearbyFlockCameras(
lat: number,
lon: number,
radiusMeters = 2000
): Promise<FlockCamera[]> {
const query = `
[out:json][timeout:25];
(
node["man_made"="surveillance"]["surveillance:type"="ALPR"](around:${radiusMeters},${lat},${lon});
);
out body;
`;
const response = await fetch("https://overpass-api.de/api/interpreter", {
method: "POST",
body: query,
});
if (!response.ok) {
throw new Error(`overpass query failed: ${response.status}`);
}
const data: OverpassResponse = await response.json();
return data.elements.map((el) => ({
id: el.id,
lat: el.lat,
lon: el.lon,
manufacturer: el.tags["manufacturer"],
direction: el.tags["camera:direction"],
}));
}and calling it is one line:
const cameras = await findNearbyFlockCameras(33.749, -84.388);
console.log(`found ${cameras.length} alpr cameras nearby`);because FlockCamera and OverpassResponse are defined interfaces, typescript catches you immediately if you try to read a field that isn't there, or forget that manufacturer and direction can be undefined.
a few notes if you build on this:
- coverage is only as good as volunteer mapping in your area; a blank result doesn't mean no cameras, it means none have been logged yet.
- be a good citizen of the overpass api: it's a shared public resource, so cache results and don't hammer it in a tight loop.
- if you want a maintained UI instead of rolling your own, deflock's own map and the deflock-app mobile client both sit on top of the same OSM data.
conclusion
mapping this stuff doesn't make the cameras go away. but it turns "trust us" into something you can actually verify, and that's usually the first step toward a city council vote instead of a permanent quiet installation.
if you actually want them gone, the map alone won't do it. flock contracts get approved and renewed at the city or county level, so call or email your city council, your county commissioners, or your local public records office and ask for the contract and operating policies.
