RCRA Corrective Action Cleanup Timeline & Overdue Milestones avatar

RCRA Corrective Action Cleanup Timeline & Overdue Milestones

Pricing

from $5.50 / 1,000 cleanup records

Go to Apify Store
RCRA Corrective Action Cleanup Timeline & Overdue Milestones

RCRA Corrective Action Cleanup Timeline & Overdue Milestones

Track RCRA corrective-action cleanups from EPA RCRAInfo: milestone dates, scheduled vs actual, schedule slip, overdue milestones, remedy status, engineering and institutional controls, and confirmed release media per facility.

Pricing

from $5.50 / 1,000 cleanup records

Rating

0.0

(0)

Developer

Kyle Maloney

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

RCRA Corrective Action Cleanup Timeline & Overdue Milestone Monitor

Turn EPA RCRAInfo's Corrective Action module into a cleanup timeline you can act on: where a hazardous-waste cleanup actually stands, which milestones EPA scheduled and never recorded as finished, how far a schedule has slipped, which media are contaminated, and which institutional and engineering controls will bind a future owner.

Most RCRA products stop at a binary CORRACTS flag - "this facility has a corrective action". That tells you a cleanup exists. It does not tell you whether the remedy was ever selected, whether construction was ever completed, or that a remedy decision scheduled for 1998 still has no completion date on file. This actor sells that record.

Source: EPA RCRAInfo bulk export, Corrective Action (CA) module - CA_EVENT (193,658 rows), CA_AREA (30,310), CA_AREA_EVENT (266,397), CA_AUTHORITY (13,047), CA_EVENT_AUTHORITY (179,271) and EPA's own 1,809-entry event-code dictionary, refreshed weekly. Facility names and addresses come from the EPA Facility Registry Service. Keyless, and the sanctioned bulk path rather than EPA's robotic-query- restricted search endpoints.

Who it is for

  • Phase I / Phase II ESA consultants - a RCRA corrective action next door is an ASTM E1527-21 line item, but "is it finished, and when" is what determines whether it is a recognised environmental condition today.
  • CRE lenders, acquirers and insurers pricing remediation risk and timeline. cleanup_stage, past_due_milestone_count and institutional_controls_established_count are the three columns that move a number in a deal model.
  • Environmental counsel and consultants tracking a client's or an adversary's cleanup schedule, including the legal authority the cleanup is being run under.
  • Redevelopment and brownfield teams - EPA's ready_for_anticipated_use determination is the reuse signal, and it is published per facility.

Example input

{
"state": "CO",
"outputMode": "facility",
"onlyWithPastDueMilestones": true,
"includeFacilityDetails": true,
"maxResults": 60
}

Look up named facilities anywhere in the country:

{
"state": "ANY",
"handlerIds": [
"COD007079478",
"COD056828940"
],
"outputMode": "both",
"maxResults": 200
}

state is required, so a bare {} call is rejected before the run starts and can never begin a national scan. state: "ANY" is accepted only together with handlerIds.

What a row looks like

Eaton Aviation Corporation, 2501 Dallas St, Aurora CO (COD007079478), from the CSV-2026-08-16T03-00-00-0400 export:

  • 67 corrective-action events on file, running 1988 to 2019
  • a CA400 REMEDY DECISION scheduled 1998-10-28 with no completion date in RCRAInfo - past due by more than 10,000 days
  • and, in the same record, a separate CA400 that was completed on 2001-02-22

Both facts ship on the row. Neither cancels the other, and the actor does not pick one.

The stale-snapshot problem, and what this actor does about it

A superseded RCRAInfo bulk-export URL does not 404. Measured 2026-08-18: the previous week's path answered HTTP 200 with 4,548,121 bytes, structurally identical to that week's 4,554,232-byte file. A hard-coded path therefore keeps working forever while serving an ever-older snapshot, and every request looks healthy.

