UK FSA Food Safety Alert Portfolio Report avatar

UK FSA Food Safety Alert Portfolio Report

Pricing

from $8.00 / 1,000 food safety alert rows

Go to Apify Store
UK FSA Food Safety Alert Portfolio Report

UK FSA Food Safety Alert Portfolio Report

Track food safety alerts. Open Input → leave defaults → Start (1 FSA watchlist + 1 alert ≈ USD 0.01–0.03/watch): https://console.apify.com/actors/vAa3Eg9Jrd6dRSYrO/input From USD 0.

Pricing

from $8.00 / 1,000 food safety alert rows

Rating

0.0

(0)

Developer

naoki anzai

naoki anzai

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

6 hours ago

Last modified

Share

What you get: source-linked rows from the official UK FSA Food Alerts API — allergy alerts, product recall notices and food alerts for action — with the alert ID, title, allergens, hazards, product terms, action taken and consumer advice, plus a change-alert row for each new or changed alert (optional portfolio report and export).

Sample output from a real run (2026-10-18, the first-run JSON below, 2 rows):

rowTypenotationtitlealertTypesallergenspublished
food_safety_alertFSA-AA-47-2026Carroll’s of Tullamore recalls Traditional Lasagne because of undeclared allergensAAEgg, Milk2026-10-18
food_safety_change_alertFSA-AA-47-2026(same alert) — reason new_or_changed_fsa_food_alertAA––

That run was 1 × $0.008 + 1 × $0.25 = $0.258.

Open Input (paste the JSON below → Start) Paid first run ≈ USD 0.26 (1 FSA alert: food-safety-alert-row $0.008 + food-safety-change-alert $0.25; the $12 portfolio report is off). Set the run's Max cost per run to at least $0.60: in our test a $0.50 cap stopped the run with "PPE charge limit reached" after the first change alert. The Console prefill runs the same 1-alert check (emit_current_window, about USD 0.26); set initialRunMode to baseline_only for a free baseline-only setup run.

{
"watchlists": [
{
"id": "all-uk-alerts",
"name": "All current UK food alerts",
"alertTypes": [
"AA",
"PRIN",
"FAFA"
],
"lookbackDays": 30,
"maxResults": 1
}
],
"monitorKey": "uk-food-alerts-first-run",
"initialRunMode": "emit_current_window",
"generateReport": false,
"emitRawRows": true,
"emitUnchanged": false,
"maxChargeUsd": 0.6,
"dryRun": false
}

Paste watchlist and Start.

Buyer: food manufacturers, importers, retailers, quality teams, and food-safety consultants who need a bounded change queue from the UK Food Standards Agency. Input: alert types, allergen/hazard/product terms, a modified-since or lookback window, and a stable monitorKey. Output: source-linked change alerts, a portfolio report, and an optional export without business-identity inference.

This actor uses the official, keyless UK FSA Food Alerts JSON API only. The documented source covers Allergy Alerts (AA), Product Recall Information Notices (PRIN), and Food Alerts for Action (FAFA). EU RASFF is intentionally not included because this actor does not rely on an undocumented internal endpoint or scrape a public website.

Run the next report

Store Quickstart

  1. Run the baseline once with initialRunMode: "baseline_only". It stores the source snapshot and emits zero rows and zero charges.
  2. Schedule the same monitorKey with initialRunMode: "emit_current_window", generateReport: true, and emitUnchanged: false.
  3. Set a buyer-approved maxChargeUsd. A changed run emits the report first, then change alerts, optional raw rows, and an optional export.

Example 1: baseline for all alert types

{
"watchlists": [{ "id": "all-alerts", "alertTypes": ["AA", "PRIN", "FAFA"], "lookbackDays": 30 }],
"monitorKey": "uk-food-safety-baseline",
"initialRunMode": "baseline_only",
"generateReport": true,
"emitRawRows": false,
"emitUnchanged": false,
"maxChargeUsd": 0,
"dryRun": false
}

Example 2: allergen and product change watch

