UK Food Hygiene Ratings Scraper avatar

UK Food Hygiene Ratings Scraper

Pricing

from $2.50 / 1,000 food hygiene rating results

Go to Apify Store
UK Food Hygiene Ratings Scraper

UK Food Hygiene Ratings Scraper

Search official Food Standards Agency FHRS/FHIS data and return one structured record per UK food establishment. Filter by name, postcode/address, radius, rating, scheme, local authority, business type, or exact FHRS ID across England, Wales, Northern Ireland, and Scotland.

Pricing

from $2.50 / 1,000 food hygiene rating results

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

UK Food Hygiene Ratings Scraper searches the official Food Standards Agency (FSA) Food Hygiene Rating Scheme (FHRS) and Food Hygiene Information Scheme (FHIS) API and returns one structured dataset item per UK food establishment. It is designed for local restaurant research, food-safety monitoring, compliance workflows, property and location analysis, lead enrichment, and AI agents that need current public hygiene-rating records.

What this actor does

Use it when you need official hygiene ratings for restaurants, cafes, takeaways, pubs, hotels, supermarkets, schools, or other food businesses in England, Wales, Northern Ireland, or Scotland. Search by business name, address or postcode, coordinates and radius, rating, scheme, local authority, business type, or exact FHRS ID. The actor uses the FSA API directly, so it does not need browser automation, cookies, or an API key.

The default input searches for restaurant and returns up to 25 records. Results are capped before charging, and the actor uses the FSA-recommended paged requests of 200 records or fewer with configurable flow control.

Output and price

Each returned establishment costs $0.0025 per result, plus Apify platform compute according to your selected billing model. A small 25-result search therefore has a typical result-event charge of $0.0625, excluding platform compute. The actor stops before emitting a record when the per-run result cap or PPE event limit is reached.

The dataset contains businessName, ratingValue, ratingKey, schemeType, ratingDate, newRatingPending, address fields, postcode, phone, FSA scores when supplied, coordinates, distance, local authority details, fsaUrl, apiUrl, and scrapedAt. A run summary is written to the OUTPUT key-value record with counts, pages, warnings, and the FSA source.

When to use it

  • Find all food businesses with a particular rating near a UK postcode or coordinate.
  • Monitor a restaurant group, local authority, town, or business category.
  • Retrieve exact records when you already have FHRS IDs.
  • Build a local food-safety dataset for dashboards, research, or AI workflows.
  • Enrich a list of venues with the latest public rating and inspection date.

This actor is for FHRS/FHIS establishment data. It is not a restaurant review scraper, menu scraper, food-delivery scraper, or general business directory scraper.

Input

All fields are optional. The default searchQuery is restaurant.

FieldDescription
searchQueryBusiness-name keyword, such as The Golden Lion or pizza.
addressStreet, town, city, or UK postcode, such as B1 1AA.
latitude, longitudeDecimal coordinate pair for a radius search.
radiusMilesCoordinate-search radius from 0.1 to 100 miles; default 5.
establishmentIdsExact FHRS IDs, such as [80928, 1865746]; when present, search filters are ignored.
schemeTypeFHRS for ratings or FHIS for Scotland information statuses.
ratingFHRS value such as 5 or FHIS status such as Pass.
ratingOperatorEqual, GreaterThanOrEqual, or LessThanOrEqual for numeric FHRS ratings.
businessTypeIdOfficial FSA business-type identifier.
localAuthorityIdOfficial FSA local-authority identifier.
countryIdOfficial FSA country identifier.
sortByRelevance, rating, desc_rating, alpha, desc_alpha, or distance.
maxResultsMaximum records and maximum result-event charges; 1–1000, default 25.
pageSizeFSA page size; 1–200, default 100.
requestDelayMsDelay between requests; 100–10000 ms, default 500.

For an exact record lookup:

{
"establishmentIds": [1865746]
}

For nearby five-star businesses:

{
"searchQuery": "",
"address": "",
"latitude": 51.5074,
"longitude": -0.1278,
"radiusMiles": 2,
"rating": "5",
"sortBy": "distance",
"maxResults": 50
}

Output example

{
"fhrsId": 1865746,
"businessName": "The Golden Lion",
"businessType": "Restaurant/Cafe/Canteen",
"address": "10 High Street, Cambridge, CB2 1AA",
"postcode": "CB2 1AA",
"ratingValue": "5",
"ratingKey": "fhrs_5_en-gb",
"schemeType": "FHRS",
"ratingDate": "2026-07-29T00:00:00",
"newRatingPending": false,
"localAuthorityName": "Cambridge City",
"fsaUrl": "https://ratings.food.gov.uk/business/1865746"
}

How to use it from code

JavaScript with the Apify client:

const run = await apifyClient.actor('YOUR_USERNAME/uk-food-hygiene-ratings-scraper').call({
searchQuery: 'pizza',
address: 'Birmingham',
rating: '5',
maxResults: 25,
});
const { items } = await apifyClient.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python with the Apify client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("YOUR_USERNAME/uk-food-hygiene-ratings-scraper").call({
"searchQuery": "cafe",
"address": "Leeds",
"maxResults": 20,
})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(items)

Data source, freshness, and limitations

The source is the public Food Standards Agency FHRS API v2. The FSA data reflects the hygiene standards found at the date of inspection or visit; a food hygiene rating is not a guide to food quality. Records may have newRatingPending: true, and FHRS IDs can change when local authorities change or merge source databases. The source is updated by the FSA and participating local authorities, so the actor does not guarantee a particular update time or coverage for an individual authority.

The FSA applies traffic shaping. HTTP 403 and 429 responses can mean the service is throttling requests. This actor retries transient responses with exponential backoff and adds a configurable delay between pages, but a large run can still receive a partial result. Check the OUTPUT key for warnings. For full nightly authority downloads, use the FSA open-data files rather than repeatedly querying the live API.

Use the FSA data according to the FSA open-data terms and guidance and the FHRS API documentation. Do not present a rating as a food-quality or safety guarantee, and direct questions about a specific business to the responsible local authority.

Explore related categories and dedicated actors for restaurant data, Google Maps leads, business directories, local business data, postcode data, location intelligence, compliance data, and public records.

FAQ

Is an API key required?

No. The FSA documents this as a public API with no registration requirement. The actor sends the required API-version header and handles ordinary throttling responses.

Can I search by postcode?

Yes. Put the postcode in address, for example B1 1AA. You can also combine an address with a name keyword.

Can I retrieve a single business?

Yes. Supply its FHRS ID in establishmentIds, for example [1865746]. This uses the direct FSA establishment endpoint.

Why did I receive fewer results than requested?

The FSA may return fewer matches than the cap, a filter may be restrictive, the source may be throttling, or the actor may have stopped after a diagnostic failure. Inspect OUTPUT.warnings, totalMatchingRecords, and pagesFetched.

What is the difference between FHRS and FHIS?

FHRS provides numeric hygiene ratings in England, Wales, and Northern Ireland. FHIS is the information scheme used in Scotland and can return statuses such as Pass, ImprovementRequired, or AwaitingInspection.