So: the export run is resolved live on every run from EPA's own manifest, its age is asserted against maxSnapshotAgeDays, the module URL is cross-checked against a second EPA endpoint, the downloaded byte count is asserted equal to the size EPA declares, and rcrainfo_run_id, rcrainfo_created_date and data_as_of ship on every row. Pinning a superseded run with pinRunId fails the run rather than quietly serving it.

Live drift gate

Ten probes run before a single billable row is emitted. Each has its own error boundary, and each reports one of three outcomes - pass, fail (it completed and measured something wrong) or unavailable (it could not complete at all).

ProbeRoleWhat it asserts
manifest_infoload-bearingEPA publishes a current export run, no older than maxSnapshotAgeDays
snapshot_pinload-bearinga pinned run is still the run EPA publishes
manifest_modulesload-bearingthe Corrective Action module exists and belongs to that run
module_downloadload-bearingbytes received equal the fileSize EPA declares
archive_structureload-bearingthe zip-of-zips holds every required table plus METADATA.txt
table_floorsload-bearingevery table clears its row-count floor and parsed rows equal the count EPA declares in METADATA.txt
header_contractload-bearingno column was renamed or dropped
dictionary_canaryload-bearingCA050, CA200, CA400, CA550RC, CA725YE, CA750YE, CA900CR and CA999NF still carry their recorded meanings
positive_canaryload-bearinga known busy facility still returns its events, and a known past-due milestone is still on file
negative_controlcorroboratingan impossible handler ID and an impossible location both return zero rows

Any fail, or any load-bearing probe that could not complete, fails the run with zero rows and zero billing. Only the corroborating probe may be lost while the run proceeds, and it is then disclosed in drift_gate_status, drift_probes_unavailable and drift_gate_note.

How this actor reads EPA's data honestly

  • The event-code dictionary is keyed on (owner, code), not code. 212 of the 1,076 corrective-action codes carry more than one meaning depending on which agency filed them - CA103 is "ADMINISTRATIVE FINDING AGAINST FACILITY" under one owner and "CURRENT CONDITION REPORT RECD" under another. Decoding on the bare code publishes a different event than the one on file. With the composite key, 193,658 of 193,658 national events resolve exactly; an unresolved pair keeps a null description rather than borrowing another owner's.
  • Release indicators are three-valued. AIR RELEASE IND is blank on 89.4% of national areas. null and not_reported mean EPA published nothing; false and no mean EPA checked and recorded none. They are never collapsed.
  • Date sentinels are refused, and the raw value is kept. The national export carries 19010101 as an actual-date sentinel, a 19350101, and schedule pairs exactly a century apart (1952 original / 2052 revised). Reading those as real produces a 36,525-day "schedule slip". Unusable dates become null with the raw value preserved in a *_raw column and the reason in date_quality_flags.
  • A missing value is never zero. Acreage is published on 13% of areas, so reported_acreage_total is null where nothing was reported and always ships beside reported_acreage_area_count.
  • A completion that was never recorded is stated as such. past_due_milestone_count means "EPA or the state records no completion for a milestone whose scheduled date has passed". That can mean the milestone is genuinely outstanding, or that a completion was never entered. The actor says which question it is answering rather than asserting the stronger claim.
  • cleanup_stage is gated on the ladder applying at all. A facility whose events use only state-specific codes gets cleanup_stage: null and cleanup_stage_basis: "state_specific_codes_only", with cleanup_complete and corrective_action_open both null - never a fabricated "earliest stage" and never a confident "still open".
  • Facility names come only from the RCRAINFO program record. One EPA identifier can return several program rows with different names: COD007079478 resolves to EATON AVIATION CORPORATION under RCRAINFO and STANLEY AVIATION LANDFILL SITE under SEMS. Taking the first row would publish the Superfund site name as the RCRA handler's. Every other program seen is listed in frs_other_programs.

Pricing and failure behaviour

