API reference

Fertiliser Price API

Four read-only endpoints returning daily UK fertiliser price estimates for nine grades. No key, no login, no rate card. Published under CC BY 4.0, so you may use the numbers commercially as long as you credit the index.

4
Endpoints
None
Authentication
JSON, CSV
Formats
CC BY 4.0
Licence

Quick start

Every endpoint is a plain GET over HTTPS. Nothing to sign up for, and no header is required. This returns today's estimate for all nine grades.

Try it

curl https://www.tilth.uk/api/v1/public/fertiliser/latest

Response shape

{
  "provider": {
    "name": "Tilth",
    "legal_name": "Diligo Ltd",
    "url": "https://www.tilth.uk",
    "contact": "[email protected]"
  },
  "dataset": {
    "name": "Tilth UK fertiliser price index",
    "description": "Independent UK Fertiliser Price Index & Exchange",
    "documentation_url": "https://www.tilth.uk/data/",
    "openapi_url": "https://www.tilth.uk/api/v1/public/fertiliser/openapi.json"
  },
  "license": {
    "name": "CC BY 4.0",
    "spdx": "CC-BY-4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Tilth (www.tilth.uk)",
    "usage": "Free to read, quote, republish and build on, with attribution. Not an offer, quote, or transaction price."
  },
  "schema_version": "1.0",
  "unit": "GBP/tonne",
  "currency": "GBP",
  "disclaimer": "An estimate of the prevailing UK market price, not a quote or an offer to trade.",
  "generated_at": "2026-07-23T06:12:04.918273611+00:00",
  "as_of": "2026-07-23",
  "count": 9,
  "data": [
    {
      "product": "AN_UK",
      "estimate_gbp_t": 436.5,
      "band_low_gbp_t": 420.88,
      "band_high_gbp_t": 452.11,
      "as_of": "2026-07-23",
      "method": "modelled",
      "within_gbp_t": 6.25,
      "hit_rate_n_of_10": 8,
      "signal_stage": "early"
    }
  ],
  "links": {
    "self": "https://www.tilth.uk/api/v1/public/fertiliser/latest",
    "all_latest": "https://www.tilth.uk/api/v1/public/fertiliser/latest",
    "documentation": "https://www.tilth.uk/data/",
    "license": "https://creativecommons.org/licenses/by/4.0/"
  }
}

Endpoints

Absolute paths against the base URL above. All four accept GET only.

GET

/api/v1/public/fertiliser/latest

The current estimate for every grade, or for one grade when you pass a product code. This is the endpoint to call if you want a single number.

Parameters

productoptional
Narrow the response to one grade. Omit it to receive all nine.

Example

https://www.tilth.uk/api/v1/public/fertiliser/latest?product=AN_UK
GET

/api/v1/public/fertiliser/dataset

The full estimate history for one grade, newest first, capped at 400 points. Append the CSV format to download the same points as a spreadsheet.

Parameters

productrequired
Which grade to return the history for.
formatoptional
Pass csv for a spreadsheet download instead of JSON.

Example

https://www.tilth.uk/api/v1/public/fertiliser/dataset?product=UREA_GRANULAR&format=csv
GET

/api/v1/public/fertiliser/official-index-comparison

The daily forecast rebased against the official DEFRA agricultural price index for one nutrient family, so you can see how the estimate tracks the official series.

Parameters

productrequired
Which grade to build the overlay for.

Example

https://www.tilth.uk/api/v1/public/fertiliser/official-index-comparison?product=DAP
GET

/api/v1/public/fertiliser/openapi.json

The machine-readable OpenAPI 3.1 contract for the three endpoints above. Import it into Postman, Insomnia or any client generator.

Parameters

No parameters.

Example

https://www.tilth.uk/api/v1/public/fertiliser/openapi.json

Response envelope

The latest and dataset endpoints wrap their points in the same self-describing envelope, so an agent reading one response knows the unit, the licence and the vintage without consulting this page.

FieldMeaning
providerObject. Who publishes the data: name, legal_name, url and contact.
datasetObject. What this data is: name, description, documentation_url and openapi_url.
licenseObject. The licence: name, spdx, url, the attribution string to use, and usage terms.
schema_versionEnvelope version, so a client can detect a breaking change.
unitThe unit every price is quoted in, GBP per tonne.
currencyThe currency code for the prices.
disclaimerA plain statement that these are estimates, not quotes or offers.
generated_atWhen this response was assembled.
as_ofThe date the estimates themselves are for.
productObject, present only when you narrow to one grade: code, label, slug and detail_url.
countHow many points the data array holds.
dataArray. The estimate points, described below.
linksObject. Related URLs: self, documentation, license, and all_latest on the latest endpoint.

Estimate point

Every entry in the data array carries these fields.

FieldMeaning
productThe grade code, one of the nine listed below.
estimate_gbp_tThe modelled price in pounds per tonne.
band_low_gbp_tThe lower bound of the uncertainty band.
band_high_gbp_tThe upper bound of the uncertainty band.
as_ofThe day this estimate is for.
methodHow the point was produced: modelled, or flat_carry when the driver data was unavailable.
within_gbp_tRecent accuracy, the typical gap in pounds per tonne between the estimate and the settled price.
hit_rate_n_of_10How many of the last ten estimates landed inside the band.
signal_stageHow far the underlying driver is through validation.

Product codes

Pass one of these as the product parameter. Anything else returns a 400.

Errors

Failures return the status code below with a JSON body. The endpoints are rate limited per IP, so a polite client should cache rather than poll in a loop.

StatusWhen it happens
400The product code is missing or is not one of the nine listed above.
502The upstream index service could not be reached. Retry shortly.
503The comparison overlay is not available for this grade yet.

Machine-readable contract

The OpenAPI 3.1 document describes every endpoint, parameter and response on this page. Point a client generator at it rather than hand-writing types.

https://www.tilth.uk/api/v1/public/fertiliser/openapi.jsonOpen the OpenAPI document

Use Tilth from an AI agent

Tilth also runs a Model Context Protocol server, so an agent can call the index directly as a tool instead of you wiring up the HTTP calls above by hand.

MCP endpoint

https://www.tilth.uk/mcp

Discovery document

https://www.tilth.uk/.well-known/mcp.json

Client config

{
  "mcpServers": {
    "tilth": {
      "url": "https://www.tilth.uk/mcp"
    }
  }
}

Tools

The server exposes six tools. Five are read-only; the sixth needs the user's explicit consent before it does anything.

list_products
Lists the nine fertiliser grades the index tracks, with their product codes.
get_fertiliser_price
Returns the current price estimate for one grade, with its confidence band.
get_price_history
Returns the daily price history for one grade, newest first.
compare_forecast_to_defra
Rebases the forecast against the official DEFRA Agricultural Price Index for one grade.
compare_quote_to_index
Compares a quoted price per tonne against the current index estimate for one grade.
subscribe_price_alert
Consent-gated: subscribes an email to a price alert only once the user has clearly agreed to it. Tilth sends a confirmation link first, and the alert activates only when the user clicks it.

Licence and attribution

The data is published under Creative Commons Attribution 4.0. You may republish it, chart it, and build a commercial product on it. You must credit the index, and you must not present the numbers as anything other than estimates.

Credit it like this

Source: Tilth (tilth.uk)

How the numbers are made

This page documents the interface. The methodology, the sources behind each grade and the validation record are set out on the data page.

Read the methodology