About SlugMeter
Mapping parking enforcement
in Santa Cruz
A real-time map and 6-year historical archive of ~218,000 parking citations, built as a UCSC data scraping class project.
How it works
The City of Santa Cruz publishes parking citation data through an online AIMS (Automated Issuance Management System) portal where anyone can look up a citation by its number.
Citation numbers follow a predictable format: SC{device} {year}{sequence}. For example, SC3 2600042 is the 42nd citation from device SC3 in 2026.
My scraper checks for new citations every few minutes by querying the next expected sequence number for each of the 8 active enforcement devices. When new citations are found, they get geocoded and stored in a database, and appear on the live map in real-time via WebSocket push.
Enforcement devices
The city operates 8 enforcement devices labeled SC1 through SC8. These are hardware units, not individual officers.
SC8 is notably the busiest, accounting for roughly 25% of all tickets. Its volume suggests it is likely a vehicle-mounted License Plate Recognition (LPR) system, while the others appear to be handheld units used by parking enforcement officers on foot.
Data & Privacy
No personally identifiable information (PII) is stored. License plate numbers and VINs are explicitly stripped before any data enters my database. I only store citation details that are already publicly available: location, time, violation type, fine amount, and vehicle make/model/color.
All data comes from the City of Santa Cruz's public AIMS portal. Parking citation data is public record under the California Public Records Act (CPRA).
I scrape at a low rate (a few requests per minute) with a descriptive User-Agent header to be respectful of city infrastructure.
Security recommendations for the City
This project exists because the AIMS portal has several architectural weaknesses that make bulk data collection trivial. In the spirit of transparency, here's what the city could do to prevent this:
1. Use non-sequential citation IDs
Citation numbers follow a predictable SC{device} {year}{sequence} format, making it trivial to enumerate every citation ever issued. Switching to random or UUID-based identifiers would make bulk enumeration infeasible.
2. Require proof of ownership for lookups
Currently, anyone can look up any citation by number alone and receive full details. Requiring the license plate or VIN in addition to the citation number would ensure only the vehicle owner can access their citation, a common pattern used by other municipalities.
3. Implement rate limiting
The AIMS portal has no apparent rate limiting. A simple per-IP throttle (e.g. 10 lookups/minute) or progressive delays would make bulk scraping orders of magnitude slower without affecting normal users who look up one or two citations.
4. Add CAPTCHA or bot detection
Even a basic CAPTCHA on the lookup form would prevent automated scripts from querying the system. More sophisticated approaches like browser fingerprinting or behavioral analysis could detect automated access patterns without impacting the user experience.
5. Separate public and private data
While citation metadata (location, time, violation type) is public record, the portal also exposes vehicle details in the same response. Splitting the API to return only the minimum needed for payment lookup would reduce the surface area of exposed data.
None of these are exotic mitigations. Most modern citation portals already implement several of them. The combination of predictable IDs, no authentication, and no rate limiting is what makes a project like SlugMeter possible in an afternoon.
Data Coverage
The database contains ~218,000 citations spanning 2019–2026, scraped from all 8 enforcement devices. Of these, roughly 89% are geocoded and appear on the map. The remaining ~11% cannot be placed on a map because their locations reference parking lot space numbers (e.g. “LOT 3 SPACE #3042”) or intersection formats that geocoding services cannot resolve.
These ungeolocated citations are still included in all aggregate statistics, charts, and the Insights page. They are only absent from the map view. The citation search on /citations shows all records regardless of geocode status.
Frequently asked questions
- What is SlugMeter?
- SlugMeter is a real-time parking citation tracker for the City of Santa Cruz, California. It maps where and when parking tickets are issued, with a searchable archive of over 218,000 citations dating back to 2019.
- Where does the data come from?
- All data comes from the City of Santa Cruz's public AIMS (Automated Issuance Management System) portal. Parking citation data is public record under the California Public Records Act (CPRA). My scraper checks for new citations every few minutes.
- Is personal information collected?
- No. License plate numbers and VINs are explicitly stripped before any data enters my database. I only store publicly available citation details: location, time, violation type, fine amount, and vehicle make/model/color.
- How often is the data updated?
- The live map updates in real-time. New citations appear within minutes of being issued via WebSocket push. Historical data is continuously backfilled and currently covers 2019 through 2026.
Tech stack
Next.js 15
Supabase
WebSockets
MapLibre GL
Recharts
Nominatim
Vercel
Tailwind v4