Billed on the automatic Result event - one emitted row, one billable record. maxResults is a hard cap on both rows and cost, enforced identically in every output mode - including both - by a single function every emitted row passes through. A run that cannot bound its own bill fails rather than emitting. A run that cannot answer emits nothing and bills nothing:

  • a missing or invalid state is rejected before the run starts (HTTP 400, nothing consumed);
  • a failing drift gate fails the run with a message naming the probe that broke;
  • a query that was well formed and simply matched nothing succeeds with zero rows and zero billing, and says so in the log.

Use as an MCP tool

This actor is callable by AI agents over mcp.apify.com. Billing is unchanged when it is called as a tool, and a run that cannot answer fails without billing.

{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/sse?actors=malonestar/epa-rcra-corrective-action-cleanup-monitor"
],
"env": {
"APIFY_TOKEN": "<your Apify token>"
}
}
}
}

Worked agent prompt:

For RCRA handler COD007079478, tell me what stage the corrective action has reached, whether any milestone is past due and by how long, and whether institutional controls are in place that would bind a buyer.

Output fields

The dataset declares 135 fields. Facility rows and event rows share one schema; record_type says which you are looking at, and fields that belong to only one mode are marked below. Every field tolerates null.

Identity and provenance

FieldTypeDescription
record_typestring | nullfacility for a per-handler cleanup rollup, event for a single decoded corrective-action event. One dataset can hold both when outputMode is "both".
handler_idstring | nullThe 12-character RCRAInfo handler identifier this record belongs to. Joins to EPA ECHO, RCRAInfo and to the rcra_ids field of epa-contaminated-site-screener.
activity_locationstring | nullTwo-character RCRAInfo activity location the event was filed under. Usually the state, but 94 national rows file under a location that differs from the handler-ID prefix, so this column is the authoritative one.
activity_location_namestring | nullPlain-English name of the activity location, including the non-state codes: Navajo Nation (NN), Trust Territories (TT) and the EPA administrative locations XH and XJ.
rcrainfo_run_idstring | nullThe RCRAInfo bulk-export run this row was built from, resolved live on every run from EPA's manifest. A superseded export URL still answers HTTP 200 with the older snapshot instead of 404ing, so this is the only way to know which week you are reading.
rcrainfo_created_datestring | nullTimestamp EPA created this export run.
rcrainfo_snapshot_age_daysinteger | nullHow old the export run was when this row was produced. RCRAInfo refreshes weekly; the run fails rather than publishing anything older than maxSnapshotAgeDays.
rcrainfo_snapshot_is_currentboolean | nullTrue when the export used is the one EPA is currently publishing. False only when a caller deliberately pinned a different run, which this actor refuses to serve.
ca_module_urlstring | nullThe exact S3 URL the Corrective Action archive was downloaded from, resolved from EPA's module manifest rather than constructed.
ca_module_bytesinteger | nullByte length of the downloaded archive, asserted equal to the fileSize EPA's manifest declares. A mismatch fails the run.
ca_module_statusstring | nullStatus of the RCRAInfo Corrective Action bulk module for this run. ok means the archive was downloaded, structurally verified and row-count reconciled against its own METADATA.txt.
data_as_ofstring | nullDate portion of the export creation timestamp - the vintage of every corrective-action fact on this row.
matched_facilities_totalinteger | nullHow many facilities matched the query before the maxResults cap was applied. Compare with the row count to see what a capped run left behind.
results_truncatedboolean | nullTrue when the maxResults cap stopped rows being emitted. A capped answer is never presented as a complete one.
drift_gate_statusstring | nullverified when every live drift probe passed, verified_degraded when only a corroborating probe could not complete. A failing gate emits no rows at all, so these are the only two values that can appear on a row.
drift_probes_verifiedstring | nullComma-separated names of the live probes that passed before any row was emitted.
drift_probes_unavailablestring | nullComma-separated names of probes that could not complete. Empty on a fully verified run.
drift_gate_notestring | nullHuman-readable disclosure when the run proceeded with a corroborating probe unavailable. null on a fully verified run.

Facility identification (EPA Facility Registry Service)

