UK Food Hygiene Ratings Scraper (FHRS FSA Data JSON) avatar

UK Food Hygiene Ratings Scraper (FHRS FSA Data JSON)

Pricing

from $3.20 / 1,000 establishment delivereds

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

UK Food Hygiene Ratings Scraper (FHRS FSA Data JSON)

Get UK food establishment hygiene ratings directly from the Food Standards Agency (FSA) open-data API. Automate food-safety due diligence, site monitoring and compliance dashboards. Filter by local authority and minimum rating. No login required.

Pricing

from $3.20 / 1,000 establishment delivereds

Rating

0.0

(0)

Developer

Steadfetch

Steadfetch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Features

Limited permissions

Share

This Actor returns UK food establishment hygiene ratings from the official Food Standards Agency open data API: one validated JSON item per food business with its FHRS ID, business name and type, published address and postcode, local authority, current rating value and rating date, and coordinates - for supplier screening, food-safety monitoring and UK market research.

Tested daily. Last verified: 2026-11-03

What it does

  • Queries the FSA /Establishments API (version 2) over plain HTTP: the API is free, needs no registration or key, and there is no login, CAPTCHA or browser; the Actor does not scrape the ratings website.
  • Filters by local authority (region: one or more FSA authority names, comma-separated), minimum numeric rating (minRating, 0-5), scheme (FHRS for England, Wales and Northern Ireland, or FHIS for Scotland) and caps delivery with maxResults.
  • Validates every item against .actor/dataset_schema.json before it reaches the dataset; with strictSchema: true (the default) an invalid item fails the run instead of being pushed.
  • Returns business premises fields only: no phone numbers, email addresses or any individual's data, as the dataset schema states.
  • Data is published by the FSA under the Open Government Licence v3.0.
  • Limits: minRating excludes non-numeric values such as AwaitingInspection and applies to FHRS only - FHIS uses Pass / Improvement Required, so omit it for FHIS runs. An empty region queries every authority, bounded by maxResults.

How to use

  1. Run it from the terminal with the Apify CLI, using the same input as the Store example:
$apify call steadfetch/uk-food-hygiene-monitor --input='{"region":"Camden","maxResults":10}'
  1. Or open the Run tab in the Apify console: enter one or more local-authority names in region, optionally set minRating and schemeType, and cap the run with maxResults.
  2. Schedule the run to monitor a council area and watch ratings change; read results from the default dataset. With monitorMode on (the default), rating snapshots already delivered to your Apify user are not pushed again, and a changed rating re-delivers the establishment.

Input

Input fields

FieldTypeRequiredDefault/PrefillDescriptionExample
regionstringNoPrefill CamdenOne or more FSA local-authority names, comma-separated. Leave empty to query every authority (scoped by maxResults).Camden
minRatingintegerNoNone; minimum 0; maximum 5Only return establishments whose numeric rating is greater than or equal to this value. Non-numeric ratings such as AwaitingInspection are excluded when set; applies to FHRS only.4
schemeTypestring (select)NoDefault FHRSFHRS (Food Hygiene Rating Scheme, England/Wales/Northern Ireland) or FHIS (Food Hygiene Information Scheme, Scotland).FHIS
maxResultsintegerNoDefault 100; minimum 1; maximum 20,000; prefill 10Maximum number of validated establishments to save to the dataset.10
monitorModebooleanNoDefault true, prefill falseMonitor mode: rating snapshots already delivered to this Apify user for the same watch (scheme type, region, minimum rating) are not pushed again; a changed rating value or date re-delivers the establishment. Disable for a one-off backfill; the Store default input disables it so the daily probe always sees establishments.false
strictSchemabooleanNoDefault trueFail the run when an item does not match the output schema. Keep enabled: Steadfetch never publishes Actors without output-schema validation.true

No input field is required; an empty run queries every authority up to maxResults under the default FHRS scheme.

Example input

{
"region": "Camden",
"maxResults": 10
}

