Pennsylvania Radon - Test Results & Mitigation Systems
Pricing
from $0.03 / 1,000 pennsylvania radon records
Pennsylvania Radon - Test Results & Mitigation Systems
Pennsylvania home radon data (public open data): 3.33M test results (1985-2026) with the reading in pCi/L, county, municipality, building type, floor tested and test method; plus 523k mitigation systems with the remediation installed and its cost. Filter by county, floor, method or level.
Pricing
from $0.03 / 1,000 pennsylvania radon records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Two Pennsylvania radon registers from the Department of Environmental Protection, published as public open data on data.pa.gov - every recorded radon measurement (homes, schools and non-residential buildings), and every mitigation system installed to fix one.
Low cost
From $0.00005 per record, down to $0.00003 at Gold. Pay only for the records you actually receive - the whole register stays queryable, you are never billed for the scan behind it.
What you get
Pick a register with corpus:
corpus=testing (default) - radon test results
3.33 million measurements, from 1986 through July 2026. 99.9998% carry a real numeric reading in pCi/L.
- Where - county, municipality, ZIP
- What building - purpose (Residential / School / Non-Residential), building type and sub-type
- The test - the floor tested, the test method, and the two test dates
- The result - the reading in pCi/L
corpus=mitigation - mitigation systems
~527k systems, through October 2026.
- Where - county, municipality, ZIP and coordinates (the coordinates are county-level centroids, not site-level locations)
- What building - purpose, building type, floor tested
- The fix - the remediation system installed, whether the test was pre- or post-mitigation, and the system cost
- The reading - the radon level at that system's test
The two registers cannot be joined
Their identifiers live in different namespaces - a testing row carries a
radon_data_identifier in roughly the 5-11 digit range plus a small integer
result id; a mitigation row carries a much shorter dataidentifier and a
formatted result id (31646-0584-1-2). No key is shared between the two
registers. They are offered side by side as two ends of one story - a
measurement and the fix installed after it - never as linkable.
Filter it
- County, municipality, ZIP -
county="Allegheny",municipality="Pittsburgh",postalCode="19148". - Radon level -
minValue=4finds every result at or above the EPA action level of 4 pCi/L (1,123,051 of 3.33M test results). - Floor, building purpose, test method.
- Remediation -
remediationSystem="Sub-Slab Ventilation",minCost=1500(mitigation register). - Date range on the test end date, and last-N-days.
Example inputs
Tests at or above the EPA action level - the headline query.
{ "corpus": "testing", "minValue": 4, "maxResults": 50 }
One county's radon picture - filter and aggregate in one register.
{ "corpus": "testing", "county": "Montgomery", "mode": "aggregate", "groupBy": "buildingType" }
What mitigation costs - the systems installed, and their cost.
{ "corpus": "mitigation", "minCost": 1500, "maxResults": 50 }
Or roll it up
Set mode=aggregate for a rolled-up count by county, building
purpose, building type, floor tested, test method,
remediation system or device type. Dimensions differ per register;
remediationSystem/deviceType are mitigation-only and testMethod is
testing-only (the mitigation register stores a bare equipment code with no
legend, so that field is left blank there). Every group comes back - not cut
off by maxResults.
Then follow the money and the risk
- Every home radon reading in a county, and the share above 4 pCi/L.
- Which remediation systems are installed where, and at what cost.
- Radon by building type, floor and test method - basement vs. first floor.
- The mitigation record for a ZIP code, with county-level coordinates.
Example output
One mitigation system - corpus=mitigation, county=Allegheny:
{"platform": "pa-radon","source": "pa-radon-mitigation","mode": "rows","groupKey": "","groupCount": "","groupBy": "","dataIdentifier": "517274","testResultIdentifier": "372377-3322-1-2","county": "Allegheny","municipality": "IMPERIAL","postalCode": "15126","buildingPurpose": "Residential","buildingType": "2-STORY","buildingSubType": "","floorTested": "BASEMENT","testMethod": "","measureValue": "0.5","testStartDate": "","testEndDate": "2026-06-20T00:00:00.000","dataSource": "Pennsylvania Department of Environmental Protection","deviceType": "","remediationSystem": "ACTIVATE A PASSIVE SYSTEM","mitigationTestType": "POST","mitigationYear": "2026","systemCost": "775","latitude": "40.46735543","longitude": "-79.98619843","corpus": "mitigation","sourceUpdatedAt": "2026-10-13"}
mode=aggregate, groupBy=county (testing) - one count row per county:
Montgomery 391,126Allegheny 356,402Bucks 292,080Chester 261,523Delaware 193,590Philadelphia 193,339
Notes on the data, from the source
- Readings are in pCi/L (picocuries per litre). The EPA action level is 4 pCi/L; the value is returned exactly as measured.
- Two registers, not one table. See above - they cannot be joined.
- Mitigation coordinates are county-level centroids. The source carries only
67 distinct points for ~527k systems, so use
countyfor geography; the coordinates do not identify a site. deviceTypeis sparse on the mitigation register - it is recorded on about a quarter of rows, so its roll-up returns a large(blank)group.- Two columns in the testing register are dead and are not exposed. The mitigation-system indicator holds a single value across all 3.33M rows, and the census tract is filled on 6.6% of rows. Exposing either would promise a filter that cannot narrow anything.
- "Not Collected" and "Unknown" are values the source publishes, not missing data.
- The registers are refreshed annually (the State's own update frequency),
not daily;
sourceUpdatedAtcarries the dataset's own refresh date.