FieldTypeDescription
facility_namestring | nullFacility name from the EPA Facility Registry Service RCRAINFO record. null when the lookup was not requested, capped or unavailable - see site_lookup_status. Never taken from another EPA program at the same address.
facility_addressstring | nullStreet address from the EPA Facility Registry Service RCRAINFO record. null rather than guessed when the lookup did not resolve.
facility_citystring | nullCity from the EPA Facility Registry Service RCRAINFO record.
facility_statestring | nullState from the EPA Facility Registry Service. Can differ from activity_location, which is where the corrective-action file is administered.
facility_zipstring | nullPostal code from the EPA Facility Registry Service RCRAINFO record.
facility_countystring | nullCounty name from the EPA Facility Registry Service RCRAINFO record.
frs_registry_idstring | nullEPA Facility Registry Service registry identifier, the cross-program key that joins this facility to Superfund, TRI, ECHO and air/water permitting records.
epa_region_codestring | nullEPA region code the facility sits in, from the Facility Registry Service.
echo_facility_report_urlstring | nullDirect link to the EPA ECHO Detailed Facility Report for this facility, built from the FRS registry ID. null when no registry ID resolved.
frs_other_programsarray | nullEvery EPA program acronym the Facility Registry Service returned for this identifier, e.g. SEMS or BR. Reported because one identifier can carry a DIFFERENT facility name under a different program, and only the RCRAINFO row is used for facility_name.
site_lookup_statusstring | nullok, not_found, no_rcrainfo_record, lookup_truncated, filter_not_applied, unavailable, skipped_lookup_cap or not_requested. This is the null-versus-false contract for every facility_* field: null here never means "no such facility". unavailable means the FRS request could not complete, which is not evidence the facility is absent - EPA FRS flaps under concurrency and the same handler ID usually resolves on a later run. lookup_truncated means EPA FRS holds more program rows for this identifier than one request returns and none of the rows read was the RCRAINFO row, so absence could not be proven; no_rcrainfo_record is used only when the returned set is demonstrably complete, checked against efservice's own exact COUNT.

Cleanup status (facility rows)

FieldTypeDescription
cleanup_stagestring | nullFurthest COMPLETED rung of EPA's national corrective-action sequence for this facility, e.g. investigation_complete, remedy_decision, remedy_construction, process_terminated. null when nothing on the national ladder has been completed - see cleanup_stage_basis. Facility rows only.
cleanup_stage_rankinteger | nullOrdinal position of cleanup_stage, 1 to 18. Sortable measure of how far a cleanup has progressed. Facility rows only.
cleanup_stage_labelstring | nullHuman-readable label for cleanup_stage. Facility rows only.
cleanup_stage_datestring | nullCompletion date of the event that set cleanup_stage. Facility rows only.
cleanup_stage_basisstring | nullnational_milestone_ladder, ladder_milestones_scheduled_none_completed, or state_specific_codes_only. The third value means the state files this cleanup entirely under its own codes, so progress cannot be placed on the national ladder - reported instead of guessed. Facility rows only.
cleanup_completeboolean | nullTrue when EPA records performance standards attained (CA900) or the corrective-action process terminated (CA999). null - never false - when the facility uses only state-specific codes, because completion is then genuinely unknown. Facility rows only.
corrective_action_openboolean | nullThe inverse of cleanup_complete, gated the same way: null when completion status is unknown rather than assumed open. Facility rows only.
ca_event_countinteger | nullNumber of corrective-action events RCRAInfo carries for this facility. Facility rows only.
ca_event_completed_countinteger | nullEvents with a usable completion date. Facility rows only.
ladder_milestone_event_countinteger | nullEvents whose code is on EPA's national milestone ladder. Facility rows only.
state_specific_event_countinteger | nullEvents whose (owner, code) pair is not in the dictionary slice used for the national ladder. Facility rows only.
unresolved_event_code_countinteger | nullEvents whose (owner, code) pair could not be resolved in EPA's own dictionary. Should be zero; a non-zero value means EPA shipped a code it does not define. Facility rows only.
first_recorded_event_datestring | nullEarliest completion date across this facility's corrective-action events. null when nothing has been completed. Facility rows only.
last_recorded_event_datestring | nullMost recent completion date across this facility's events - the practical measure of whether a cleanup is still moving. Facility rows only.
years_since_last_recorded_eventnumber | nullYears between last_recorded_event_date and today. A large value on an open cleanup is the dormancy signal. Facility rows only.
events_with_date_quality_flagsinteger | nullHow many of this facility's events carried a date EPA published that could not be used - a sentinel, a malformed value or a pre-RCRA year. Facility rows only.

