scroll · ~5 min · live data

Where Philly burns

0 stations, 0 incidents, and the zip codes at the center of it all. A scroll-driven look at what the Philadelphia Fire Department actually responds to since 2024.

On any given day the Philadelphia Fire Department gets called to roughly 180 incidents. Since the start of 2024, that adds up to 0 dispatches across the city. The map shows where they landed, binned by zip code.

One zip carries an outsized share of the citywide fire load — the per-zip distribution is far from uniform. (Loading the per-zip breakdown; if this persists, check the data table below.)

And the response side. The cobalt dots are 0 fire stations from the Fire_Dept_Facilities layer; underneath them, the city's 0 battalion-boundary polygons outlined in ink — the operational geography that decides which station rolls first on any given alarm.

Hover a dot to see what's housed there. Each station carries a mix of apparatus: an engine, sometimes a ladder truck, frequently a battalion chief, often a medic unit, and a long tail of specialty rigs (PIPE units for high-rises, foam for fuel fires, hazmat, decon, marine). About 0 of 0 operational stations house a medic unit; 0 carry specialty apparatus beyond engine and ladder.

Stations are roughly evenly distributed by area; the underlying fire load — the brick bins beneath — is anything but. The PFD's EMS division has been called the busiest in the country; the Narcan-administration data tracked alongside fire incidents is its own story, for another scroll.

All PFD incidents · 0 since 2024 · zip-binned

View underlying data

Counts per category, fetched at runtime via the Cloudflare Worker proxy.

Incident typeCountShare of all incidents
Total0100%

Property-use breakdown for actual fires.

Property useFiresShare of fires
Total0100%

Data Sources

Primary datasets: Philadelphia Fire Department stat360_fire_incidents, Fire_Dept_Facilities, and FIRE_BattalionBoundaries — all ArcGIS Feature Services. Updated quarterly by PFD; this story fetches them at runtime through the Cloudflare Worker proxy and KV-caches aggregates. A live, queryable /datasets/philly-fire detail page is coming in a follow-up.

Queries: incidentsGroupByUrl('postal_code') aggregates all dispatches by zip; the same helper filtered with the category-1 FIRE_WHERE clause produces the fire-only zip breakdown. incidentsGroupByUrl('incident_type_category') drives the category split bars. facilitiesUrl() and battalionsUrl() fetch the station markers and battalion polygons. All defined in src/lib/data/datasets/philly-fire.ts; zip centroids come from static/philly-zips.geojson.

Methodology & caveats: Bin layer is zip-aggregated, not hex-binned. The 56 zips in the fire dataset include a handful outside the city's standard 48-zip set (industrial edges, Navy Yard) — those are dropped from the map but counted in the data table totals. PFD's public-facing "63 stations" figure is a narrower count than the 0 returned by the Fire_Dept_Facilities layer; the layer is the authoritative dataset, so we report what it gives us.