AIDEVELOPER TOOLS

UK Food Hygiene Ratings Search

Search the official UK Food Standards Agency (FSA) food hygiene ratings database covering England, Wales, and Northern Ireland. Retrieve detailed inspection data -- including hygiene, structural, and management sub-scores -- for restaurants, takeaways, cafes, pubs, hotels, supermarkets, and any food business registered with a local authority. No API key required.

Try on Apify Store
$0.002per event
1
Users (30d)
34
Runs (30d)
90
Actively maintained
Maintenance Pulse
$0.002
Per event

Maintenance Pulse

90/100
Last Build
Today
Last Version
1d ago
Builds (30d)
8
Issue Response
N/A

Cost Estimate

How many results do you need?

rating-fetcheds
Estimated cost:$0.20

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
rating-fetchedCharged per food hygiene rating record retrieved from the FSA.$0.002

Example: 100 events = $0.20 · 1,000 events = $2.00

Documentation

Search the official UK Food Standards Agency (FSA) food hygiene ratings database covering England, Wales, and Northern Ireland. Retrieve detailed inspection data -- including hygiene, structural, and management sub-scores -- for restaurants, takeaways, cafes, pubs, hotels, supermarkets, and any food business registered with a local authority. No API key required.


Why use this actor?

  • Official government data -- pulls directly from the Food Standards Agency's FHRS API, the same authoritative source behind the green sticker ratings displayed in business windows across the UK.
  • Zero configuration overhead -- no API keys, no authentication tokens, no rate-limit management. Provide a search term and get structured results instantly.
  • Granular inspection detail -- goes beyond the headline 0--5 rating to expose the three underlying sub-scores (hygiene, structural, confidence in management) that inspectors actually assign.
  • Flexible search modes -- search by business name, address, postcode, GPS coordinates with a mile radius, rating level, or local authority -- or combine any of these for precision filtering.
  • Cloud-native automation -- runs on Apify infrastructure with built-in scheduling, webhooks, and API access so you can monitor food hygiene trends without maintaining any servers.

Key features

  • Business name search -- find any food establishment by full or partial name across the entire FHRS database
  • Location-based radius search -- provide latitude/longitude coordinates and a distance in miles to discover every rated food business within range
  • Address and postcode search -- search by street address, town name, or UK postcode without needing exact coordinates
  • Rating value filter -- narrow results to a specific hygiene rating (0 through 5, or Exempt) to isolate top performers or flag problem establishments
  • Local authority filter -- restrict results to a single council area for focused regional analysis
  • Detailed sub-scores -- each result includes hygieneScore, structuralScore, and confidenceInManagementScore -- the three components that determine the headline rating
  • Direct FHRS links -- every result includes a URL to the official ratings.food.gov.uk listing page for verification and reference
  • Automatic pagination -- seamlessly fetches up to 500 results across multiple API pages in a single actor run
  • Geolocation coordinates -- latitude and longitude are included for every establishment that has them, ready for mapping and spatial analysis
  • Structured JSON output -- clean, normalized 20-field records suitable for spreadsheets, databases, dashboards, or downstream processing

How to use

Using the Apify Console

  1. Go to the UK Food Hygiene Ratings Search actor page on Apify
  2. Click Start to open the input configuration
  3. Enter at least one search criterion: a business name, an address/postcode, or latitude/longitude coordinates
  4. Optionally set a rating filter, local authority, or adjust max results
  5. Click Start to run the actor
  6. When the run finishes, view or download results from the Dataset tab in JSON, CSV, or Excel format