National milestone dates (facility rows)

FieldTypeDescription
rfa_completed_datestring | nullDate the RCRA Facility Assessment was completed (CA050). Facility rows only.
investigation_neededstring | nullEPA's CA070 determination: investigation_necessary or investigation_not_necessary. null when no determination is on file. Facility rows only.
investigation_imposed_datestring | nullDate the RCRA Facility Investigation was imposed (CA100). Facility rows only.
investigation_complete_datestring | nullDate the facility investigation was completed (CA200). Facility rows only.
cms_complete_datestring | nullDate the corrective measures study was completed (CA350). Facility rows only.
remedy_decision_datestring | nullDate the remedy decision was issued (CA400). null when RCRAInfo records no completed remedy decision - which, paired with a past-due CA400 milestone, is the classic behind-schedule cleanup. Facility rows only.
remedy_design_approved_datestring | nullEarliest completion of corrective-measures design approval or CMI workplan approval (CA450 / CA500). Facility rows only.
remedy_construction_statusstring | nullEPA's CA550 determination: remedy_constructed, no_remedy_constructed, operating_facility_remedy_deferral, or recorded_without_outcome_code. null when no determination is on file. Facility rows only.
remedy_construction_datestring | nullDate of the latest CA550 remedy-construction determination. Facility rows only.
stabilization_construction_datestring | nullDate stabilization or interim-measure construction was completed (CA650). Facility rows only.
human_exposures_controlledstring | nullEPA environmental indicator CA725: yes_human_exposures_controlled, more_information_needed, facility_does_not_meet_definition, no_control_measures_needed or previous_determination_not_applicable. null when EPA has made no determination. Facility rows only.
human_exposures_controlled_datestring | nullDate of the latest CA725 determination. Facility rows only.
groundwater_migration_controlledstring | nullEPA environmental indicator CA750: yes_groundwater_migration_controlled, more_information_needed, no_release_to_groundwater, facility_does_not_meet_definition or previous_determination_not_applicable. null when no determination exists. Facility rows only.
groundwater_migration_controlled_datestring | nullDate of the latest CA750 determination. Facility rows only.
ready_for_anticipated_usestring | nullEPA's CA800 determination: ready_for_anticipated_use or not_ready_for_anticipated_use. The redevelopment signal for a CRE buyer. null when no determination is on file. Facility rows only.
ready_for_anticipated_use_datestring | nullDate of the latest CA800 determination. Facility rows only.
performance_standards_attainedstring | nullEPA's CA900 determination: attained_controls_required or attained_no_controls_necessary. The first of the two ways a RCRA corrective action formally finishes. Facility rows only.
performance_standards_attained_datestring | nullDate performance standards were recorded as attained. Facility rows only.
ca_process_terminatedstring | nullEPA's CA999 determination: no_further_action, remedial_activities_complete, or terminated. Facility rows only.
ca_process_terminated_datestring | nullDate the corrective-action process was recorded as terminated. Facility rows only.

Schedule slip and overdue milestones (facility rows)