{
"watchlists": [{
"id": "allergen-products",
"name": "Allergen product watch",
"alertTypes": ["AA", "PRIN"],
"allergens": ["milk", "peanut"],
"products": ["chocolate", "snack"],
"lookbackDays": 14,
"maxResults": 25
}],
"monitorKey": "quality-team-allergen-watch",
"initialRunMode": "emit_current_window",
"generateReport": true,
"emitRawRows": false,
"emitUnchanged": false,
"emitExport": false,
"maxChangedRecords": 5,
"maxChargeUsd": 20,
"dryRun": false
}

Example 3: dated hazard report and export

{
"watchlists": [{
"id": "hazard-review",
"alertTypes": ["FAFA", "PRIN"],
"hazards": ["microbiological", "pathogen"],
"modifiedSince": "2026-06-01T00:00:00Z",
"maxResults": 50
}],
"monitorKey": "importer-hazard-review",
"initialRunMode": "emit_backfill",
"generateReport": true,
"emitRawRows": true,
"emitUnchanged": false,
"emitExport": true,
"maxChangedRecords": 10,
"maxChargeUsd": 40,
"dryRun": false
}

Example 4: deterministic local dry run

{
"watchlists": [{ "id": "dry-run", "alertTypes": ["AA"], "allergens": ["milk"], "lookbackDays": 30 }],
"monitorKey": "dry-run-only",
"initialRunMode": "emit_backfill",
"generateReport": true,
"emitRawRows": true,
"emitUnchanged": false,
"emitExport": true,
"maxChargeUsd": 50,
"dryRun": true
}

Use with Apify MCP

Exact actor: taroyamada/food-safety-alert-portfolio-report

Sample input JSON:

{
"watchlists": [
{
"id": "all-uk-alerts",
"name": "All current UK food alerts",
"alertTypes": [
"AA",
"PRIN",
"FAFA"
],
"lookbackDays": 30,
"maxResults": 25
}
],
"monitorKey": "food-safety-default",
"initialRunMode": "baseline_only",
"generateReport": false,
"emitRawRows": false,
"emitUnchanged": false,
"maxChargeUsd": 1,
"maxChangedRecords": 3,
"maxRetries": 2,
"maxBackoffMs": 3,
"dryRun": false
}

Output and pricing

The first row of a changed run is food_safety_portfolio_report. It is followed by food_safety_change_alert rows, optional food_safety_alert rows, and an optional food_safety_export row. Each billable row has a deterministic stableKey, idempotencyKey, official source URLs, limitations, and prohibited interpretations.

EventPriceEmitted when
food-safety-alert-row$0.008A changed alert is emitted with emitRawRows: true
food-safety-change-alert$0.25A new or changed matched alert is delivered
food-safety-portfolio-report$12.00A changed run has generateReport: true
food-safety-export$8.00A changed run has emitExport: true

There is no start or heartbeat charge. Baseline-only and fully unchanged runs always produce zero dataset rows and zero charges. The entire unique event plan is checked against maxChargeUsd before the first push. A state or delivery failure stops the run and does not advance the baseline.

Source and compliance boundaries

  • Source: https://data.food.gov.uk/food-alerts/id?_format=json, documented at https://data.food.gov.uk/food-alerts/ui/reference.
  • The implementation uses documented JSON query parameters: since, repeated type, repeated problem.allergen, repeated search, _view=full, _limit, and _sort=-modified.
  • Only FSA API response objects with official publisher metadata and an items array are accepted. A malformed or structurally incomplete response is non-billable.
  • Only data.food.gov.uk API URLs and official FSA/food.gov.uk alert-page URLs are retained.
  • This actor does not scrape alert pages, bypass access controls, use private feeds, or require an API key.
  • The actor omits reporting-business and other business identity fields. It does not infer a supplier, manufacturer, distributor, or responsible party.
  • An alert is evidence for review, not a safety certification, causal finding, legal conclusion, medical conclusion, or proof of harm.
  • The actor is not affiliated with or endorsed by the Food Standards Agency or any UK government body.

See also

Use the source-linked report and qualified internal review for final decisions. This actor is intentionally FSA-only; RASFF, private data, and undocumented endpoints are outside scope.

Files

  • INPUT_SCHEMA.json
  • dataset_schema.json
  • docs/source-compliance.md
  • docs/integration-guide.md
  • docs/store-competitive-snapshot.md
  • docs/sample-output.json