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

Monitor official UK Food Standards Agency Food Alerts for Allergy Alerts, Product Recall Information Notices, and Food Alerts for Action. Receive source-linked change alerts, portfolio reports, and exports.

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

3 days ago

Last modified

Categories

Share

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
}

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