FieldTypeDescription
past_due_milestone_countinteger | nullHow many corrective-action milestones have a scheduled date in the past and no completion recorded in RCRAInfo. Read honestly: that can mean the milestone is genuinely outstanding OR that a completion was never entered. Facility rows only.
past_due_oldest_codestring | nullEvent code of the longest-outstanding milestone. Facility rows only.
past_due_oldest_descriptionstring | nullEPA's description of the longest-outstanding milestone. Facility rows only.
past_due_oldest_scheduled_datestring | nullThe effective scheduled date of the longest-outstanding milestone - revised date if one exists, otherwise the original. Facility rows only.
past_due_oldest_daysinteger | nullHow many days the longest-outstanding milestone has been past its scheduled date. Facility rows only.
past_due_codesarray | nullDistinct event codes with an outstanding scheduled milestone, up to 25. Facility rows only.
rescheduled_milestone_countinteger | nullHow many milestones carry both an original and a revised schedule date that could be compared. Facility rows only.
max_schedule_slip_daysinteger | nullLargest plausible outward schedule slip on this facility, in days. Implausible pairs are excluded and counted separately rather than published. Facility rows only.
max_schedule_slip_codestring | nullEvent code carrying the largest plausible slip. Facility rows only.
max_schedule_slip_descriptionstring | nullEPA description of the event carrying the largest plausible slip. Facility rows only.
implausible_schedule_slip_countinteger | nullNumber of computed slips exceeding 20 years, excluded from max_schedule_slip_days as data-entry artefacts. Reported so the exclusion is visible rather than silent. Facility rows only.

Institutional and engineering controls (facility rows)

FieldTypeDescription
engineering_controls_established_countinteger | nullNumber of CA770 engineering-control events on file - caps, barriers, groundwater controls. A property with engineering controls carries continuing obligations. Facility rows only.
engineering_controls_typesarray | nullOutcome suffixes of the CA770 events: GW groundwater control, NG non-groundwater control. Facility rows only.
engineering_controls_terminated_countinteger | nullNumber of CA780 events terminating an engineering control. Facility rows only.
institutional_controls_established_countinteger | nullNumber of CA772 institutional-control events - deed restrictions, zoning, informational devices. These bind a future owner and are the single most consequential column for a CRE buyer. Facility rows only.
institutional_controls_typesarray | nullOutcome suffixes of the CA772 events: PR proprietary control, GC governmental control, EP enforcement and permit tools, ID informational device. Facility rows only.
institutional_controls_terminated_countinteger | nullNumber of CA782 events terminating an institutional control. Facility rows only.

Contamination areas and release media (facility rows)

FieldTypeDescription
area_countinteger | nullNumber of CA_AREA records EPA carries for this facility - the distinct areas of concern or solid waste management units under corrective action. Facility rows only.
area_namesarray | nullNames of the contamination areas, up to 25. Facility rows only.
entire_facility_area_countinteger | nullHow many areas are flagged as covering the entire facility rather than a discrete unit. Facility rows only.
regulated_unit_area_countinteger | nullHow many areas are RCRA regulated units. Facility rows only.
reported_acreage_totalnumber | nullSum of AREA ACREAGE across the areas that actually report one. null when no area reports acreage - never zero, because 87% of national areas publish no acreage and a bare sum would present a fraction of the footprint as the whole. Facility rows only.
reported_acreage_area_countinteger | nullHow many of this facility's areas contributed to reported_acreage_total. The denominator that makes the sum readable. Facility rows only.
unparseable_acreage_countinteger | nullAreas whose published acreage could not be read as a number. Counted rather than coerced to zero. Facility rows only.
air_releasestring | nullyes, no or not_reported. EPA's AIR RELEASE IND is three-valued and blank on 89% of national areas, so not_reported is by far the most common answer and is NOT a clean bill. Facility rows only.
air_release_confirmedboolean | nullTrue only where EPA affirmatively records an air release, false where EPA records none, null where nothing was reported. Facility rows only.
groundwater_releasestring | nullyes, no or not_reported, rolled up across the facility's areas. Facility rows only.
groundwater_release_confirmedboolean | nullTrue/false/null form of groundwater_release. null means not reported, never "no release". Facility rows only.
soil_releasestring | nullyes, no or not_reported, rolled up across the facility's areas. Facility rows only.
soil_release_confirmedboolean | nullTrue/false/null form of soil_release. Facility rows only.
surface_water_releasestring | nullyes, no or not_reported, rolled up across the facility's areas. Facility rows only.
surface_water_release_confirmedboolean | nullTrue/false/null form of surface_water_release. Facility rows only.
confirmed_release_mediaarray | nullThe media EPA affirmatively records a release to: air, groundwater, soil, surface_water. An empty array means none was affirmatively recorded, which is not the same as none exists. Facility rows only.
FieldTypeDescription
authority_countinteger | nullNumber of legal authorities RCRAInfo records for this facility's corrective action. Facility rows only.
authority_typesarray | nullRCRAInfo authority-type codes, e.g. C consent decree, O operating permit, V voluntary corrective action. Facility rows only.
authority_type_labelsarray | nullDecoded authority names from EPA's CA_LU_AUTHORITY table. An unmapped code is surfaced as unmapped_authority_type: rather than dropped. Facility rows only.
earliest_authority_datestring | nullEarliest authority effective date on file - roughly when the cleanup obligation attached. Facility rows only.
under_enforcement_authorityboolean | nullTrue when at least one authority is an order or decree rather than a permit or policy. null when EPA records no authority at all, never false. Facility rows only.

