API reference

Fertiliser Price API

Seven read-only Intelligence Hub endpoints for UK fertiliser estimates, price series, market facts and public scoring. No key and no login.

7
Endpoints
None
Authentication
JSON
Formats
Not asserted
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://intelligence.tilth.uk/api/v1/fertiliser

Response shape

[
  {
    "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,
    "scored_prints": 10,
    "signal_stage": "early"
  }
]

Endpoints

Absolute paths against the branded Intelligence Hub origin above. All seven accept GET only.

GET

/api/v1/fertiliser

The current estimate for every tracked grade, returned as one JSON array.

Parameters

No parameters.

Example

https://intelligence.tilth.uk/api/v1/fertiliser
GET

/api/v1/fertiliser/series

The published price series for one grade, newest first, returned as a JSON array.

Parameters

productrequired
Which grade to return the published series for.
cadenceoptional
Choose weekly or monthly. Weekly is the default.

Example

https://intelligence.tilth.uk/api/v1/fertiliser/series?product=AN_UK&cadence=weekly
GET

/api/v1/fertiliser/estimates/history

The daily estimate history for one grade, newest first, capped at 400 points and returned as a JSON array.

Parameters

productrequired
Which grade to return the estimate history for.
cadenceoptional
Accepted for compatibility and ignored because this operation always returns the daily estimate line.

Example

https://intelligence.tilth.uk/api/v1/fertiliser/estimates/history?product=UREA_GRANULAR
GET

/api/v1/fertiliser/narrative

Ranked market facts for one grade, ordered for concise human or agent consumption.

Parameters

productrequired
Which grade to explain.

Example

https://intelligence.tilth.uk/api/v1/fertiliser/narrative?product=AN_UK
GET

/api/v1/fertiliser/overview

The market-wide weekly aggregate across tracked grades.

Parameters

No parameters.

Example

https://intelligence.tilth.uk/api/v1/fertiliser/overview
GET

/api/v1/fertiliser/divergence

The public forward-error scoring record, optionally narrowed by grade and time window.

Parameters

productoptional
Narrow the scoring record to one grade.
daysoptional
Limit the scoring window to this many recent days.

Example

https://intelligence.tilth.uk/api/v1/fertiliser/divergence?product=AN_UK&days=365
GET

/api/v1/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://intelligence.tilth.uk/api/v1/fertiliser/official-index-comparison?product=DAP

Current estimate array

The current operation returns an array directly. Every entry carries the estimate, confidence band, method and available scoring record.

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 scored estimates landed inside the band. A count, not a rate: read it over scored_prints.
scored_printsThe denominator for hit_rate_n_of_10: how many settled prints the count was measured over, at most ten.
signal_stageHow far the underlying driver is through validation.

Estimate history array

The history operation also returns an array directly. Every entry is one dated estimate for the requested grade.

FieldMeaning
productThe grade code, one of the nine listed below.
dateThe date this historical estimate is for.
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.
methodHow the point was produced: modelled, or flat_carry when the driver data was unavailable.
signal_stageHow far the underlying driver is through validation.

Product codes

Pass one of these as the product parameter. See the machine-readable contract for each operation's handling of unknown codes.

Errors

Failures can return the status codes below. Throttle and timeout responses return JSON with code and message; a 429 response also includes Retry-After. Cache responses and pace calls rather than polling in a loop.

StatusWhen it happens
400A required query parameter is missing or invalid.
429The public request rate or concurrency limit was reached. The JSON code is ERR_HUB_THROTTLED and the message is "Too many requests. This API is free and keyless; please pace your calls." Read Retry-After: 60 seconds for a request budget or 1 second when all public request slots are in use, then retry after that delay.
500The Intelligence Hub could not read the requested dataset. Retry shortly.
503The public request exceeded the Hub timeout. The JSON code is ERR_HUB_INTERNAL and the message is "The Intelligence Hub could not complete this request". Retry shortly.

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://intelligence.tilth.uk/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

The Intelligence Hub contract does not currently assert a licence. Source licence metadata is informational and does not define terms for the public API.

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