How It Works

A plain-English walkthrough of where Seattle Breaking's data comes from and how we display it.

The single most important thing to understand about Seattle Breaking is that we do not gather any new data. Every incident on the live feed comes from a dataset that the City of Seattle already publishes to anyone with an internet connection. Our role is to fetch it, clean it, categorize it, drop it on a map, and refresh the view every thirty seconds. That is the entire pipeline.

The two data sources

Seattle Breaking pulls from two named, public datasets hosted on the Seattle Open Data portal:

Both datasets use the Socrata Open Data API, which is the standard format the City uses for its public datasets. We send a query every minute asking for the most recent two hundred events from each feed and merge them into a unified list sorted by time.

How we categorize incidents

The upstream feeds use dozens of free-text incident-type strings — things like "Aid Response", "Auto Fire Alarm", "MVA Freeway Block", "Trespass - Disturbance", and so on. Most readers don't want to sort through that many labels. We collapse everything into six visual categories that match the colored map pins:

Categorization is rule-based and deterministic, not machine-learned. The exact rules are visible in the open-source lib/incidents.js file in our repository. If you disagree with a specific categorization choice, the rules are easy to inspect and easy to argue about — that's the point of keeping them simple.

On top of category, we tag a small number of incidents with a severity flag — "high" or "elevated" — based on type strings like "structure fire", "working fire", "shooting", or "stabbing". This is purely a display hint, not an authoritative severity rating. The Seattle Fire and Police Departments have their own internal priority systems and we do not have access to them.

How fresh is the data?

The fire feed typically lags real life by 1–3 minutes. The police feed typically lags by several hours because SPD events are released after initial triage — that's a choice the City makes about its dataset, not something we can speed up. We re-query both feeds every minute and re-render the page on the client every thirty seconds, so the freshest version of upstream data is usually on screen within ninety seconds of the City publishing it.

If our backend cannot reach the upstream feeds — for example, during a Socrata outage — the status indicator in the header changes to "DEGRADED" or "OFFLINE" and the most recent successful pull stays on screen.

What we strip out

Both upstream datasets are pre-redacted by the City of Seattle. They do not contain caller names, victim names, suspect names, witness names, or first-responder names. They also do not contain unit numbers, badge numbers, dispatch transcripts, or audio. We do not have access to any of those fields and we make no attempt to obtain them.

Addresses are shown at the block level (e.g., "1500 Block of 1st Ave") when SPD provides them that way, and at the dispatch-recorded address when SFD provides them that way. Latitude and longitude are shown at the precision the City publishes — typically four decimal places, which corresponds to roughly an 11-meter accuracy.

Optional scanner audio

For users who want to listen to live dispatch traffic, the map panel can optionally embed an audio stream from OpenMHz, a community-run scanner-audio archive. OpenMHz is not affiliated with Seattle Breaking or with the City of Seattle. Audio is provided "as is" by the upstream community. Audio playback is opt-in and only loads when the operator has configured a specific system code.

Known limitations

Some limitations worth knowing before you draw any conclusions from the data:

Open source

The entire pipeline — data fetching, categorization rules, severity tagging, and rendering — is a few hundred lines of JavaScript. We are happy to share the source on request and intend to publish it under a permissive license once we've tidied a few rough edges. For now, write to editor@seattlebreaking.com if you'd like to inspect the code.

This is not a 911 substitute

It really isn't. The data is delayed. The categorizations are simplified. The site goes offline sometimes. If you have an active emergency, call 911. Seattle Breaking exists to provide context after the fact, not to support real-time decisions about personal safety.

← Back to the live feed