# UK Food Hygiene Ratings & New Restaurant Leads (`digital_influx/uk-food-hygiene-ratings`) Actor

Every UK food business with its official FSA hygiene rating: restaurants, takeaways, pubs, cafés, hotels and shops in any council, postcode or town. Find new food businesses awaiting their first inspection, filter by rating and type, and get only new or re-rated ones on a schedule. No login.

- **URL**: https://apify.com/digital_influx/uk-food-hygiene-ratings.md
- **Developed by:** [Bruno Petrelli](https://apify.com/digital_influx) (community)
- **Categories:** Lead generation, Business, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 food business saveds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## UK Food Hygiene Ratings & New Restaurant Leads

**Every food business in the UK with its official food hygiene rating**, straight from the **Food Standards Agency (FSA)**: restaurants, cafés, takeaways, pubs, hotels, mobile caterers, supermarkets and shops, for any council, postcode or town. And the list nobody else has: **new food businesses that registered with the council and are still awaiting their first inspection**, mostly new openings and new owners.

No login, no API key, no proxies: the data is open (Open Government Licence v3.0) and updated daily by the councils.

### Who uses it

- **Suppliers and B2B sales teams** (food and drink wholesalers, POS and payments, delivery apps, linen, waste, pest control, insurance, accountants): a fresh list of new restaurants and takeaways in your area every week.
- **Restaurant chains and franchises:** monitor the hygiene ratings of your own sites, or of your competitors, and get every new inspection.
- **Property, retail and market research:** how many takeaways, pubs or cafés an area has, and how they are rated.
- **Data teams and apps:** UK food businesses with coordinates, ready for maps and dashboards.

### What you get

| Field | Example |
|---|---|
| `businessName`, `businessType` | Tregarthens Hotel, Hotel/bed & breakfast/guest house |
| `rating` | 0 to 5 (England, Wales, Northern Ireland), Pass / Improvement Required (Scotland), Awaiting Inspection, Exempt |
| `ratingDate` | 2025-06-13, the date of the inspection |
| `awaitingInspection` | true for a business not rated yet: a new opening or new owner |
| `hygieneScore`, `structuralScore`, `confidenceInManagementScore` | The inspection's scores (lower is better) |
| `address`, `addressLines`, `postcode`, `latitude`, `longitude` | Where it is |
| `localAuthority`, `localAuthorityEmail`, `localAuthorityWebsite` | The council that inspects it |
| `rightToReply` | The business's published answer to its rating, as plain text |
| `ratingsUrl` | Its page on ratings.food.gov.uk |
| `change`, `previousRating` | With *Only new*: `new` or `new rating`, and the rating before |

The run's **OUTPUT** record has the totals per search, the count per rating and per business type, and the attribution.

### Input

```json
{
  "localAuthorities": ["Manchester"],
  "businessTypes": ["restaurant-cafe", "takeaway"],
  "onlyAwaitingInspection": true,
  "maxResults": 50
}
```

| Field | What it does |
|---|---|
| `localAuthorities` | Councils, as you would write them: `Manchester`, `Westminster`, `Edinburgh`, `Cardiff`, `Belfast`. 363 in the UK. |
| `places` | Searched in the address: a postcode (`M1 1AE`), an outward code (`SW1A`) or a place (`Soho`). |
| `businessNames` | Businesses whose name contains these, e.g. `Greggs`. Without an area, across the whole UK. |
| `businessTypes` | Restaurant/cafe, takeaway, pub/bar, hotel, mobile caterer, supermarket, other retailer, school, care, manufacturer, distributor and more. |
| `onlyAwaitingInspection` | Only new food businesses awaiting their first inspection. |
| `ratings` | Keep only these ratings, e.g. `["0", "1", "2"]` for the worst rated. |
| `ratedWithinDays` | Only ratings given in the last N days: recent inspections. |
| `maxResults` | Newest first: businesses awaiting inspection, then the latest ratings (1,000 by default). |
| `onlyNew` + `memoryName` | For scheduled runs: only businesses not saved by an earlier run of the same search, or whose rating changed since. |

Every pub and bar in Westminster rated 2 or less:

```json
{
  "localAuthorities": ["Westminster"],
  "businessTypes": ["pub-bar"],
  "ratings": ["0", "1", "2"]
}
```

Every Greggs in the UK with its rating:

```json
{
  "businessNames": ["Greggs"],
  "maxResults": 5000
}
```

A weekly feed of new food businesses in Birmingham and Leeds (schedule it in *Schedules*):

```json
{
  "localAuthorities": ["Birmingham", "Leeds"],
  "onlyAwaitingInspection": true,
  "onlyNew": true
}
```

### Only new or re-rated businesses

Turn on **Only new** and schedule the task weekly. Each run saves only the businesses that earlier runs of the same search did not save, plus the ones whose rating changed since (with the previous rating). The memory is kept for 400 days in a key-value store named `uk-food-hygiene-ratings-state` in your own Apify account. Give a **Memory name** to share it between tasks, or a new one to start over.

### Pricing

Pay per event: you pay **only for businesses saved to the dataset**. Businesses left out by your filters and businesses already saved by an earlier run are free. Set a maximum cost for a run and the Actor stops cleanly when it is reached. On 2026-10-01, Manchester had 512 restaurants, cafés and takeaways awaiting their first inspection.

### Use it from AI agents (MCP)

Claude, ChatGPT, Cursor and any other MCP client can run this Actor as a tool: add `https://mcp.apify.com?tools=digital_influx/uk-food-hygiene-ratings` as a remote MCP server and sign in with your Apify account. It is also one of the tools of US & UK Public Records MCP (`digital_influx/public-records-mcp`), by the same author, made for agents.

### Good to know

- **Awaiting inspection is filtered here, after reading the whole area.** The FSA's own filter for it missed some businesses (65 of 72 in Oadby and Wigston, 116 of 154 in Westminster, 2026-10-01), so the Actor reads every business of the area and checks each one. A big council takes a few seconds (Manchester, 6,597 businesses: about 9 s).
- **A search of the whole UK needs a filter the FSA applies**: a business name, one business type or one rating (not "awaiting inspection"). All restaurants of the UK are about 141,000 businesses and take 2 to 3 minutes.
- **Scotland** rates Pass or Improvement Required; England, Wales and Northern Ireland rate 0 to 5.
- **Ratings reflect the standards found on the date of the inspection.** Always show the rating with its date (`ratingDate`) or refresh it: the FSA's terms say using an out-of-date rating can be an offence. Ratings images and logos are not included.
- **Phones are almost never published** by the councils. The business name, full address, postcode and coordinates are.
- Businesses awaiting inspection carry no rating date: the FSA uses placeholder dates (1900, 1901, 1999), shown here as `null`.

### Licence and attribution

Contains Food Standards Agency data licensed under the Open Government Licence v3.0. The FSA does not endorse this Actor or any business in its results.

### Questions or ideas?

Open an issue on the Issues tab: we answer within a few days.

# Actor input Schema

## `localAuthorities` (type: `array`):

Councils whose food businesses to read, e.g. Manchester, Westminster, Birmingham, Edinburgh, Cardiff, Belfast. The FSA lists 363 across England, Wales, Scotland and Northern Ireland.

## `places` (type: `array`):

Searched in the business address: a postcode (M1 1AE), an outward code (SW1A, M4) or a place name (Soho, Shoreditch). Can be combined with councils.

## `businessNames` (type: `array`):

Keep businesses whose name contains one of these, e.g. Greggs, Nando's. Without councils or places, the name is searched across the whole UK.

## `businessTypes` (type: `array`):

Keep only these types, as the council recorded them. Empty = all types.

## `onlyAwaitingInspection` (type: `boolean`):

Food businesses that registered with the council and have not been rated yet: mostly new openings and new owners. A shortcut for the rating "Awaiting inspection".

## `ratings` (type: `array`):

Keep only these ratings. England, Wales and Northern Ireland rate 0 to 5; Scotland rates Pass or Improvement Required. Empty = all.

## `ratedWithinDays` (type: `integer`):

Keep only businesses whose rating was given in the last N days: recent inspections.

## `maxResults` (type: `integer`):

Newest first: businesses awaiting inspection, then the latest ratings. You also never pay more than the spending limit you set for the run.

## `onlyNew` (type: `boolean`):

Save only businesses that earlier runs of this same search did not save, or whose rating changed since (each row says which). Schedule it weekly to get the new food businesses of an area. The memory is kept for 400 days in a key-value store named "uk-food-hygiene-ratings-state" in your account.

## `memoryName` (type: `string`):

By default each search has its own memory. Give a name to share one memory between tasks, or a new name to start over. Letters, digits, dot, dash and underscore.

## Actor input object example

```json
{
  "localAuthorities": [
    "Manchester"
  ],
  "businessTypes": [
    "restaurant-cafe",
    "takeaway"
  ],
  "onlyAwaitingInspection": true,
  "maxResults": 50,
  "onlyNew": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "localAuthorities": [
        "Manchester"
    ],
    "businessTypes": [
        "restaurant-cafe",
        "takeaway"
    ],
    "onlyAwaitingInspection": true,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("digital_influx/uk-food-hygiene-ratings").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "localAuthorities": ["Manchester"],
    "businessTypes": [
        "restaurant-cafe",
        "takeaway",
    ],
    "onlyAwaitingInspection": True,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("digital_influx/uk-food-hygiene-ratings").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "localAuthorities": [
    "Manchester"
  ],
  "businessTypes": [
    "restaurant-cafe",
    "takeaway"
  ],
  "onlyAwaitingInspection": true,
  "maxResults": 50
}' |
apify call digital_influx/uk-food-hygiene-ratings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,digital_influx/uk-food-hygiene-ratings"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/We6ENHMlhf7anc3gC/builds/m1pDt4k8LPF8dS6Fc/openapi.json
