UK Food Hygiene Ratings Scraper — FSA Establishments
Pricing
Pay per event
UK Food Hygiene Ratings Scraper — FSA Establishments
Export UK Food Standards Agency hygiene ratings — business name, type, rating, rating date, full address, postcode, phone and local authority — as clean JSON, CSV or Excel.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
🎯 What this scrapes
The FSA publishes a hygiene rating for every food business in the UK, which makes it one of the few open datasets with a name, an address and a phone number for hundreds of thousands of hospitality venues. The API is fussy — it needs a version header, refuses unfiltered queries outright, and splits the address across four numbered fields. This Actor handles all three and hands back one clean row per establishment.
🔥 What we handle for you
sends the x-api-version header the API requires, avoiding its misleading 404
joins the FSA's four numbered address lines into one readable field
keeps Scotland's non-numeric FHIS ratings instead of dropping them on a numeric filter
💡 Use cases
- Build a hospitality prospect list with names, addresses and phone numbers by council area.
- Screen suppliers or franchise sites against their current hygiene rating.
- Track rating changes across a chain or a town over time.
- Map food businesses in a catchment area using the published coordinates.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
businessName | string | no | 'cafe' | Match establishments whose name contains this text. Leave empty to filter by authority or town instead. |
localAuthorityId | string | no | '—' | FSA local authority ID, e.g. 413. Use this to pull a whole council area. |
address | string | no | '—' | Match on address text — a town, street or postcode fragment. |
minRating | integer | no | 0 | Only establishments rated at least this (0-5). Leave at 0 for every rating. Non-numeric ratings (Scotland's… |
maxResults | integer | no | 100 | Stop after this many establishments. Each one is one billed result row. |
proxyConfiguration | object | no | {'useApifyProxy': False} | The FSA API is public and does not need a proxy. Leave this off unless your account requires egress through Apify Proxy. |
Example input
{"businessName": "cafe","maxResults": 3,"proxyConfiguration": {"useApifyProxy": false}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
fhrs_id | integer | FSA establishment identifier. |
business_name | string | Trading name. |
business_type | string | FSA business category. |
rating_value | string | Hygiene rating: 0-5, or Pass / Improvement Required in Scotland. |
rating_date | string | Date of the rating inspection. |
address | string | Street address, joined from the FSA's four address lines. |
postcode | string | Postcode. |
phone | string | Registered phone number, when published. |
local_authority | string | Local authority name. |
local_authority_website | string | Local authority website. |
latitude | number | Latitude, when geocoded. |
longitude | number | Longitude, when geocoded. |
scheme_type | string | FHRS (England/Wales/NI) or FHIS (Scotland). |
Example output
{}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.05 | One-off warm-up charge per run |
result | $0.002 | Per dataset item |
Example: 1 000 results at the rates above ≈ $2.05. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
- Returns the current rating only — the API does not expose full inspection history.
- Phone numbers and coordinates are published for most but not all establishments.
❓ FAQ
Do I need an API key?
No. The FSA API is open. The Actor sends the version header the API requires, which is the usual reason a hand-rolled request gets a confusing 404.
Why must I set a filter?
The API rejects an unfiltered query with a 403 explaining it is CPU intensive. Give it a name, an authority or an address and it answers immediately.
What about Scottish ratings?
Scotland uses FHIS (Pass / Improvement Required) rather than 0-5. Those rows come through unchanged and are never dropped by the minimum-rating filter.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.