UK Food Hygiene Ratings (FSA FHRS) Scraper avatar

UK Food Hygiene Ratings (FSA FHRS) Scraper

Pricing

from $2.00 / 1,000 result items

Go to Apify Store
UK Food Hygiene Ratings (FSA FHRS) Scraper

UK Food Hygiene Ratings (FSA FHRS) Scraper

Scrape UK Food Hygiene Ratings from the FSA FHRS API (ratings.food.gov.uk) by postcode, name, council or type. Ideal for restaurant lead generation, compliance checks and market research.

Pricing

from $2.00 / 1,000 result items

Rating

0.0

(0)

Developer

La Fabbrica LLC

La Fabbrica LLC

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

What does UK Food Hygiene Ratings (FSA FHRS) Scraper do?

UK Food Hygiene Ratings (FSA FHRS) Scraper pulls official food hygiene ratings for restaurants, cafes, takeaways, pubs, shops, schools, hospitals and every other rated food business in the United Kingdom, straight from the Food Standards Agency's public ratings API. You search by business name, address, postcode, local authority (council), business type or rating, and get a clean dataset (JSON, CSV, Excel) or API feed with the rating, inspection date, the three inspection sub-scores, full address and coordinates.

It covers both UK schemes:

  • FHRS (England, Wales, Northern Ireland): ratings 0 to 5.
  • FHIS (Scotland): Pass, Improvement Required, Awaiting Inspection, Exempt.

No API key, no login, no proxies. The data is published by the FSA under the Open Government Licence v3, so you can reuse it commercially as long as you keep the attribution (see the licence section below).

The actor does not collect personal data. The API's telephone field and the council e-mail address are deliberately dropped and are not available as options.

Why use it?

  • Hospitality lead lists: every restaurant, pub or takeaway in a postcode area or council with its rating and address, ready for a CRM.
  • Due diligence for insurers, lenders, landlords and franchisors: check the current rating, rating date and whether a new rating is pending for a set of premises.
  • Territory and competitor analysis: count 5-rated versus low-rated businesses by business type in a council area; plot them with the coordinates.
  • Compliance monitoring: schedule a weekly run for your own sites or your suppliers and get alerted when a rating changes.
  • Data for apps, dashboards and AI agents: structured, licensed rows without writing any FSA API code.

On Apify you also get scheduling, webhooks, run monitoring and integrations (Google Sheets, Make, Zapier, LangChain, MCP).

What data does it return?

One row per establishment (mode search):

FieldTypeDescription
fhrsIdintegerFSA establishment id, stable across re-inspections
businessstringTrading name of the establishment
businessTypestringe.g. Restaurant/Cafe/Canteen, Takeaway/sandwich shop
businessTypeIdintegerId usable as the businessTypeId filter
ratingValuestring0-5 (FHRS) or Pass, Improvement Required, Exempt, ... (FHIS)
ratingKeystringAPI key of the rating, e.g. fhrs_5_en-gb
ratingDatestring or nullDate of the rating, YYYY-MM-DD
newRatingPendingbooleanA re-inspection result is waiting to be published
schemeTypestringFHRS or FHIS
localAuthoritystringCouncil that carried out the inspection
localAuthorityCodestringCouncil code printed on FSA records
addressLine1-addressLine4string or nullBusiness address
postcodestring or nullBusiness postcode
latitude, longitudenumber or nullWGS84 coordinates, when the FSA has geocoded the premises
scores.hygieneinteger or nullHygienic food handling sub-score (FHRS only, lower is better)
scores.structuralinteger or nullCleanliness and condition of premises sub-score
scores.confidenceInManagementinteger or nullManagement of food safety sub-score
fsaUrlstringPublic FSA page for the establishment
meta.sourceUrlstringThe API request the row came from
meta.licencestringOGL v3
meta.attributionstringAttribution statement to keep when you republish
meta.retrievedAtstringUTC timestamp of retrieval

Lookup modes return short tables instead:

  • localAuthorities: localAuthorityId, localAuthorityCode, localAuthority, establishmentCount, schemeType (363 rows).
  • businessTypes: businessTypeId, businessType (14 rows).

How to use it

  1. Pick a Mode. search is the default.
  2. Fill in at least one filter: Business name, Address terms, Postcode, Local authority id, Business type id or Rating. Filters combine with AND. The defaults (local authority 120 = Westminster, rating 5) give a working search straight away; change or clear them to search elsewhere.
  3. Set Max items (default 50, maximum 5,000). You pay only for rows actually saved.
  4. Start the run. Rows appear in the Output tab as pages arrive; download them or read them through the API.

