Skip to content
All data sources

National Response Center (USCG) Spill Reports API and MCP server

No authnrc-spills

Reported oil, chemical, and hazmat spill and release incidents from the U.S. Coast Guard National Response Center, the federal hotline anyone calls to report a release. Search by county and calendar year, summarize what a county saw, pull one report in full, or search the mapped subset around a coordinate. This is the environmental screening layer the EPA facility and enforcement connectors do not cover: it records releases from unregulated callers, trucks, rail, vessels, and neighboring property. Every record is an INITIAL, UNVERIFIED caller report, never a confirmed release and never a cleanup status. This is the Coast Guard spill hotline, not the Nuclear Regulatory Commission.

National Response Center (USCG) Spill Reports is published by U.S. Coast Guard National Response Center (NRC) annual incident reports, covers United States counties and county equivalents, matched on the county name the National Response Center (USCG) records, populated on about 99 percent of reports, United States offshore lease areas recorded under a coastal state, such as Green Canyon Area and Mississippi Canyon Area in Louisiana, United States territories including Puerto Rico, the U.S. Virgin Islands, Guam, and the Northern Mariana Islands, and Some reports in Canada (state code CN) and Mexico (state code MX), which the National Response Center (USCG) also fields, and holds records 1990 to present.

It refreshes on a schedule, every day.

Last verified . That is when these facts were last rebuilt from the ParcelOps source registry, not when U.S. Coast Guard National Response Center (NRC) annual incident reports last refreshed the data itself.

API access

Your AI client reaches National Response Center (USCG) Spill Reports through one ParcelOps MCP endpoint, so there is no separate key to hold for it and no per-source client to write. Reaching it takes no credentials of your own.

Where it came from

PublisherU.S. Coast Guard National Response Center (NRC) annual incident reports

Freshness and coverage

FreshnessScheduled · every day · The current calendar year file is rewritten continuously; it was modified the same day it was probed on 2026-08-10 and carried reports from the previous day. Closed years are republished irregularly, and each file carries its own vintage from its Last-Modified header.
Places coveredUnited States counties and county equivalents, matched on the county name the National Response Center (USCG) records, populated on about 99 percent of reports, United States offshore lease areas recorded under a coastal state, such as Green Canyon Area and Mississippi Canyon Area in Louisiana, United States territories including Puerto Rico, the U.S. Virgin Islands, Guam, and the Northern Mariana Islands, Some reports in Canada (state code CN) and Mexico (state code MX), which the National Response Center (USCG) also fields
Time covered1990 → present · One workbook per calendar year from 1990 forward. Files are keyed to the year a report was FILED, not the year the incident happened, so each file carries some reports describing older incidents. The current year is always partial.
CredentialsNo credentials required

What this source cannot tell you

  • Anything outside United States counties and county equivalents, matched on the county name the National Response Center (USCG) records, populated on about 99 percent of reports, United States offshore lease areas recorded under a coastal state, such as Green Canyon Area and Mississippi Canyon Area in Louisiana, United States territories including Puerto Rico, the U.S. Virgin Islands, Guam, and the Northern Mariana Islands, and Some reports in Canada (state code CN) and Mexico (state code MX), which the National Response Center (USCG) also fields. A request past that edge comes back empty rather than approximated.
  • Anything from before 1990.
  • Anything U.S. Coast Guard National Response Center (NRC) annual incident reports does not publish. ParcelOps returns this source as it stands and never fills a blank field from a different one.
  • The National Response Center (USCG) is an emergency call center, not a response agency. These are INITIAL reports made by callers and have not been validated or investigated by any federal or state response agency.
  • This is not a substitute for a Phase I environmental site assessment. It is one records source a Phase I would consult, and it covers only what was called in to this one federal hotline.
  • This data carries no cleanup, remediation, enforcement, or case-closure status of any kind. A report never tells you whether anything was cleaned up, or whether the release turned out to be real.
  • A report is not a confirmed release. It records that somebody called the hotline and what they said at the time.
  • Reports flagged as potential releases describe a release that might occur or might have occurred, not an observed one.
  • The responsible party is the SUSPECTED responsible company as recorded by the call taker, in the data dictionary's own wording, and it is named on only about half of reports.
  • Zero reports means zero for that county, that calendar year, and that file. It is not a finding about the parcel, about earlier or later years, or about releases nobody called in.
  • Only a minority of reports carry coordinates, and coverage is far worse for onshore fixed facilities than for offshore platforms, so county search sees reports that point-radius search physically cannot. Never use a radius result as the screen.
  • Coordinates are published as degrees, minutes and seconds by the call taker and describe where the caller said the incident was, not a surveyed location. No coordinate is ever synthesized from an address.
  • Incident timestamps are published with no timezone anywhere in the file or the data dictionary, so they are returned verbatim rather than converted.
  • Counts are counts of reports, not of confirmed releases and not of volumes. Two callers reporting one event produce two reports.
  • The National Response Center (USCG) here is the U.S. Coast Guard spill hotline. It is not the Nuclear Regulatory Commission, which is a separate agency served by the separate nrc connector.

