BYTETOOLS

Open-Meteo Flood API

Free flood forecasting API with no key: daily river discharge forecasts worldwide from the GloFAS global flood model, with historical data back to 1984. Tested.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 20 Aug 2026

What is the Open-Meteo Flood API?

The Open-Meteo Flood API is a free, key-free API providing river discharge forecasts and historical data worldwide, based on the Global Flood Awareness System (GloFAS) model operated by the Copernicus Emergency Management Service.

River discharge forecasting is normally the preserve of national hydrological agencies. This endpoint exposes GloFAS — the same global flood model used for emergency planning — through a free, key-free interface for any coordinates worldwide.

Discharge is measured in cubic metres per second and is meaningful only relative to that river's normal range. A value of 500 m³/s is catastrophic on a small river and unremarkable on a large one, so always compare against the historical record for the same point rather than using an absolute threshold.

Quick facts

Base URL
https://flood-api.open-meteo.com/v1/flood
Authentication
No API key required.
Rate limit
Shares the Open-Meteo fair-use policy — roughly 10,000 requests per day.
Pricing
Free including commercial use below the daily limit.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the Open-Meteo Flood API

Every request below was executed against the live API on 20 Aug 2026, and the response shown is the real body it returned — not an illustration.

1. Fetch river discharge forecast

GET https://flood-api.open-meteo.com/v1/flood?latitude=31.52&longitude=74.35&daily=river_discharge

curl
curl 'https://flood-api.open-meteo.com/v1/flood?latitude=31.52&longitude=74.35&daily=river_discharge'
JavaScript (fetch)
const res = await fetch("https://flood-api.open-meteo.com/v1/flood?latitude=31.52&longitude=74.35&daily=river_discharge");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://flood-api.open-meteo.com/v1/flood?latitude=31.52&longitude=74.35&daily=river_discharge", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "latitude": 31.525002,
  "longitude": 74.375015,
  "generationtime_ms": 0.3679990768432617,
  "utc_offset_seconds": 0,
  "timezone": "GMT",
  "timezone_abbreviation": "GMT",
  "elevation": 219.0,
  "daily_units": {
    "time": "iso8601",
    "river_discharge": "m³/s"
  },
  "daily": {
    "time": [
      "2026-08-19",
      "2026-08-20",
      "2026-08-21",
      "2026-08-22",
      "2026-08-23",
      "2026-08-24",
      "2026-08-25",
      "2026-08-26",
      "2026-08-27",
      "2026-08-28",
      "2026-08-29",
      "2026-08-30",
      "2026-08-31",
      "2026-09-01",
      "2026-09-02",
      "2026-09-03",
      "2026-09-04",
      "2026-09-05",
      "2026-09-06",
      "2026-09-07",
      "2026-09-08",
      "2026-09-09",
      "2026-09-10",
      "2026-09-11",
      "2026-09-12",
      "2026-09-13",
      "2026-09-14",
      "2026-09-15",
      "2026-09-16",
      "2026-09-17",
      "2026-09-18",
      "2026-09-19",
      "2026-09-20",
      "2026-09-21",
      "2026-09-22",
      "2026-09-23",
      "2026-09-24",
      "2026-09-25",
      "2026-09-26",
      "2026-09-27",
      "2026-09-28",
      "2026-09-29",
      "2026-09-30",
      "2026-10-01",
      "2026-10-02",
      "2026-10-03",
      "2026-10-04",
      "2026-10-05",
      "2026-10-06",
      "2026-10-07",
      "2026-10-08",
      "2026-10-09",
      "2026-10-10",
      "2026-10-11",
      "2026-10-12",
      "2026-10-13",
      "2026-10-14",
      "2026-10-15",
      "2026-10-16",
      "2026-10-17",
      "2026-10-18",
      "2026-10-19",
      "2026-10-20",
      "2026-10-21",
      "2026-10-2

Parameters

ParameterTypeRequiredDescription
latitude / longitudefloatRequiredCoordinates of the river point. 31.52
dailystringRequiredVariables such as river_discharge or river_discharge_mean. river_discharge
start_date / end_datestringOptionalHistorical range as YYYY-MM-DD, back to 1984. 2026-01-01
ensemblebooleanOptionalReturn ensemble members for uncertainty analysis. true

Response fields

daily.timearray
Dates for each forecast value.
daily.river_dischargearray
Discharge in cubic metres per second.
daily_unitsobject
Units for each variable.
latitude / longitudenumber
The model grid point actually used.
generationtime_msnumber
How long the query took server-side.

What you can build with the Open-Meteo Flood API

  • Build flood early-warning alerts for a river location
  • Assess flood risk for insurance or planning
  • Analyse decades of river discharge trends
  • Support agricultural and water resource planning

Common errors and how to fix them

All values null

The coordinates are not on a modelled river.

Fix: GloFAS models rivers above a minimum catchment size; small streams are not covered.

Discharge value hard to interpret

It is absolute, in m³/s.

Fix: Compare against the historical range for the same point — thresholds are river-specific, not universal.

400

Unknown daily variable name.

Fix: Use river_discharge, or the ensemble variants documented in the API reference.

Open-Meteo Flood API — frequently asked questions

Is there a free flood forecasting API?

Yes. The Open-Meteo Flood API exposes GloFAS river discharge forecasts worldwide with no API key required.

What is river discharge?

The volume of water flowing past a point per second, in cubic metres. It is the standard hydrological measure of river flow and the basis of flood forecasting.

How do I know if a discharge value means flooding?

You cannot from the number alone — it is river-specific. Fetch the historical range for the same coordinates and compare; 500 m³/s is extreme on a small river and normal on a large one.

Does it cover small streams?

No. GloFAS models rivers above a minimum catchment size, so small streams and headwaters return null.

Tools that pair with this API

Alternatives to Open-Meteo Flood API

If Open-Meteo Flood does not fit, these environment apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
UK Carbon IntensityFree National Grid carbon intensity API with no key: current and forecast grid carbon per half hour, by region, with generation mix. Tested curl example.No keyYes19 Aug 2026
GBIFFree GBIF API with no key: 2 billion+ species occurrence records, taxonomic data and distribution maps from museums and research institutions worldwide. Tested.No keyNo19 Aug 2026
iNaturalistFree iNaturalist API with no key: millions of citizen-science species observations with photos, coordinates, identifications and quality grades. Tested example.No keyYes19 Aug 2026
USGS Water ServicesFree USGS Water Services API with no key: real-time river discharge, gauge height, water temperature and groundwater levels from thousands of US sites. Tested.No keyYes19 Aug 2026
Global Warming APIFree climate data API with no key: global temperature anomalies from 1880 to now, plus CO2, methane, nitrous oxide and polar ice extent series. Tested example included.No keyYes21 Aug 2026
GrünstromIndex (Corrently)Free German renewable energy forecast API with no key: hourly green-power share, wind and solar split, CO2 intensity and grid price by postcode. Tested example included.No keyYes21 Aug 2026
All Environment APIs

Open-Meteo Flood is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.