Need a council or business type id? Run the actor once with mode localAuthorities or businessTypes and copy the id from the result. Note that localAuthorityId is the API's own id (Westminster = 120, Manchester = 180, Cardiff = 339), not the three-digit code printed on establishment records.

Example input

The default input (5-rated businesses in Westminster, first 50 rows):

{
"mode": "search",
"localAuthorityId": 120,
"ratingKey": "5",
"maxItems": 50
}

Every 5-rated restaurant in Westminster:

{
"mode": "search",
"localAuthorityId": 120,
"businessTypeId": 1,
"ratingKey": "5",
"maxItems": 500
}

Everything in a postcode area:

{
"mode": "search",
"postcode": "SW1A",
"maxItems": 200
}

Example output

[
{
"fhrsId": 412156,
"business": "86 St James Limited",
"businessType": "Other catering premises",
"businessTypeId": 7841,
"ratingValue": "5",
"ratingKey": "fhrs_5_en-gb",
"ratingDate": "2025-05-29",
"newRatingPending": false,
"schemeType": "FHRS",
"localAuthority": "Westminster",
"localAuthorityCode": "533",
"addressLine1": "86 ST JAMES'S STREET",
"addressLine2": null,
"addressLine3": "LONDON",
"addressLine4": null,
"postcode": "SW1A 1PL",
"latitude": 51.5052003,
"longitude": -0.1386974,
"scores": { "hygiene": 5, "structural": 0, "confidenceInManagement": 0 },
"fsaUrl": "https://ratings.food.gov.uk/business/412156",
"meta": {
"sourceUrl": "https://api.ratings.food.gov.uk/Establishments?address=SW1A&sortOptionKey=Relevance&pageNumber=1&pageSize=50",
"licence": "OGL v3",
"licenceUrl": "https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",
"attribution": "Contains public sector information licensed under the Open Government Licence v3.0. Source: Food Standards Agency, Food Hygiene Rating Scheme.",
"retrievedAt": "2026-09-18T10:07:54.151Z"
}
}
]

How much does it cost?

The actor uses pay-per-event pricing. You pay two things and nothing else:

EventPriceWhen
Actor start$0.01Once per run, after your input has been validated
Result item$0.002Once per row saved to the dataset

A run that returns 100 establishments costs $0.21; 1,000 establishments cost $2.01; the full local authority lookup (363 rows) costs $0.74. Set Maximum cost per run in the run options to cap spending: the actor stops cleanly at the cap and you keep every row saved up to that point. There is no charge for runs that fail on input validation. The actor needs very little memory (256 MB is enough), so platform usage on top of the event prices is negligible.

Limits

  • Maximum 5,000 rows per run. Split larger jobs by council, business type or rating (the run log tells you how many establishments matched in total).
  • The search covers the FSA API's own filters: name, address/postcode terms, council, business type, rating and scheme. Free-text search is word based, not fuzzy; try a shorter term if you get no results.
  • Scottish (FHIS) establishments have no numeric sub-scores; scores.* is null for them.
  • Latitude and longitude are null for premises the FSA has not geocoded.
  • The FSA data is refreshed by local authorities on their own schedules; ratingDate tells you how old a rating is.
  • The actor calls the public FSA API sequentially with a short pause between pages. If the API is temporarily unavailable it retries with backoff and then fails with a clear message.

Data licence and attribution

The output contains public sector information licensed under the Open Government Licence v3.0. Source: Food Standards Agency, Food Hygiene Rating Scheme (FHRS) and Food Hygiene Information Scheme (FHIS), retrieved via the FSA ratings API. When you publish or redistribute the data, keep this attribution:

Contains public sector information licensed under the Open Government Licence v3.0. Source: Food Standards Agency.

The FSA is not affiliated with this actor and does not endorse it.

FAQ and support

Is the data personal data? The rows describe businesses and premises, not people. The actor never outputs the telephone field or e-mail addresses. Some sole traders trade under their own name; if you build lists from the output, you remain responsible for using them lawfully (UK GDPR and PECR apply to marketing).

Why does a filter return zero rows? The most common cause is using the council code (e.g. 533) as localAuthorityId; use the API id from mode localAuthorities instead (Westminster is 120). Rating keys are exact: 5, not 5 stars.

Something looks wrong? Open a report in the Issues tab with your input and the run id. Issues are answered within one working day.

Need programmatic access? See the API tab for ready-made snippets in JavaScript, Python and curl.