Environment Agency Flood Monitoring API
Free UK flood API with no key: live flood warnings and alerts from the Environment Agency, with severity, affected area and river names. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Environment Agency Flood Monitoring API?
The Environment Agency's flood-monitoring API publishes live flood warnings and alerts for England with no API key. Each item gives the warning severity, the affected flood area with its rivers and counties, a plain-English message and the times it was raised or changed.
This is the same data behind the Environment Agency's public flood warning service, published as linked open data under the Open Government Licence. Because it is genuinely open — no key, no registration, no attribution gymnastics — it has become the standard source for third-party flood alerting in England, and the response format is deliberately self-describing.
The linked-data heritage shows in the shape. Every resource carries an `@id` URL you can dereference for more detail, so `floodArea.polygon` leads to the actual geographic boundary as GeoJSON and the `hasFormat` array in `meta` lists the same query as CSV, RDF and Turtle. The severity model is what matters operationally: `severityLevel` runs 1 for a severe flood warning down to 4 for a warning that has been removed, so an entry appearing in the feed does not by itself mean flooding is happening. It is worth noting that `meta.comment` still reads "Status: Beta service", which the agency has never removed despite years of production use.
Quick facts
- Base URL
https://environment.data.gov.uk/flood-monitoring- Authentication
- No API key and no registration. Published under the Open Government Licence v3.
- Rate limit
- No published limit. Warnings update every fifteen minutes at most.
- Pricing
- Free under the Open Government Licence.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Environment Agency Flood Monitoring API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch current flood warnings and alerts
GET https://environment.data.gov.uk/flood-monitoring/id/floods?_limit=2
curl 'https://environment.data.gov.uk/flood-monitoring/id/floods?_limit=2'const res = await fetch("https://environment.data.gov.uk/flood-monitoring/id/floods?_limit=2");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://environment.data.gov.uk/flood-monitoring/id/floods?_limit=2", timeout=20)
res.raise_for_status()
print(res.json()){
"@context": "http://environment.data.gov.uk/flood-monitoring/meta/context.jsonld",
"meta": {
"publisher": "Environment Agency",
"licence": "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",
"documentation": "http://environment.data.gov.uk/flood-monitoring/doc/reference",
"version": "0.9",
"comment": "Status: Beta service",
"hasFormat": [
"http://environment.data.gov.uk/flood-monitoring/id/floods.csv?_limit=2",
"http://environment.data.gov.uk/flood-monitoring/id/floods.rdf?_limit=2",
"http://environment.data.gov.uk/flood-monitoring/id/floods.ttl?_limit=2",
"http://environment.data.gov.uk/flood-monitoring/id/floods.html?_limit=2"
],
"limit": 2
},
"items": [
{
"@id": "http://environment.data.gov.uk/flood-monitoring/id/floods/121WAF915",
"description": "Lower River Wear",
"eaAreaName": "North East",
"eaRegionName": "No longer used",
"floodArea": {
"@id": "http://environment.data.gov.uk/flood-monitoring/id/floodAreas/121WAF915",
"county": "County Durham, Sunderland",
"notation": "121WAF915",
"polygon": "http://environment.data.gov.uk/flood-monitoring/id/floodAreas/121WAF915/polygon",
"riverOrSea": "River Wear, Moors Burn, Smallhope Burn"
},
"floodAreaID": "121WAF915",
"isTidal": false,
"message": "The flood forecast has changed significantly. As a result, there is no longer a risk of flooding in the area. \nWeather conditions are expected to improve and no further flooding is expected. RainfaParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
_limit | query | Optional | Maximum items to return. The underscore prefix is part of the name. 2 |
min-severity | query | Optional | Only return warnings at or above a severity level, where 1 is most severe. 2 |
county | query | Optional | Filter to one county name. Somerset |
lat / long / dist | query | Optional | Return warnings within `dist` kilometres of a point. 51.5 |
/id/stations | path | Optional | Sibling resource listing river and tide gauge stations and their readings. |
Response fields
@contextstring- JSON-LD context URL describing the vocabulary. Safe to ignore unless you are consuming it as linked data.
meta.publisher / licence / documentationstring- Publisher, the OGL v3 licence URL and a link to the reference documentation.
meta.hasFormatarray- The same query expressed as CSV, RDF, Turtle and HTML — swap the URL to change format.
meta.version / commentstring- Service version and a status note that still says "Beta service".
itemsarray- Current warnings and alerts.
items[].@idstring- Dereferenceable URL for this warning, ending in its flood area notation.
items[].descriptionstring- Short name of the affected stretch, such as `Lower River Wear`.
items[].messagestring- Plain-English situation update written for the public. This is the text to display.
items[].eaAreaNamestring- Environment Agency operational area, for example `North East`. Note that `eaRegionName` reads "No longer used".
items[].floodAreaobject- The affected area, with `county`, `riverOrSea`, a `notation` code and a `polygon` URL returning the boundary geometry.
items[].floodAreaIDstring- Flood area code, matching `floodArea.notation`.
items[].isTidalboolean- Whether the risk is tidal rather than fluvial.
What you can build with the Environment Agency Flood Monitoring API
- Send flood alerts for a specific county or postcode area
- Plot active warnings on a map using the polygon URLs
- Correlate warnings against river-level readings from the stations resource
- Archive warning history to study how often areas are affected
Common errors and how to fix them
Empty items array
There are no active warnings anywhere in England.
Fix: This is common in dry periods and is the correct answer, not a failure. Render an all-clear state.
Warnings that are not warnings
`severityLevel` 4 means a warning has been removed.
Fix: Filter on severity before alerting anyone. Use `min-severity` to have the API do it for you.
Parameter ignored
The paging and filtering parameters are underscore-prefixed.
Fix: It is `_limit`, not `limit`. Unrecognised parameters are silently dropped rather than rejected.
No geometry in the response
Polygons are linked, not embedded.
Fix: Follow `floodArea.polygon` for the boundary. Keeping it out of the main response is what keeps the feed small.
Environment Agency Flood Monitoring API — frequently asked questions
Is the flood monitoring API free?
Yes, free with no key and no registration, published under the Open Government Licence v3. Attribution to the Environment Agency is the only condition.
Does it cover the whole UK?
England only. Scotland, Wales and Northern Ireland have their own agencies with separate services.
What do the severity levels mean?
1 is a severe flood warning meaning danger to life, 2 a flood warning, 3 a flood alert, and 4 marks a warning that has been removed. Always check the level before alerting.
How do I get the flooded area boundary?
Follow the `floodArea.polygon` URL on the item. The geometry is linked rather than embedded so the warnings feed itself stays small.
Tools that pair with this API
GeoJSON Validator
Validate GeoJSON against RFC 7946 and get the exact JSON path of every problem: unclosed rings, swapped coordinates, missing properties and more.
Coordinate Converter
Convert GPS coordinates between decimal degrees, degrees-minutes-seconds and decimal minutes instantly. Paste any format like 40°26'46"N and copy the result.
Distance Calculator
Calculate the straight-line distance and bearing between two points on a map by latitude/longitude using the Haversine formula — km, miles and nautical miles.
Environment Agency Flood Monitoring is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.