Using the Apify API (JavaScript)

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('ryanclinton/uk-food-hygiene').call({
    query: "McDonald's",
    ratingValue: '5',
    maxResults: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Using the Apify API (Python)

from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')

run = client.actor('ryanclinton/uk-food-hygiene').call(run_input={
    'query': "McDonald's",
    'ratingValue': '5',
    'maxResults': 100,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Input parameters

ParameterTypeRequiredDefaultDescription
queryStringNo*--Business name to search for (e.g., "McDonald's", "Tesco", "Pizza Hut")
addressStringNo*--Address, town, or postcode to search in (e.g., "Manchester", "SW1A 1AA")
latitudeNumberNo*--Latitude for geographic proximity search
longitudeNumberNo*--Longitude for geographic proximity search (must be paired with latitude)
maxDistanceNumberNo1Maximum radius in miles from coordinates (only applies when latitude/longitude are set)
ratingValueStringNoAnyFilter by rating: "0", "1", "2", "3", "4", "5", or "Exempt"
localAuthorityStringNo--Filter by local authority name (e.g., "Westminster", "Birmingham", "Leeds")
maxResultsIntegerNo50Maximum number of results to return (1--500)

*At least one of query, address, or latitude/longitude must be provided.

Example input JSON:

{
    "query": "Nando's",
    "address": "London",
    "ratingValue": "5",
    "maxResults": 100
}

Tips:

  • Combine query with localAuthority to search for a chain within a specific council area
  • Use the address field with a postcode (e.g., "EC1A") for precise geographic targeting without needing coordinates
  • Set maxDistance only when using latitude/longitude -- it has no effect on name or address searches
  • The rating scale runs from 0 (worst) to 5 (best). "Exempt" covers low-risk businesses not rated on the numeric scale

Output

Each item in the output dataset contains 20 fields. Here is a representative example:

{
    "businessName": "Nando's Chickenland Ltd",
    "businessType": "Restaurant/Cafe/Canteen",
    "ratingValue": "5",
    "ratingDate": "2024-06-12",
    "newRatingPending": false,
    "addressLine1": "57-59 Goodge Street",
    "addressLine2": "",
    "addressLine3": "London",
    "addressLine4": "Greater London",
    "postcode": "W1T 1TH",
    "localAuthority": "Camden",
    "longitude": -0.134392,
    "latitude": 51.520847,
    "hygieneScore": 0,
    "structuralScore": 5,
    "confidenceInManagementScore": 0,
    "schemeType": "FHRS",
    "rightToReply": "",
    "fhrsUrl": "https://ratings.food.gov.uk/business/1098765",
    "fhrsId": 1098765
}

Output fields reference:

FieldTypeDescription
businessNameStringOfficial registered name of the food business
businessTypeStringCategory of business (e.g., "Restaurant/Cafe/Canteen", "Takeaway/sandwich shop")
ratingValueStringOverall food hygiene rating: "0" through "5", or "Exempt"
ratingDateStringDate of the most recent inspection (YYYY-MM-DD format)
newRatingPendingBooleanWhether the business has been re-inspected and awaits a new published rating
addressLine1StringFirst line of the business address
addressLine2StringSecond line of the address (may be empty)
addressLine3StringThird line -- typically the town or city
addressLine4StringFourth line -- typically the county or region
postcodeStringUK postcode of the business
localAuthorityStringName of the local authority responsible for inspections
longitudeNumber/nullGeographic longitude of the business (null if unavailable)
latitudeNumber/nullGeographic latitude of the business (null if unavailable)
hygieneScoreNumber/nullSub-score for food handling and preparation hygiene (0 = best, 25 = worst)
structuralScoreNumber/nullSub-score for physical premises condition and maintenance (0 = best, 25 = worst)
confidenceInManagementScoreNumber/nullSub-score for inspector confidence in ongoing management standards (0 = best, 30 = worst)
schemeTypeStringRating scheme type -- "FHRS" for England, Wales, and Northern Ireland
rightToReplyStringAny official response the business has filed regarding its rating
fhrsUrlStringDirect link to the establishment's page on ratings.food.gov.uk
fhrsIdNumberUnique FHRS identifier for the establishment

Use cases

  • Restaurant due diligence -- check hygiene ratings before booking venues for events, corporate catering, or business partnerships
  • Franchise investment screening -- evaluate the hygiene compliance track record of franchise locations before committing capital
  • Property location analysis -- assess the food safety landscape around a potential commercial or residential property
  • Public health monitoring -- track hygiene rating trends across a local authority area to identify emerging problem zones
  • Investigative journalism -- find clusters of low-rated food businesses by area, chain, or business type for data-driven reporting
  • Supply chain compliance -- verify that food suppliers and distributors maintain acceptable hygiene standards on an ongoing basis
  • Competitor intelligence -- compare hygiene ratings and sub-scores across competing restaurants in the same market area
  • Tourism and travel apps -- integrate hygiene ratings into restaurant recommendation engines so users can make informed dining choices
  • Insurance risk assessment -- factor food hygiene scores into liability risk models for food business insurance underwriting
  • Academic research -- analyze food safety patterns across geographic regions, business types, or time periods using structured data

API & integration

Python

from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')

run = client.actor('ryanclinton/uk-food-hygiene').call(run_input={
    'latitude': 51.5074,
    'longitude': -0.1278,
    'maxDistance': 2,
    'ratingValue': '0',
    'maxResults': 50,
})

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(f"{item['businessName']} - Rating: {item['ratingValue']} - {item['postcode']}")

JavaScript

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('ryanclinton/uk-food-hygiene').call({
    address: 'Birmingham',
    localAuthority: 'Birmingham',
    maxResults: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => {
    console.log(`${item.businessName} - Rating: ${item.ratingValue}`);
});

cURL

curl "https://api.apify.com/v2/acts/ryanclinton~uk-food-hygiene/runs" \
    -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
    -d '{"query": "Greggs", "maxResults": 100}'

Platform integrations: Apify datasets connect natively with Google Sheets, Slack (via webhooks), Zapier, Make (Integromat), GitHub Actions, and any system that can consume JSON via REST API.


How it works

  1. Input validation -- the actor verifies that at least one search criterion (business name, address, or coordinates) has been provided
  2. Query construction -- search parameters are assembled into FHRS API query format, including the fhrs_{value}_en-gb rating key format when a rating filter is specified
  3. API request -- the actor calls api.ratings.food.gov.uk/Establishments with the x-api-version: 2 header (no API key needed)
  4. Pagination -- if results exceed one page (200 items per page), the actor fetches subsequent pages sequentially until the max results limit is reached
  5. Data transformation -- raw API responses are normalized into clean 20-field output records with parsed coordinates, trimmed strings, and constructed FHRS URLs
  6. Output -- transformed records are pushed to the Apify dataset for download or API access
                         +------------------+
                         |   Input Config   |
                         | (name/addr/GPS)  |
                         +--------+---------+
                                  |
                                  v
                         +------------------+
                         |    Validation    |
                         | (>= 1 criteria) |
                         +--------+---------+
                                  |
                                  v
                    +-------------+-------------+
                    |   FHRS API (Page 1/N)     |
                    | api.ratings.food.gov.uk   |
                    +-------------+-------------+
                                  |
                           +------+------+
                           | More pages? |
                           +------+------+
                          yes|          |no
                             v          v
                      +------+--+  +----+--------+
                      |Fetch N+1|  | Transform & |
                      +------+--+  | Push Data   |
                             |     +----+--------+
                             +--------->|
                                        v
                               +--------+--------+
                               |  Apify Dataset  |
                               | (JSON/CSV/XLSX) |
                               +-----------------+

Performance & cost

MetricValue
Memory requirement256 MB
Typical run time (50 results)5--15 seconds
Typical run time (500 results)20--60 seconds
Cost per run (50 results)< $0.001
Cost per run (500 results)~ $0.002
API pages per requestUp to 3 (200 results per page)
Maximum results per run500
External API keys requiredNone
Rate limitingNone (public government API)
Apify Free Plan compatibilityYes -- hundreds of runs per month within the free $5 credit

Limitations

  • England, Wales, and Northern Ireland only -- Scotland uses a separate Food Hygiene Information Scheme (FHIS) with pass/improvement-required ratings and is not covered by this actor
  • Maximum 500 results per run -- for broader data needs, run multiple targeted searches with different filters or local authorities
  • No historical data -- the FHRS API returns the current rating snapshot only; it does not provide historical inspection records or rating change history
  • Sub-scores may be null -- exempt businesses, very old records, and some edge cases lack the detailed hygiene/structural/management sub-scores
  • Dependent on FSA API availability -- if the Food Standards Agency's API is undergoing maintenance or experiencing issues, the actor will return an error
  • Business type taxonomy is FSA-defined -- business type labels (e.g., "Restaurant/Cafe/Canteen", "Takeaway/sandwich shop") follow the FSA's own classification and cannot be customized
  • Geolocation coverage varies -- while most establishments include latitude/longitude, some older records may have null coordinates

Responsible use

  • Public data, public purpose -- FHRS ratings are published by the UK government for public transparency. Use this data to inform decisions, not to harass or target individual businesses.
  • Verify before acting -- always check the newRatingPending field and the ratingDate to understand how current a rating is before drawing conclusions. Businesses may have improved since their last inspection.
  • Respect the rating context -- a single low sub-score does not tell the full story. Consider all three sub-scores, the overall rating, and whether a new rating is pending before making judgments.
  • No personal data extraction -- this actor returns business information only. Do not use it in combination with other tools to identify or target individual food handlers or employees.
  • Comply with terms of use -- while the FHRS API is freely accessible, the underlying data is provided by the UK Food Standards Agency. Any redistribution or commercial use should comply with the Open Government Licence.

FAQ

What geographic areas does this actor cover? The FHRS database covers England, Wales, and Northern Ireland. Scotland uses the separate Food Hygiene Information Scheme (FHIS) and is not included.

How current is the data? The FHRS API provides near-real-time access to the Food Standards Agency database. Ratings are updated as soon as local authorities publish new inspection results.

What do the hygiene rating numbers mean? Ratings range from 0 to 5: 0 = urgent improvement necessary, 1 = major improvement necessary, 2 = improvement necessary, 3 = generally satisfactory, 4 = good, 5 = very good.

How do the sub-scores work? Each establishment receives three sub-scores: hygieneScore (0--25), structuralScore (0--25), and confidenceInManagementScore (0--30). Lower is better -- 0 is the best possible score in each category.

What does "Exempt" mean? Exempt businesses are those deemed very low risk, such as newsagents selling only pre-packaged food. They are inspected but not rated on the 0--5 numeric scale.

What does newRatingPending mean? When newRatingPending is true, the business has been re-inspected but the new rating has not yet been published. The displayed rating may be outdated.

Can I search by postcode? Yes. Enter the postcode in the address field. For example, setting address to "SW1A 1AA" will return food businesses near that postcode.

Do I need an API key for the FHRS data? No. The Food Standards Agency's FHRS API is freely accessible without authentication. This actor handles all API communication -- you only need an Apify account.

Why are some coordinate values null? Not all establishments in the FHRS database have geocoded locations. Older records or recently registered businesses may be missing latitude/longitude data.

Can I combine multiple search criteria? Yes. You can use query together with address, localAuthority, and ratingValue simultaneously to create highly targeted searches.

What is the maximum number of results I can get? A single run can return up to 500 results. If you need more, run multiple searches with different filters (e.g., different local authorities or rating values).

How is maxDistance calculated? The maxDistance parameter is measured in miles from the provided latitude/longitude coordinates. It defaults to 1 mile and only applies when coordinates are specified.


Related actors

ActorDescription
UK Companies HouseSearch UK registered companies, directors, and filing history
UK Police Crime DataSearch UK police crime records by location
UK Land RegistrySearch UK property sale prices from HM Land Registry
UK Charity CommissionSearch registered UK charities
UK Flood WarningsMonitor Environment Agency flood warnings
OpenStreetMap POI SearchFind points of interest including restaurants

How it works

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

Get results

Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.

Use cases

Sales Teams

Build targeted lead lists with verified contact data.

Marketing

Research competitors and identify outreach opportunities.

Data Teams

Automate data collection pipelines with scheduled runs.

Developers

Integrate via REST API or use as an MCP tool in AI workflows.

Ready to try UK Food Hygiene Ratings Search?

Start for free on Apify. No credit card required.

Open on Apify Store