UK Restaurant & Hospitality Territory Monitor
Pricing
from $2.10 / 1,000 business records
UK Restaurant & Hospitality Territory Monitor
Build UK restaurant and cafe prospect lists for your delivery territory. Export official FSA names, addresses and ratings by council/postcode; monitor newly seen businesses and published changes on repeat runs.
Pricing
from $2.10 / 1,000 business records
Rating
0.0
(0)
Developer
Chris Hopkin
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Build a restaurant prospect list for your delivery territory
For coffee roasters, food wholesalers and catering-equipment suppliers: choose a council and postcode district, export the official business list, and plan which premises to research next. Names, addresses and hygiene records come from FSA/FHRS; contact emails and phone numbers are not supplied.
First run: Manchester M1 restaurants and cafés
Choose Current list to get matching records on every run without changing saved monitoring history:
{"outputMode":"snapshot","localAuthorities":["Manchester"],"businessTypeIds":[1],"postcodeDistricts":["M1"],"maxRecords":10000}
Open Business records to download CSV or Excel. Open Scan health and next steps to see whether the scan completed, how many source records were checked and what to do next.
Example price: 100 returned records cost $1.00 at the standard rate. The complete M1 list may contain more than 100 records; the exact count varies. Set a maximum run charge. A budget too small for the full result fails safely instead of saving an incomplete baseline.
Then monitor the territory
Set outputMode to changes, save a task with identical filters and schedule it weekly. The first monitoring run establishes its baseline; later runs return changes. A successful zero-change run means the territory was checked and nothing tracked changed. The report includes the previous baseline time.
API calls that omit outputMode keep the original change-monitoring behaviour. Current-list exports charge for all returned records each time and never reset a monitor. Newly seen records are leads to investigate, not confirmed new openings.
Open the existing Manchester monitoring task
Build a clean UK restaurant and hospitality business list for the councils and postcode districts you serve. Export official Food Standards Agency (FSA/FHRS) business data, then run the Actor again to return only businesses that are newly seen or whose published details have changed.
Use it for hospitality lead research, sales territory planning, local market analysis, rating-change alerts, and repeatable food-business monitoring. Choose your area, run without a source API key, and download the results as CSV, Excel, or JSON.
What can you do with this Actor?
- Map a sales territory: list restaurants, cafés, pubs, bars, takeaways, hotels, or mobile caterers in up to 10 council areas.
- Narrow the area precisely: include outward postcode districts such as
M1,M2, orBS1without accidentally matchingM10. - Build a trustworthy baseline: capture the businesses currently published by the official FSA API.
- Monitor changes automatically: schedule later runs with the same filters to return only newly seen or changed records.
- See the evidence: every changed result includes
changedFields,previousValues, and the official FSA record link. - Feed your workflow: export to spreadsheets or connect the dataset to webhooks, Make, Zapier, n8n, Slack, or another Apify integration.
No proxy, browser, or separate FSA API key is required.
Who is it for?
| User | Practical use |
|---|---|
| Coffee roasters and food wholesalers | Build café, restaurant, pub, and takeaway prospect lists by delivery area. |
| Catering-equipment and fit-out suppliers | Map hospitality businesses around a showroom, depot, or sales representative. |
| Cleaning, pest-control, and compliance providers | Monitor published rating changes and prioritize follow-up research. |
| Agencies and local publishers | Maintain structured hospitality directories and local-market datasets. |
| Property and market researchers | Compare the hospitality mix across councils and postcode districts. |
| Multi-site operators | Watch selected territories for newly observed businesses and changes to existing records. |
Quick start: Manchester city centre
Paste this into the Actor input and click Start:
{"localAuthorities": ["Manchester"],"businessTypeIds": [1, 7843, 7844],"postcodeDistricts": ["M1"],"excludeNameContains": [],"resetBaseline": false,"maxRecords": 10000}
The first successful run returns a baseline of matching restaurants/cafés, pubs/bars, and takeaways. Run the same input later and the dataset contains only records that are newly seen or changed since the last successful snapshot.
More input examples
Monitor several council areas
Useful for a supplier or sales team covering a wider territory:
{"localAuthorities": ["Manchester", "Salford", "Trafford"],"businessTypeIds": [1, 7843, 7844],"postcodeDistricts": [],"excludeNameContains": [],"maxRecords": 20000}
Focus on selected postcode districts
{"localAuthorities": ["Bristol"],"businessTypeIds": [1, 7843],"postcodeDistricts": ["BS1", "BS2", "BS3"],"excludeNameContains": [],"maxRecords": 10000}
Apply your own name exclusions
{"localAuthorities": ["Manchester"],"businessTypeIds": [1],"postcodeDistricts": ["M1", "M2"],"excludeNameContains": ["costa", "starbucks"],"maxRecords": 10000}
Name exclusions are simple text filters supplied by you. They do not prove that the remaining businesses are independent or identify business ownership.
What data do you get?
Each returned record includes:
| Field | Example or meaning |
|---|---|
changeType | baseline, newly_seen, or changed |
businessName | Published trading name |
businessType / businessTypeId | Restaurant/Cafe/Canteen, Pub/bar/nightclub, Takeaway, and other FSA types |
address, postcode, postcodeDistrict | Published location and exact outward postcode |
localAuthority | FSA council name |
rating, scheme, ratingDate | Published hygiene rating, scheme, and inspection date when available |
newRatingPending | Whether the FSA record says a new rating is pending |
latitude, longitude | Published coordinates when available |
changedFields | Fields that differ from the previous successful snapshot |
previousValues, previousRating | Evidence of the earlier published values |
observedAt | When this Actor observed the record |
sourceUrl | Direct link to the official FSA business record |
signalNote | Plain-language guidance on what the signal does and does not establish |
Example output:
{"fhrsId": "1234567","businessName": "Example Cafe","businessType": "Restaurant/Cafe/Canteen","businessTypeId": 1,"address": "10 Example Street","postcode": "M1 1AA","postcodeDistrict": "M1","localAuthority": "Manchester","rating": "5","ratingDate": "2026-08-20","changeType": "changed","changedFields": ["rating"],"previousValues": { "rating": "3" },"previousRating": "3","observedAt": "2026-09-08T12:00:00.000Z","sourceUrl": "https://ratings.food.gov.uk/business/1234567"}
The example is illustrative. Actual fields come from the official source and may be empty when the FSA does not publish a value.
How change monitoring works
- The first successful run saves a complete baseline for the exact territory filters.
- A later run collects the same territory again and compares it with that saved snapshot.
- Unchanged businesses are omitted.
- Newly seen and changed records are returned with comparison evidence.
- The saved baseline advances only after the complete scan and output succeed.
Use an Apify schedule to run daily, weekly, or monthly. Keep the territory filters identical between comparison runs and avoid overlapping runs for the same territory. To start again, set resetBaseline to true for one run.
What the signals mean
| Signal | Meaning |
|---|---|
baseline | Present on the first scan. This is an existing record, not a new-opening lead. |
newly_seen | Absent from the saved snapshot and present now. It may be an opening, delayed publication, or a record entering the selected filters. |
changed | One or more tracked fields changed. Inspect changedFields and previousValues for the evidence. |
newly_seen is not a verified opening or registration date. A changed name does not establish new ownership, and a missing record is not labelled closed. FSA publication can lag real-world events.
Filters and business-type IDs
localAuthorities: 1–10 exact FSA council names. Use the official council directory.businessTypeIds: defaults to restaurants/cafés (1), pubs/bars (7843), and takeaways (7844). Other useful IDs include hotels (7842) and mobile caterers (7846). An empty list includes all published business types.postcodeDistricts: exact outward codes such asM1orBS1. Empty includes all postcodes within the selected councils.excludeNameContains: optional case-insensitive name fragments.maxRecords: safety cap applied before postcode and name filtering; 10,000 by default and 50,000 maximum.resetBaseline: exports all current matches and replaces the saved baseline for that exact territory.
If the source territory exceeds maxRecords, the run fails instead of returning and saving a misleading partial snapshot.
Export and integrations
Results are stored in the default Apify dataset. You can:
- Download CSV, Excel, JSON, XML, RSS, or JSONL from the run page.
- Connect a Google Sheet or downstream database.
- Trigger a webhook when a scheduled run finishes.
- Send newly seen or changed records to Make, Zapier, n8n, Slack, or your own application.
- Run the Actor through Apify API, CLI, JavaScript, Python, or MCP integrations.
API example:
curl -X POST \"https://api.apify.com/v2/acts/dig_stays~uk-hospitality-territory-monitor/runs?waitForFinish=300" \-H "Authorization: Bearer YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"localAuthorities": ["Manchester"],"businessTypeIds": [1, 7843, 7844],"postcodeDistricts": ["M1"]}'
Pricing
The standard price is $0.003 per returned business record ($3 per 1,000), with Apify platform usage included. Store subscription discounts reduce this to $2.70 per 1,000 on Starter (Bronze), $2.40 on Scale (Silver), and $2.10 on Business (Gold) or higher tiers. These lower introductory rates took effect on 13 October 2026; check the Pricing tab for current prices.
| Returned records | Event charge |
|---|---|
| 100 | $0.30 |
| 500 | $1.50 |
| 1,000 | $3.00 |
A baseline run charges for every matching record it returns. Later runs with unchanged filters charge the event fee only for returned changes. A no-change run has no business-record fee, and platform usage is included rather than billed separately to you.
The Actor checks the run's maximum-charge limit before writing results. If the limit cannot cover the complete output, it fails without charging for or saving partial results.
Frequently asked questions
Does this find newly opened restaurants?
It finds businesses that are newly present in the official dataset compared with your saved snapshot. That is a useful research signal, but it is not proof of an opening date. Confirm promising leads independently before outreach or publication.
Does it include business emails, phone numbers, or owner names?
No. The Actor returns the public FSA fields listed above. It does not guess contacts, identify owners, or present council contact details as business contacts.
Which parts of the UK are covered?
The FSA/FHRS service covers England, Wales, and Northern Ireland. Scotland operates a separate food-hygiene information service and is not included by this Actor.
Why did a repeat run return zero results?
That normally means none of the tracked fields changed since the last successful run for those filters. Check SUMMARY in the run's key-value store for scanned, matched, and emitted counts.
Can I change the territory later?
Yes. Every exact combination of councils, business types, postcode districts, and exclusions has its own saved comparison state. Use resetBaseline: true when you intentionally want to replace the baseline.
What happens if the FSA API changes during a scan?
The Actor detects inconsistent totals, duplicate records, incomplete pagination, request failures, and source-scan caps. It fails rather than saving a snapshot it knows is incomplete. The upstream API is not transactionally frozen, so an equal-count swap during pagination cannot always be detected.
Storage and reliability
The default dataset contains the returned baseline or changes. SUMMARY reports scan counts and comparison mode. SNAPSHOT stores the complete snapshot for that run, while the named key-value store uk-hospitality-territory-monitor-state-v1 keeps the latest successful state for each exact territory.
Bounded retries handle temporary source failures. A failed scan never replaces the saved comparison state.
Data source and licence
Data comes from the Food Standards Agency ratings service through the official v2 API. It contains public-sector information licensed under the Open Government Licence v3.0.
This Actor is not affiliated with or endorsed by the FSA. Published hygiene ratings are historical inspection results and should not be presented as a real-time safety determination.
Support and feature requests
Use the public Issues tab for questions, bug reports, or feature requests. Include the run ID and the council filters you used so the problem can be reproduced quickly. Do not post API tokens or private data.