UK Food Hygiene Ratings & Business Scraper
Pricing
from $6.80 / 1,000 results
UK Food Hygiene Ratings & Business Scraper
Scrape UK food business hygiene ratings from the Food Standards Agency. Get business name, full address, postcode, hygiene rating, inspection date, local authority, coordinates and phone when published. Great for UK business leads and research. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share
UK Food Hygiene Ratings & Business Scraper
Here is one real result, with every field the actor returns:
{"fhrsId": 1675990,"businessName": "Cafe","businessType": "Restaurant/Cafe/Canteen","businessTypeId": 1,"addressLine1": "Whistlestop Valley Ltd","addressLine2": "Park Mill Way","addressLine3": "Clayton West","addressLine4": "Huddersfield","fullAddress": "Whistlestop Valley Ltd, Park Mill Way, Clayton West, Huddersfield","postCode": "HD8 9XJ","phone": null,"ratingValue": "5","ratingKey": "fhrs_5_en-gb","ratingDate": "2025-08-08T00:00:00","newRatingPending": false,"schemeType": "FHRS","hygieneScore": 5,"structuralScore": 5,"confidenceInManagementScore": 5,"rightToReply": null,"localAuthorityBusinessId": "PI/000311520","localAuthorityCode": "411","localAuthorityName": "Kirklees","localAuthorityEmail": "food.safety@kirklees.gov.uk","localAuthorityWebsite": "http://www.kirklees.gov.uk/","latitude": 53.5970628,"longitude": -1.6117081,"fsaProfileUrl": "https://ratings.food.gov.uk/business/1675990","source": "UK Food Standards Agency","observedAt": "2026-08-10T14:31:03.272Z"}
The most complete UK food hygiene ratings scraper available. It returns every field the Food Standards Agency publishes for each food business, plus derived fields like a single-line fullAddress and a ready-to-open fsaProfileUrl, and gives you three filters to target exactly the businesses you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the UK Food Standards Agency food hygiene ratings database, applies the filters you pass as input (business name, address or town, and business type), paginates through the matching food businesses, and writes one normalized record per business to the run's dataset. Each record carries the business name, full split address plus a single-line fullAddress, postcode, hygiene rating and the three underlying component scores (hygiene, structural, confidence in management), the responsible local authority with its contact email and website, map coordinates, and a direct link to the FSA business profile. Missing source values are returned as null.
Data covers food businesses registered in the UK Food Hygiene Rating Scheme (FHRS in England, Wales and Northern Ireland) and the Food Hygiene Information Scheme (FHIS in Scotland). It is business and premises data, not consumer or menu data.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the first 10 businesses whose name contains "cafe".
{"maxBusinesses": 10,"name": "cafe"}
Provide a name, an address, or both. At least one of name or address is required; with neither, the actor returns a single record explaining that a search term is needed.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxBusinesses | integer | no | 10 | Maximum number of businesses to collect. The actor paginates the source 50 records at a time until this count is reached. |
name | string | no | (empty) | Business name or a keyword in the name, for example cafe, nando, bakery. Leave blank to search by address only. |
address | string | no | (empty) | Address, town, city or postcode, for example Manchester, Leeds, SW1. Combine with name for a tighter search. |
businessTypeId | integer | no | (any) | Restrict to one FSA business type by its numeric id, for example 1 = Restaurant/Cafe/Canteen, 7844 = Takeaway, 7838 = Retailers - other. Leave blank for all types. |
At least one of name or address must be supplied. Filters combine with logical AND.
Output reference
One dataset item per food business. Types: string, integer, number, boolean, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
fhrsId | integer | Food Hygiene Rating Scheme ID, unique per business premises. |
businessName | string | Registered trading name of the food business. |
businessType | string | FSA business type label, for example Restaurant/Cafe/Canteen, Takeaway/sandwich shop. |
businessTypeId | integer | Numeric FSA business type id. |
addressLine1 | string | First line of the premises address, or null. |
addressLine2 | string | Second line of the premises address, or null. |
addressLine3 | string | Third line of the premises address, or null. |
addressLine4 | string | Fourth line of the premises address, or null. |
fullAddress | string | The non-empty address lines joined into one line, ready for CRM or mapping. |
postCode | string | UK postcode of the premises. |
phone | string | Business phone number when published by the local authority, otherwise null. |
ratingValue | string | Hygiene rating as published: 0 to 5 for FHRS, or Pass, Improvement Required, etc. for FHIS. |
ratingKey | string | FSA rating key used for the official rating badge, for example fhrs_5_en-gb. |
ratingDate | string | Date of the inspection the rating is based on. |
newRatingPending | boolean | true when a new rating has been given but not yet published, else false. |
schemeType | string | FHRS (England, Wales, Northern Ireland) or FHIS (Scotland). |
hygieneScore | integer | Hygiene component score (lower is better), or null. |
structuralScore | integer | Structural component score (lower is better), or null. |
confidenceInManagementScore | integer | Confidence in management component score (lower is better), or null. |
rightToReply | string | Business owner right-to-reply statement when present, otherwise null. |
localAuthorityBusinessId | string | The local authority's own reference for the premises. |
localAuthorityCode | string | FSA code of the responsible local authority. |
localAuthorityName | string | Name of the responsible local authority. |
localAuthorityEmail | string | Food safety contact email for the local authority. |
localAuthorityWebsite | string | Website of the local authority. |
latitude | number | Latitude of the premises, or null. |
longitude | number | Longitude of the premises, or null. |
fsaProfileUrl | string | Direct link to the business profile on ratings.food.gov.uk. |
source | string | Always UK Food Standards Agency. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | Present only on a failed or empty search; a single item with this field is written instead of business records. |
Example output record
Real record from a live run (input {"maxBusinesses": 10, "name": "cafe"}):
{"fhrsId": 1675990,"businessName": "Cafe","businessType": "Restaurant/Cafe/Canteen","businessTypeId": 1,"addressLine1": "Whistlestop Valley Ltd","addressLine2": "Park Mill Way","addressLine3": "Clayton West","addressLine4": "Huddersfield","fullAddress": "Whistlestop Valley Ltd, Park Mill Way, Clayton West, Huddersfield","postCode": "HD8 9XJ","phone": null,"ratingValue": "5","ratingKey": "fhrs_5_en-gb","ratingDate": "2025-08-08T00:00:00","newRatingPending": false,"schemeType": "FHRS","hygieneScore": 5,"structuralScore": 5,"confidenceInManagementScore": 5,"rightToReply": null,"localAuthorityBusinessId": "PI/000311520","localAuthorityCode": "411","localAuthorityName": "Kirklees","localAuthorityEmail": "food.safety@kirklees.gov.uk","localAuthorityWebsite": "http://www.kirklees.gov.uk/","latitude": 53.5970628,"longitude": -1.6117081,"fsaProfileUrl": "https://ratings.food.gov.uk/business/1675990","source": "UK Food Standards Agency","observedAt": "2026-08-10T14:31:03.272Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~uk-food-hygiene-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"name":"cafe","address":"Manchester","maxBusinesses":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~uk-food-hygiene-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"address":"Leeds","businessTypeId":7844,"maxBusinesses":100}'
Apify CLI:
apify call scrapers_lat/uk-food-hygiene-scraper \--input '{"name":"bakery","address":"SW1"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors or the search matches nothing, the actor writes a single item with an
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for a higher
maxBusinesses. - Search-based results. Results are drawn from the FSA search for your name and address terms; broaden the terms to widen coverage or narrow them to sharpen it.
FAQ and troubleshooting
A run returned only an error record. Why?
You ran with neither name nor address. Supply at least one search term. This case is not charged.
How do I get every restaurant in a town?
Set address to the town or postcode, set businessTypeId to 1 for Restaurant/Cafe/Canteen, and raise maxBusinesses. Leave name blank.
What do the hygiene, structural and management scores mean?
They are the three components behind the headline rating. Lower numbers are better; 0 is the best possible for each component. The headline ratingValue (0 to 5) summarizes them.
Why is phone or rightToReply null?
The FSA only publishes those when the local authority or business supplies them. Missing source values are returned as null, never invented.
What is the difference between FHRS and FHIS?
England, Wales and Northern Ireland use FHRS with a 0 to 5 numeric rating. Scotland uses FHIS with a pass or improvement-required style rating. The schemeType field tells you which applies.
Is this an official FSA tool? No. This actor is independent and has no affiliation with the Food Standards Agency. It reads only data that the FSA publishes as open data. Use it in accordance with the FSA terms.
Related scrapers
- UK Companies House Officers & Filings Scraper: UK Gazette insolvency and corporate notices.
- UK Land Registry Sold Prices Scraper: UK residential property sold prices.
- Checkatrade UK Trades Scraper: UK vetted trades and reviews.
- Gumtree UK Listings Scraper: UK classifieds and vehicles.
- EU RASFF Food Alerts Scraper: EU food and feed safety alerts.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US, UK, European and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the UK Food Standards Agency. Accesses only publicly available FSA open data. Use in accordance with the FSA terms.
