What the input price data holds
1 row per product, per dealer, per day, each carrying a robust median across that dealer’s own listings for the product, with the lowest and highest behind it and the number of listings the median was taken from. Beside the price sit the pack size, the active-ingredient loading read straight off the formulation code, and, wherever the pack is a bulk substance, the price per litre or kilogram too.
It fills the gap between the 2 price series that came before it. The official market table covers fertilizer and food staples, what a farmer sells and the 1 input everyone already measures. This one covers what a farmer spends in between: the fungicide, the insecticide, the herbicide, the seed and the foliar feed that decide whether the crop reaches the market at all.
Availability is the signal, not a footnote
2 fields carry as much information as the price itself: the share of a product’s listings currently purchasable, and the share sitting on backorder. A product whose price holds perfectly steady while it quietly stops being purchasable at one dealer after another is genuinely in short supply, and the price series alone would never say so; a shelf that’s empty simply has no price left to report. The stock-out shows up in the data before the price ever reacts to it.
That’s also why a row survives even once the product is unbuyable. A listing that’s out of stock still carries its price and gets recorded as unpurchasable, rather than dropped for having nothing left to sell.
Where a per-unit price means something, and where it does not
The per-litre and per-kilogram figure only gets computed where the pack holds a bulk substance. For seed it stays empty on purpose. A price per kilogram of seed is arithmetically valid and agronomically meaningless at once, since what a farmer buys is really a plant population over an area, and pack weights differ by variety, treatment and thousand-grain weight. A field that would invite the wrong comparison is better left empty than filled in.
The discount figure carries a similar warning. It compares a listing against that same dealer’s own reference price, so it’s readable within 1 dealer and misleading the moment you compare across several; some dealers discount a handful of lines occasionally, others discount everything permanently as a matter of pricing style. A unit count gets published on well under 1 listing in 100, so treat it as a bonus wherever it turns up rather than a field worth filtering on.
What this pairs with
The value here was never the price on its own; it’s the price read beside the pressure. The platform already carries per-threat disease and pest risk computed straight off a field’s own weather, plus the news signals that report input-cost changes as they get written about. Reading a fungicide’s shelf price and availability against the exact disease risk that calls for it is the question this dataset exists to make answerable.
Coverage of the input price data
The series began in September 2026 and is read daily, so its history stays short and grows a day at a time; the fertilizer and staple series remain the place to go for years of depth. It draws on several Kenyan agro-dealer catalogues, each recorded under its own source tag, and it’s built to tolerate 1 of them going unreachable on a given day rather than failing the whole run. A dealer that stops being read leaves its history exactly in place and simply stops adding to it, so a gap in 1 source shows up as a gap rather than getting silently redistributed across the others.
Prices here are what the shelf asked, never what a buyer paid, and they stay Kenyan retail throughout. There’s no wholesale reading in this dataset and no negotiated price; for the wholesale-against-retail spread, the official market table is the series that carries both sides.