Wider filtered run:

{
"region": "Bristol, Bath and North East Somerset",
"minRating": 4,
"schemeType": "FHRS",
"maxResults": 1000
}

Output

Example output

One record per establishment, built from the published dataset schema examples:

{
"url": "https://ratings.food.gov.uk/business/1824267",
"title": "1 REBEL",
"scrapedAt": "2026-10-19T12:00:00.000Z",
"fhrs_id": "1824267",
"business_name": "1 REBEL",
"business_type": "Restaurant/Cafe/Canteen",
"address_line": "1 Rebel House, 1 Rebels Lane",
"postal_code": "NW1 0AA",
"local_authority_name": "Camden",
"rating_value": "5",
"rating_date": "2026-03-18",
"latitude": 51.528421,
"longitude": -0.1314354
}

Output fields

FieldTypeDescription
urlstring (URI)Public FSA ratings page for this establishment.
titlestring or nullDisplay title: business name, mirrored for the common Steadfetch envelope.
scrapedAtstring (date-time)ISO 8601 UTC timestamp of the scrape.
fhrs_idstringFood Hygiene Rating Scheme establishment identifier.
business_namestringBusiness name as published by the FSA.
business_typestringBusiness type, e.g. Restaurant/Cafe/Canteen.
address_linestringFirst public address line published by the FSA.
postal_codestringPostal code of the premises.
local_authority_namestringLocal authority that owns the inspection.
rating_valuestringPublished rating: 0-5, Pass, Improvement Required, AwaitingInspection, AwaitingPublication or Exempt.
rating_datestring (date)Date of the rating.
latitudenumberLatitude of the establishment.
longitudenumberLongitude of the establishment.

Pricing

Pay-per-event pricing from .actor/pay_per_event.json, using only the two synthetic platform events:

EventCharged whenPrice
apify-actor-starta run starts0.00005 USD per run; includes the first 5 seconds of compute
apify-default-dataset-iteman establishment is saved to the dataset0.004 USD per result = 4.00 USD per 1,000 results
monitor-checka watched item is checked in a monitor run0.0005 USD per check = 0.5 USD per 1,000 checks

Results are never double billed: monitor-check bills the check itself in monitor mode, and apify-default-dataset-item charges each pushed snapshot once. Items that fail schema validation are not pushed and are not billed as dataset items, and runs that return nothing cost only the automatic run-start event; failed requests and retries are not charged per result.

Works on the Apify free plan - about 1,249 establishments for the $5 monthly credit ((5.00 USD - 0.0002 USD run-start at the default 4 GB memory) / 0.004 USD per result).

Other Steadfetch Actors

FAQ

Do I need an FSA account or API key? No. The FSA open data API is free and needs no registration, and no browser or proxy is involved because the API returns JSON.

Does it return personal data? No. The Actor returns business premises fields already published by the FSA - no phone numbers, email addresses or any individual's data.

Why does minRating hide some establishments? The filter compares numeric ratings only, so non-numeric values such as AwaitingInspection are excluded when it is set. FHIS (Scotland) uses Pass / Improvement Required instead of 0-5, so omit minRating for FHIS runs.

When am I charged? Once per run start (apify-actor-start) and once per valid result saved to the dataset (apify-default-dataset-item). Failed requests, retries and empty pages are not charged per result.

Is the output schema stable? Yes. New fields are additive and the required fields in .actor/dataset_schema.json do not change.

Support

Report bugs through the Issues tab of this Actor's Apify Store page or through the steadfetch actors repository issues. Include the run ID (visible in the Apify console on the run) and the exact input JSON you used, so the problem can be reproduced against the same authority filters.

Maintenance

Tested daily: daily catalog QA runs the default input; enabled on 2026-10-20. Schema and fixture tests (npm test) last verified locally on 2026-10-22. The test suite runs against fixtures captured from the real FSA API, and any break in the daily run is reported as an issue in the Steadfetch Actors repository.