Open Water Quality Dataset
Free U.S. home safety and water quality data by ZIP code: violations, source-qualified lead measurements, copper action-level exceedance flags, radon zones, and Home Safety Scores. Each source follows its own reporting period.
Download
Dataset Fields
The 55-field table below is rendered from the metadata shipped with the current dataset. One row is published per ZIP code. A null value means the accepted source contract does not cover or measure that field for the ZIP; it is not a measured zero or false.
| Field | Description |
|---|---|
| zip | 5-digit ZIP code |
| city | City name |
| state | 2-letter state abbreviation |
| water_data_available | true only when this ZIP has a directly mapped EPA public water system in the exported snapshot; false means all water/system/CCR/enforcement-derived fields are unavailable, not zero. This field does not assert source freshness. |
| system_name | Primary water system name |
| pwsid | EPA Public Water System ID |
| population | Population served |
| water_source | SW=Surface Water, GW=Groundwater |
| water_violation_measurement_status | measured when the accepted ECHO roster covers every directly mapped PWSID; null when direct water evidence is unavailable |
| water_violation_source_quarter | Accepted ECHO submission quarter, for example 2026Q2 |
| water_violation_from_year | Inclusive lower record-year bound for accepted violation evidence |
| water_violation_through_year | Inclusive upper record-year bound for accepted violation evidence |
| total_violations | All accepted violation records inside the explicit inclusive record-year window |
| health_violations | Accepted records classified as health-based inside the explicit window |
| resolved_violations | Accepted records with resolved status |
| archived_violations | Accepted records with archived status; excluded from current noncompliance |
| addressed_violations | Accepted records with addressed status; included in current noncompliance under this source contract |
| unaddressed_violations | Accepted records with unaddressed status; included in current noncompliance |
| current_noncompliance_violations | addressed_violations + unaddressed_violations |
| resolved_health_violations | Health-based subset with resolved status |
| archived_health_violations | Health-based subset with archived status |
| addressed_health_violations | Health-based subset with addressed status |
| unaddressed_health_violations | Health-based subset with unaddressed status |
| current_noncompliance_health_violations | addressed_health_violations + unaddressed_health_violations |
| unresolved_violations | Compatibility alias equal to current_noncompliance_violations |
| violation_systems | JSON array of measured per-PWSID count partitions that conserve to the ZIP totals |
| recent_violations | JSON array of recent accepted events with identity, PWSID, year, date, category, exact four-state status and health classification |
| lead_level_mg_l | Source-reported 90th percentile lead level normalized to mg/L only when the source unit is explicit; null if no accepted measurement. Values at or above 1 mg/L are held for source review and are never auto-rescaled. |
| copper_action_level_exceedance | true = a copper action-level (CU90) exceedance record exists for this ZIP; null = no exceedance record on file / unknown (NOT clean). EPA transmits no verified copper unit, so no concentration is published. |
| radon_zone | EPA radon zone (1=highest, 3=lowest), null if no data |
| home_safety_score | Home Safety Score model output from 0 through 100; null when required score coverage is incomplete |
| home_safety_grade | A/B/C/D/F letter grade; null when the score is unavailable |
| home_safety_series | Stable score-series identifier |
| home_safety_model_version | Semantic model version |
| home_safety_registry_version | Append-only vertical registry version |
| home_safety_component_scores | Object containing every model component score or null |
| home_safety_component_status | Object containing observed, missing, or insufficient_coverage status for each component |
| home_safety_domain_scores | Object containing each equally weighted model-domain score or null |
| home_safety_coverage | Reconciled score-availability counts and missing component/domain IDs |
| latitude | ZIP centroid latitude |
| longitude | ZIP centroid longitude |
| contaminant_count | Number of distinct health-based contaminants; null when no directly mapped EPA water system is available |
| health_contaminant_names | Semicolon-separated list of health-based contaminant names; null when no directly mapped EPA water system is available |
| ccr_contaminant_count | Number of contaminants reported in Consumer Confidence Report (CCR), null if no CCR data |
| ccr_violation_count | Evidence-bound CCR violation count. 0 is emitted only for an accepted measured-zero claim; null means unknown/unaccepted. |
| ccr_violation_status | measured_zero, reported_nonzero, or unknown under the evidence-bound CCR claim contract. |
| ccr_violation_report_year | Exact report year for an accepted CCR violation claim; null when unknown. |
| ccr_violation_scope | Named source scope for an accepted CCR violation claim; null when unknown. |
| ccr_violation_claim | Full evidence-bound CCR violation claim object. |
| ccr_lsl_claim | Field-level evidence-bound CCR lead-service-line claim object; missing counts remain unknown, never zero. |
| enforcement_action_count | Total EPA/state enforcement actions against the water system. null = enforcement data not available for this ZIP (NOT measured-zero). |
| enforcement_health_violations | Number of health-based violations from enforcement records. null = enforcement data not available for this ZIP (NOT measured-zero). |
| has_active_issues | Whether the exported source record flags active enforcement or violation issues (true/false). null = enforcement data not available for this ZIP (NOT measured-false). |
| boil_water_advisories | Reserved. Always null until a source-bound authoritative advisory feed with issue/lift timestamps is admitted. |
| ccr_accepted_evidence | Source-bound accepted CCR period, explicit exact-date absence, typed lead result, copper exceedance flag with concentration withheld, and evidence ref/SHA-256; null when no accepted binding exists. |
Usage Examples
License: CC-BY-4.0
This dataset is released under the Creative Commons Attribution 4.0 International license. You are free to share and adapt the data for any purpose, including commercial use, as long as you provide attribution to ZipCheckup.com.
Required attribution: "Data sourced from ZipCheckup.com, based on EPA SDWIS data."
Also Available On
Water quality data is sourced from the U.S. EPA Safe Drinking Water Information System (SDWIS). Radon zone data comes from the EPA's county-level radon potential map. Home Safety Scores are a ZipCheckup composite metric - full methodology here.
Want a full water safety report for your ZIP code?
Check Your ZIP Code