Event timeline (event rows)

FieldTypeDescription
event_seqstring | nullRCRAInfo event sequence number within the handler. Part of the composite key that joins an event to its areas and authorities. Event rows only.
event_agencystring | nullRCRAInfo agency code that recorded the event: S state, E EPA, J joint, P other. Event rows only.
event_ownerstring | nullRCRAInfo owner of the event record. Load-bearing: the event-code dictionary is keyed on (owner, code), and 212 codes mean different things under different owners. Event rows only.
event_codestring | nullThe full RCRAInfo corrective-action event code, e.g. CA400 or CA550RC. Event rows only.
event_base_codestring | nullFirst five characters of the event code, which identify the milestone. Event rows only.
event_code_suffixstring | nullTrailing characters of the event code, which carry the OUTCOME of the milestone, e.g. RC remedy constructed, NR no remedy constructed, YE yes, NO no. null when the code has no suffix. Event rows only.
event_descriptionstring | nullVerbatim description from EPA's CA_LU_EVENT_CODE dictionary, resolved on the (owner, code) composite key. null when the pair is not in the dictionary - never borrowed from another owner's entry for the same code. Event rows only.
event_code_active_statusstring | nullY if the code is still in EPA's active vocabulary, N if retired. Retired codes are still decoded, because historical events use them. Event rows only.
event_code_decode_basisstring | nullowner_code_exact when the (owner, code) pair resolved in EPA's dictionary, unresolved when it did not. An unresolved event keeps a null description rather than being guessed. Event rows only.
event_code_ambiguous_across_ownersboolean | nullTrue when this event code carries more than one meaning across RCRAInfo owners. 212 of the 1,076 codes do. Disclosed so a downstream consumer never keys on the bare code. Event rows only.
ladder_stagestring | nullWhich rung of EPA's national corrective-action sequence this event belongs to, or null for a state-specific code that is not on the national ladder. Event rows only.
ladder_rankinteger | nullOrdinal position of ladder_stage, 1 (RFA initiated) to 18 (process terminated). null for state-specific codes. Event rows only.
schedule_date_originalstring | nullISO date the milestone was originally scheduled for, or null when RCRAInfo published nothing usable. Event rows only.
schedule_date_original_rawstring | nullThe raw eight-digit value EPA published, preserved even when it was rejected as a sentinel or an implausible date, so nothing is silently discarded. Event rows only.
schedule_date_revisedstring | nullISO date the milestone was rescheduled to, or null when it was never rescheduled or the value was unusable. Event rows only.
schedule_date_revised_rawstring | nullThe raw eight-digit revised schedule value EPA published. Event rows only.
actual_datestring | nullISO date the milestone was actually completed. null means RCRAInfo records no completion, which is NOT the same as the milestone being incomplete in the real world. Event rows only.
actual_date_rawstring | nullThe raw eight-digit completion value. Preserved when the value was a sentinel such as 19010101, which appears in the national export and is not a 1901 completion. Event rows only.
best_datestring | nullEPA's own derived "best" date for the event, published in the export. Event rows only.
schedule_slip_daysinteger | nullRevised schedule date minus original schedule date, in days. Positive means the deadline moved later. null when either date was unusable - the national export contains pairs a century apart that would otherwise publish a 36,525-day slip. Event rows only.
schedule_slip_statusstring | nullcomputed, not_rescheduled, revised_without_original, or undeterminable_bad_date. Distinguishes "was never rescheduled" from "was rescheduled but the dates cannot be trusted". Event rows only.
schedule_slip_implausibleboolean | nullTrue when a computed slip exceeds 20 years, which in this dataset indicates a data-entry artefact rather than a regulatory decision. null when there is no slip to judge. Event rows only.
milestone_completedboolean | nullTrue when RCRAInfo carries a usable completion date for this event. Event rows only.
milestone_past_dueboolean | nullTrue when the effective scheduled date has passed and RCRAInfo records no completion. False when it is completed or the date is in the future. null when no schedule was ever recorded, because "past due" is then not a question that can be asked. Event rows only.
days_past_dueinteger | nullDays between the effective scheduled date and today, for a milestone with no recorded completion. null otherwise. Event rows only.
responsible_personstring | nullRCRAInfo responsible-person code recorded against the event. Event rows only.
suborganizationstring | nullRCRAInfo suborganization code recorded against the event. Event rows only.
public_notesstring | nullFree-text public note EPA or the state attached to the event. Populated on roughly 1.6% of national events. Event rows only.
date_quality_flagsarray | nullWhich date columns on this event were rejected and why, e.g. actual_date_sentinel or schedule_date_original_implausible. Empty when every published date was usable. Event rows only.
linked_area_seqsarray | nullCA_AREA sequence numbers this event is linked to through CA_AREA_EVENT. Empty when EPA links the event to no area - 4.6% of national events are unlinked. Event rows only.
linked_area_namesarray | nullNames of the contamination areas this event is linked to, e.g. ENTIRE FACILITY or a named solid waste management unit. Event rows only.
linked_authority_typesarray | nullRCRAInfo authority-type codes the event was taken under, from CA_EVENT_AUTHORITY. Event rows only.

