scroll · 2026-05-13 · ~5 min · live data

Medic-unit load

50 medic-equipped stations cover 3,910 EMS calls — roughly 0.2 for every fire PFD answers. Where the call volume actually lands, and where the workload doesn't.

PFD runs both fire and EMS. The medic units — the white rigs with the red crosses — live alongside the engines and ladders, but only at a subset of stations. 50 of the city's fire stations house a medic unit; the others lean on the medics next door.

This is the geography of EMS coverage — the placement of medic-equipped stations across the city. The Fire_Dept_Facilities layer doesn't publish coverage radii, so we describe what the dots show: concentration in the central and river-ward zips, scattered placement across the larger Northeast and Northwest areas.

The marigold bins are EMS dispatches by zip. 3,910 calls since 2024 — and that's just the Rescue & EMS category; other categories (false alarm, good intent, service call) drag PFD into countless additional non-fire runs.

The EMS load doesn't track the medic-station map. Some zips with no nearby medic generate enormous volume; some heavily-medic'd zones in Center City run remarkably quiet.

Zoom in on 19104 — the busiest EMS zip in the city. 390 calls in a single zip code. The same zips that top the fire ranking show up at the top of the EMS ranking — see Where Philly burns for fires and The Narcan map for overdose response in those same zips.

Now flip the framing. Same zips, same map — but each zip is divided by the number of medic-equipped stations within roughly a mile and a half. Center City shrinks: small dense zips with three medics nearby don't actually generate much work for any one of them. Outer zips swell: a single medic in a sparse-coverage area carries the full load alone.

The "busiest zip" and the "most-stretched medic zone" aren't the same map. Coverage decisions made decades ago decide which zip's emergency goes to a medic five blocks away vs. fifteen.

And the per-station view. Cobalt dots resize by estimated EMS load — nearest-zip assignment, just like the fire-station story. The medics in the busiest service areas carry the lion's share of citywide EMS volume. Citywide, EMS dispatches outpace fires by roughly 0.2-to-1.

That ratio is the actual job description. PFD's official name still leads with "Fire," but the workload tells a different story.

50 medic-equipped stations
PFD incidents by category · since 2024
025K50K75K100KFalse Alarm & False Call: 60,54261KGood Intent Call: 23,37923KFire: 17,88718KHazardous Condition (No Fire): 10,78011KService Call: 5,7885.8K?: 4,8844.9KFalse Alarm & False CallGood Intent CallFireHazardous Condition (No Fire)Service Call?

Profiles · EMS vs. fire by neighborhood

For each of the four busiest EMS regions, the EMS dispatch count next to the fire-only count. Where they diverge is where the "fire department" name is most misleading.

Center City

19107

EMS dispatches
1,306
Fire dispatches
1,169
EMS-to-fire ratio
1.1×
Busiest zip in Center City: 19107 (385)

West Philly

19104

EMS dispatches
763
Fire dispatches
2,240
EMS-to-fire ratio
0.3×
Busiest zip in West Philly: 19104 (390)

North Philly

19122

EMS dispatches
643
Fire dispatches
3,758
EMS-to-fire ratio
0.2×
Busiest zip in North Philly: 19122 (169)

Northeast Philly

19124

EMS dispatches
342
Fire dispatches
3,412
EMS-to-fire ratio
0.1×
Busiest zip in Northeast Philly: 19124 (102)

Data Sources

Primary datasets: Philadelphia Fire Department stat360_fire_incidents filtered to incident_type_category = '3 - Rescue & Emergency Medical Service Incident', and Fire_Dept_Facilities filtered to medic-housing stations. Both ArcGIS Feature Services. Frozen at deploy (2026-05-13).

Queries: incidentsGroupByUrl('postal_code', EMS_WHERE) for EMS dispatches by zip, incidentsGroupByUrl('postal_code', FIRE_WHERE) for the fire comparison, and facilitiesUrl() for the station markers. SQL/URL builders in src/lib/data/datasets/philly-fire.ts. Zip → neighborhood rollup: src/lib/data/static/philly/zip-to-neighborhood.json.

Methodology & caveats: No EMS-only feed and no per-medic-dispatch fields. The "per medic in coverage" and "estimated runs per station" calculations are radius/nearest proxies — see data we'd like to find for the gap. The story does not join poverty, overdose, or vacancy data — references to those patterns are cross-links to other stories that work from their own datasets, not claims computed inside this one.