Methods (5)

A method is one call your agent can make against this source.

  • searchIncidentsByCounty

    read

    Reported spills and releases in one county for one calendar year. The primary screen.

    What you must provideyear
    Records returnedspill_report, county, material
    How to get more resultsoffset (offsetField: offset, limitField: limit)
    FreshnessScheduled · every day
    Input schema
    {
      "type": "object",
      "properties": {
        "year": {
          "type": "integer",
          "minimum": 1990,
          "description": "Calendar year of the report file, 1990 through the current year. One call reads one year."
        },
        "stateAlpha": {
          "type": "string",
          "pattern": "^[A-Za-z]{2}$",
          "description": "Two-letter state code such as TX. Required with countyName. Canada is CN and Mexico is MX."
        },
        "countyName": {
          "type": "string",
          "minLength": 2,
          "maxLength": 80,
          "description": "County name such as \"Harris\". Also accepts offshore lease areas such as \"Green Canyon Area\"."
        },
        "countyFips": {
          "type": "string",
          "pattern": "^\\d{5}$",
          "description": "Five-digit state + county FIPS such as 48201 (Harris County, Texas). Use instead of stateAlpha plus countyName."
        },
        "incidentType": {
          "type": "string",
          "maxLength": 40,
          "description": "Filter to one published type, for example FIXED, PIPELINE, STORAGE TANK, MOBILE, RAILROAD, VESSEL, PLATFORM, UNKNOWN SHEEN. Case-insensitive."
        },
        "materialContains": {
          "type": "string",
          "maxLength": 60,
          "description": "Keep only reports naming a material containing this text, for example \"diesel\" or \"crude\"."
        },
        "reachedWaterOnly": {
          "type": "boolean",
          "description": "Keep only reports where a released material was recorded as reaching water."
        },
        "excludePotential": {
          "type": "boolean",
          "description": "Drop reports flagged as potential rather than observed releases."
        },
        "includeMaterials": {
          "type": "boolean",
          "description": "Include the materials reported released for each report. Defaults to true."
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 200,
          "description": "Reports to return. Defaults to 25."
        },
        "offset": {
          "type": "integer",
          "minimum": 0,
          "description": "Reports to skip, for paging."
        }
      },
      "required": [
        "year"
      ],
      "additionalProperties": false
    }
    • One call covers one calendar year only. A county with zero reports this year may have many in another year.

    Pass countyFips, or stateAlpha plus countyName. Zero is a citable zero.

  • summarizeCountyIncidents

    read

    Report counts for one county-year broken out by incident type, cause, and material.

    What you must provideyear
    Records returnedcounty, spill_report
    How to get more resultsnone
    Unitsreports: reports
    FreshnessScheduled · every day
    Input schema
    {
      "type": "object",
      "properties": {
        "year": {
          "type": "integer",
          "minimum": 1990,
          "description": "Calendar year of the report file, 1990 through the current year. One call reads one year."
        },
        "stateAlpha": {
          "type": "string",
          "pattern": "^[A-Za-z]{2}$",
          "description": "Two-letter state code such as TX. Required with countyName. Canada is CN and Mexico is MX."
        },
        "countyName": {
          "type": "string",
          "minLength": 2,
          "maxLength": 80,
          "description": "County name such as \"Harris\". Also accepts offshore lease areas such as \"Green Canyon Area\"."
        },
        "countyFips": {
          "type": "string",
          "pattern": "^\\d{5}$",
          "description": "Five-digit state + county FIPS such as 48201 (Harris County, Texas). Use instead of stateAlpha plus countyName."
        }
      },
      "required": [
        "year"
      ],
      "additionalProperties": false
    }
    • Two callers reporting the same event produce two reports, so counts overstate distinct events.

    Counts reports, never confirmed releases and never volumes.

  • getIncidentDetail

    read

    One report in full: materials, suspected responsible party, and reported impact.

    What you must provideyearreportNumber
    Records returnedspill_report, material
    How to get more resultsnone
    FreshnessScheduled · every day
    Input schema
    {
      "type": "object",
      "properties": {
        "year": {
          "type": "integer",
          "minimum": 1990,
          "description": "Calendar year of the report file, 1990 through the current year. One call reads one year."
        },
        "reportNumber": {
          "type": "string",
          "pattern": "^\\d{1,12}$",
          "description": "National Response Center (USCG) report number, the numeric SEQNOS carried on every report."
        }
      },
      "required": [
        "year",
        "reportNumber"
      ],
      "additionalProperties": false
    }
    • Injury, evacuation, and damage figures are the caller's first estimates. A blank field means nothing was recorded, never zero.

    Files are keyed to the year a report was filed, not the incident year.

  • searchIncidentsNearPoint

    read

    Reports within a radius of a coordinate. A mapped subset only, never a screen.

    What you must provideyearlatitudelongitude
    Records returnedspill_report
    How to get more resultsnone (limitField: limit)
    UnitsdistanceMiles: miles
    Coordinate systemEPSG:4326
    FreshnessScheduled · every day
    Input schema
    {
      "type": "object",
      "properties": {
        "year": {
          "type": "integer",
          "minimum": 1990,
          "description": "Calendar year of the report file, 1990 through the current year. One call reads one year."
        },
        "latitude": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "longitude": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        },
        "radiusMiles": {
          "type": "number",
          "minimum": 0.1,
          "maximum": 25,
          "description": "Search radius in miles. Defaults to 1."
        },
        "incidentType": {
          "type": "string",
          "maxLength": 40,
          "description": "Filter to one published type, for example FIXED, PIPELINE, STORAGE TANK, MOBILE, RAILROAD, VESSEL, PLATFORM, UNKNOWN SHEEN. Case-insensitive."
        },
        "includeMaterials": {
          "type": "boolean",
          "description": "Include the materials reported released for each report. Defaults to true."
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 200,
          "description": "Reports to return, nearest first. Defaults to 25."
        }
      },
      "required": [
        "year",
        "latitude",
        "longitude"
      ],
      "additionalProperties": false
    }
    • This searches ONLY the minority of reports carrying coordinates. Every response states how many reports it could not test at all, and those are not represented in the result whatever it says.
    • Coordinate coverage is worst for onshore fixed facilities and best for offshore platforms, so a zero here can sit next to a reported release with no coordinates. Screen with searchIncidentsByCounty.
    • Coordinates are the call taker's degrees, minutes and seconds, not a surveyed location, and none are ever synthesized from an address.

    Most reports carry no coordinates. Screen with searchIncidentsByCounty.

  • getServiceInfo

    read

    Years published, coverage, limits, and what this data cannot answer.

    Records returneddataset
    How to get more resultsnone
    FreshnessScheduled · every day (source-level)
    Input schema
    {
      "type": "object",
      "properties": {},
      "required": [],
      "additionalProperties": false
    }

    States plainly that no cleanup status and no query API exist.

Where this source is used