How we build these listings

The full method, including the parts that do not work well. If you are going to rely on this data, you should know how it was made.

The short version

Every UK food business has to register with its local council. Those registrations are published by the Food Standards Agency as the Food Hygiene Rating Scheme, under an open licence. We search that register nationally for farm-related businesses, classify what we find, attach proper geography from the ONS postcode directory, and publish one page per business.

Nothing is scraped from another directory. Nothing is written by pulling facts out of the air. If a fact is on a listing page, it came from a named source that page links to.

Step 1 — Harvest

We query the FSA API for eleven farm-related terms across the whole UK: farm, farm shop, pick your own, pyo, farm park, creamery, vineyard, orchard, smallholding, market garden and dairy. That returned 9,295 unique registered businesses on the last run.

This is a name-based search, and that is a real limitation: a farm shop registered as “Hill House Ltd” will not be found. We accept that miss in exchange for not sweeping in thousands of businesses that have nothing to do with farming.

Step 2 — Classify, and throw most of it away

Of those 9,295 records, 3,024 survive to publication. The rest are removed, in this order:

RuleWhy
Drop care homes, schools, colleges, hospitals “Orchard House Nursing Home” matches orchard. It is not a farm.
Drop a name blocklist Farmfoods branches, pubs called The Farmers Arms, pharmacies, sheltered housing.
Drop “Exempt” businesses with generic names An Exempt rating usually means low-risk primary production — a farm gate, not a shop counter. This one matters: Dumfries and Galloway council registers 230 dairy holdings this way, against 10–18 in comparable counties. Left in, they would have made it the best-served county in Britain for places to visit, which is nonsense.
Drop production-only premises A business registered as “Manufacturers/packers” with a generic name is a processing unit the public cannot walk into. Explicitly named farm shops and creameries are kept whatever their registration type.
Drop records with no postcode We cannot place them, so we cannot honestly list them.
Deduplicate on name + postcode Businesses re-register; the register keeps both rows.

What survives is sorted into 6 categories:

Step 3 — Locate

Each postcode goes through postcodes.io, which is built on the ONS Postcode Directory and OS Code-Point Open, to get its district, county, region and country. Where the FSA record has no coordinates, we use the postcode centroid instead.

About 15% of FSA records carry only an outward code — “NR21” rather than “NR21 7PL”. Those are placed using the outward code centroid and labelled Approximate location on the listing. We would rather show that badge than quietly drop a pin in the wrong village.

County means the administrative county where there is one, and the unitary or council area otherwise. So Devon is Devon, but Cornwall and Bristol appear as themselves. That is why there are 206 “counties” here rather than the 48 ceremonial counties of England.

Step 4 — Decide what deserves to be in Google

Not every page we build is offered to search engines. Two thresholds apply:

2,942 of 3,024 listings currently clear that bar.

Step 5 — Joining the business layer

The farm business profiles are built from a different set of sources: Companies House filings, Defra farm subsidy payments and the Environment Agency's permit register. None of these share a common identifier — Defra publishes a recipient name and a postcode district, not a company number — so the join is a matching problem, and matching problems produce wrong answers unless you are strict.

Names are normalised first: lower-cased, punctuation removed, and legal suffixes (Limited, Ltd, LLP, & Sons) stripped, so “J SMITH & SONS LTD” and “J Smith and Sons” become the same string. Candidates are then blocked by postcode district and scored:

EvidenceConfidenceUsed?
Exact name + exact full postcode97%Yes
Near-exact name + exact full postcode90%Yes
Exact name + same postcode district88%Yes
Near-exact name + same postcode district74%No
Exact name, no location match55%No

Anything below 85% is discarded. Every profile page prints the evidence and the confidence figure for each source it used, so you can see what the link actually rests on rather than taking the join on trust.

A company page is only offered to search engines if it has facts from at least two sources and four joined facts overall. Companies House records on their own — around 32,000 of them — still get a page so the record exists and is linkable, but carry noindex.

Step 6 — Photographs and Wikipedia

A small number of listings match an entity in Wikidata. Farm names are extremely repetitive, so a name match on its own is worthless: “Rose Farm” matches a dozen unrelated articles. Every match therefore requires a strong name similarity and coordinates within about 2km of the farm itself. An earlier, looser version of this rule put a photograph of the wrong Rose Farm on a listing, which is precisely the failure the current thresholds exist to prevent.

Twenty of roughly three thousand listings clear that bar. Twelve have a photograph. Everything else has none, and the pages are built to look correct without one rather than reaching for a substitute.

We do not put stock photos on listings. Generic farm photographs appear only as headers on category pages, captioned “Illustration only — not a photograph of this business”. A pretty picture of someone else's farm shop on your listing would be a small lie told thousands of times.

Step 7 — Finding farms' own websites

The registers hold no website address, so we look for one. Candidate domains are generated from the business name, checked by DNS, and only then fetched — one homepage, plus at most two pages the site's own navigation points at for contact details. We identify ourselves as StackyardBot and honour robots.txt.

The interesting part is how many of those guesses are wrong. In a 250-farm test, 80% of guessed domains responded with a real web page, but only 22% belonged to the farm we were looking for. The rest included an advertising broker, a graphic design studio, an electronics distributor and two dozen parked domains advertising themselves for sale. Publishing on "the domain resolved" would have put a wrong link on roughly three listings in every four.

So a link is only shown once the page corroborates the match:

EvidenceConfidenceLink shown?
The farm's full postcode appears on the site97%Yes
Whole name in the page title, plus its town90%Yes
Whole name in the page title, plus postcode district88%Yes
Whole name in the page text, plus its town80%No
Name in the page title and nothing else60%No

The postcode test does most of the work, and it is close to unfakeable: a stranger's website has no reason to carry this farm's postcode.

Step 8 — What we take from those sites

Opening hours, a phone number, and flags for things the site mentions — a butchery counter, raw milk, a cafe, pick-your-own. Those are facts, and facts are free to state. What we do not take is the farm's own writing. There is no summary of their site here, because a directory that saves you from visiting the business is working against the business.

Every hours listing shows the date we read it. Farm hours move with lambing, harvest and the weather, so treat anything on this site as a prompt to check rather than a timetable.

What this data is bad at

Stated plainly, because you will find these limits yourself otherwise:

Updates

The pipeline is three scripts — harvest, classify, enrich — and re-running it rebuilds the whole site. Data was last retrieved on 1 August 2026, and every page shows that date so you can tell how stale you are looking at.

Found something wrong? Report it here — corrections are free and so is removal.