1. Data source
The GRWI is computed exclusively from the FSA Food Alerts open REST API (Food Standards Agency, UK). The API is publicly accessible without authentication at data.food.gov.uk/food-alerts. All data is published under the Open Government Licence v3.0.
- Fetch URL:
https://data.food.gov.uk/food-alerts/id.json?_limit=2000(returns up to 2,000 alerts; current DB size 1328 alerts) - Last fetched: 2026-06-20
- Total alerts in FSA database: 1,328 (all published since 2018-01-09)
- Alert types included: AA (Allergy Alerts), PRIN (Product Recalls), FAFA (Food Alerts for Action), FAWL (Food Alerts for Awareness)
2. Rolling 24-month window
Only alerts with a created date between 2024-06-20 and 2026-06-19 are included in the index. This rolling window (320 alerts) represents the most recent 24 months of food-safety enforcement. Older alerts are excluded because recall risk reflects current supply-chain and labelling practice, not historical incidents.
3. Category classification
Each alert is classified into one of 13 product categories by keyword matching on the alert's title / shortTitle field. The first matching category wins; alerts that match no keyword fall into “Other Food Products”. Category keywords are:
| Category | Example keywords |
|---|---|
| Dairy & Cheese | cheese, dairy, milk, butter, cream, yogurt, ice cream |
| Meat & Poultry | meat, chicken, beef, pork, lamb, turkey, sausage, ham, bacon |
| Fish & Seafood | fish, salmon, tuna, prawn, shrimp, cod, haddock, seafood, shellfish |
| Bakery & Bread | bread, cake, biscuit, pastry, cookie, doughnut, scone, muffin |
| Ready Meals | ready meal, lasagne, curry, stew, casserole, soup, pie, quiche |
| Snacks & Confectionery | chocolate, sweets, crisp, snack, cereal, granola, popcorn |
| Sauces & Condiments | sauce, dressing, mayo, ketchup, mustard, chutney, relish, gravy |
| Fruit & Vegetables | fruit, vegetable, salad, berry, apple, onion, pepper, tomato |
| Drinks & Beverages | drink, juice, smoothie, beverage, coffee, tea, protein shake |
| Supplements & Health Foods | supplement, vitamin, protein powder, herbal, sports nutrition |
| Sandwiches & Wraps | sandwich, wrap, roll, sub, panini, bagel |
| Pasta & Grains | pasta, rice, noodle, couscous, quinoa, barley, oat |
| Other Food Products | (fallback — no matching keyword) |
4. Allergen classification
Allergens are identified by keyword search across the alert's title and the problem.riskStatement field. All 14 EU-regulated allergens (as listed in EU Regulation No 1169/2011, retained in UK law post-Brexit) are covered. Allergen notation follows the FSA's own allergen vocabulary at data.food.gov.uk/codes/alerts/def/allergen. Alerts implicating no named allergen are classified as “Other/Unknown” and excluded from allergen hub counts.
5. GRWI formula
// Per-category raw score:
raw = alert_count_24mo × 0.5
+ allergen_alert_fraction × 20
+ allergen_diversity × 2
+ trend_factor × 3
// Normalised 0–100 across all categories:
GRWI = (raw − min_raw) / (max_raw − min_raw) × 100
Where:
- alert_count_24mo — total FSA alerts (any type) in the rolling 24-month window for this category.
- allergen_alert_fraction — proportion of alerts that are Allergy Alerts (type AA), the highest consumer-risk class (0–1). Weight of 20 reflects that AA alerts pose immediate risk to allergic consumers.
- allergen_diversity — count of distinct named allergens implicated across all alerts in the category (excl. Other/Unknown). Higher diversity = broader risk surface.
- trend_factor — alerts in the last 6 months (Jan– Jun 2026) divided by alerts in the prior 6 months (Jul–Dec 2025). A rising trend inflates the score. Set to 1.0 if the prior period has zero alerts (division-by-zero guard).
- GRWI — min–max normalised so the highest-raw category scores 100 and the lowest scores 0. All categories with GRWI > 0 have at least one real FSA alert in the window.
6. Limitations
- GRWI reflects reported FSA alerts, not absolute product safety. Categories with fewer SKUs (e.g. Sandwiches & Wraps) may score low simply because fewer products carry FSA alert obligations, not because they are inherently safer.
- Category assignment is keyword-based and may misclassify multi-ingredient products. The FSA API does not carry a structured product-category field.
- Allergen extraction is text-based; complex free-text risk statements may miss allergens not named in the title. Counts labelled “Other/Unknown” represent alerts where no named allergen was detected.
- The GRWI is a relative risk index for the 13 categories represented in the 24-month FSA window, not an absolute food- safety measure.
7. Reproduction
To reproduce this index independently:
- Fetch:
curl https://data.food.gov.uk/food-alerts/id.json?_limit=2000 - Filter to alerts where
created ≥ 2024-06-20(rolling 24mo). - Classify each alert to one of the 13 categories above via title keyword match.
- For each category: count total alerts, AA alerts, distinct allergens. Compute 6-month sub-windows for trend_factor.
- Apply the raw formula and min–max normalise across all 13 categories.
All computations use publicly auditable FSA data. The formula and weights are fixed as of 2026-06-20; future versions will note any changes.
Source: FSA Food Alerts open REST API (Food Standards Agency). Data as of June 2026; published 2026-06-20. Licensed under the Open Government Licence v3.0. Ratings reflect the most recent inspection on record and may have changed since publication.