FAQ

Is this the same as the CORRACTS flag on a Phase I database report? No. CORRACTS is a yes/no. This is the underlying event record: which milestones exist, when each was scheduled, when each was actually completed, and which are still outstanding.

Does "past due" mean the facility is in violation? No, and the actor never says so. It means RCRAInfo records no completion date for a milestone whose scheduled date has passed. Compliance and enforcement are a different RCRAInfo module and are deliberately out of scope here.

How fresh is the data? EPA refreshes the bulk export weekly. data_as_of and rcrainfo_snapshot_age_days are on every row, and the run fails rather than serving anything older than maxSnapshotAgeDays (default 21).

Why is cleanup_stage null on some facilities? Because that state files its corrective-action events entirely under its own codes, which are not on EPA's national milestone ladder. cleanup_stage_basis says so explicitly rather than guessing a stage.

Can I get the raw event timeline instead of a rollup? Yes - set outputMode to event for one row per corrective-action event, or both for rollups followed by the events of those same facilities. both shares one maxResults budget: at most half of it (rounded up) goes to rollups and the rest to their events, and whichever side cannot fill its share hands the remainder to the other, so a both run always returns both kinds when both exist.

Where do the facility names and addresses come from? The EPA Facility Registry Service, filtered to the RCRAINFO program record. Set includeFacilityDetails: false to skip those lookups entirely; the facility_* fields then stay null with site_lookup_status: "not_requested".