Evapotranspiration (ET0/ETc)

Evapotranspiration (ET0/ETc)

Agriculture Math & Calculations Weather Credits / request: 3

Reference evapotranspiration ET0 (FAO-56) over a date range, plus crop water use ETc when crop/Kc is given. Decision support.

GET https://api.apikodu.com/api/v1/agriculture/evapotranspiration
Documentation
Overview

Reference evapotranspiration ET0 (FAO-56) over a date range. When crop or kc is given, crop water use ETc = ET0 × Kc is also returned. Decision support. Weather data © Copernicus ERA5 / ERA5-Land (contains modified Copernicus Climate Change Service information) / Open-Meteo / OpenWeather / MET Norway.

Authentication

Every request requires the x-api-key header. Credits used and remaining quota are returned in response headers (x-api-credits-used, x-api-remaining-credits, x-rate-limit-*).

Request
GET https://api.apikodu.com/api/v1/agriculture/evapotranspiration?latitude=39.92&longitude=32.87&fromDate=2026-07-01&toDate=2026-07-31&crop=maize
GET query.
Parameters
Name Type Required Default Options Description
latitude number * Required — — Point latitude -90..90. 0.1° cell.
longitude number * Required — — Point longitude.
fromDate string * Required 2026-07-01 — Start YYYY-MM-DD. Range ≤ 366 days.
toDate string * Required 2026-07-31 — End YYYY-MM-DD.
crop string Optional maize wheat barley maize sunflower cotton potato tomato rapeseed oats rye sugarbeet grape apple chickpea lentil Crop code. Kc is looked up from this (with stage) when kc is absent.
kc number Optional — — Kc coefficient 0–2. Overrides crop/stage when given.
stage string Optional mid initial mid late initial, mid or late. Default mid. Used with crop to pick Kc.
Response
Name Type Description
et0Mm number Total ET0 over the range, mm.
et0MmPerDay number Mean daily ET0 mm.
kc number Kc used. null when not found.
stage string Stage the Kc was taken from (when kc was not passed).
etcMm number Total ETc = ET0 × Kc mm. null without Kc.
etcMmPerDay number Mean daily ETc mm.
crop string Normalized crop code.
fromDate string Window start.
toDate string Window end.
daysTotal integer Calendar days in the window.
daysWithData integer Days ET0 was computed for.
missingCount integer Days without data.
missingDates array YYYY-MM-DD list of missing days (first 10).
degradedCount integer Days ET0 could not be computed because Tmax was missing.
degradedDates array YYYY-MM-DD list of degraded days (first 10).
gridLatitude number 0.1° cell latitude.
gridLongitude number 0.1° cell longitude.
daily array Daily ET0/ETc rows.
daily[].date string Day YYYY-MM-DD.
daily[].et0Mm number ET0 for that day, mm.
daily[].etcMm number ETc for that day, mm. null without Kc.
method string Calculation method: fao56-et0.
source string database: tarim_hava cell.
disclaimer string Decision-support disclaimer.
Errors
HTTP code Description
400 -254 fromDate/toDate missing, not YYYY-MM-DD, or range exceeds 366 days.
400 -255 latitude/longitude missing or out of range.
400 -249 kc outside 0–2 or stage invalid.
400 -250 Unknown crop.
429 -316 Daily new location (cell) limit (50) reached. Previously requested locations keep working; new locations next day (UTC). Retry-After header gives seconds until end of day.
503 -256 Cell created; Worker is filling history. Retry in a few minutes.
400 -251 No weather for this location/date.
401 -100 x-api-key is missing, empty, malformed, inactive, banned, expired, IP-restricted, or not allowed for this API.
429 -221 Per-minute request limit exceeded. Response headers: x-rate-limit-limit, x-rate-limit-remaining, x-rate-limit-reset.
429 — Package credit quota cannot cover this request. Body may be { error, limit, currentUsage, requestCost } (no code field).
500 -1 Unexpected server error. message is a generic error text without technical details.
Notes
  • Success body is { data: { ... } }. Error body is { code, message }. code is an ApiResponseCode enum value (negative integer).

Sample response

{
  "data": {
    "et0Mm": 168.4,
    "et0MmPerDay": 5.61,
    "kc": 1.15,
    "stage": "mid",
    "etcMm": 193.66,
    "etcMmPerDay": 6.46,
    "crop": "maize",
    "fromDate": "2026-07-01",
    "toDate": "2026-07-30",
    "daysTotal": 30,
    "daysWithData": 30,
    "missingCount": 0,
    "missingDates": [],
    "degradedCount": 0,
    "degradedDates": [],
    "gridLatitude": 39.90,
    "gridLongitude": 32.90,
    "daily": [
      {
        "date": "2026-07-01",
        "et0Mm": 5.20,
        "etcMm": 5.98
      },
      {
        "date": "2026-07-02",
        "et0Mm": 6.63,
        "etcMm": 7.62
      }
    ],
    "method": "fao56-et0",
    "source": "database",
    "disclaimer": "Decision support only. Not agronomic advice. Weather data: Copernicus ERA5 / ERA5-Land, Open-Meteo, OpenWeather, MET Norway. Contains modified Copernicus Climate Change Service information."
  }
}

Code samples

  
      const response = await fetch('https://api.apikodu.com/api/v1/agriculture/evapotranspiration', {
        method: 'GET',
        headers: {
          'x-api-key': 'YOUR_API_KEY'
        }
      });

      const data = await response.json();
      console.log(data);
  
  
      import requests

      headers = {
          'x-api-key': 'YOUR_API_KEY'
      }

      response = requests.get('https://api.apikodu.com/api/v1/agriculture/evapotranspiration', headers=headers)
      print(response.json())
  
  
      using var client = new HttpClient();
      client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY");

      var response = await client.GetStringAsync("https://api.apikodu.com/api/v1/agriculture/evapotranspiration");
      Console.WriteLine(response);
  
  
      $response = file_get_contents('https://api.apikodu.com/api/v1/agriculture/evapotranspiration', false, stream_context_create([
          'http' => [
              'header' => "x-api-key: YOUR_API_KEY"
          ]
      ]));

      print_r(json_decode($response, true));
  
  
      curl -X GET 'https://api.apikodu.com/api/v1/agriculture/evapotranspiration' \
        -H 'x-api-key: YOUR_API_KEY'
  

Start building in minutes

Create a free account, get your API key and send your first request in minutes.

Get started free