{"topic_id":"rasff_petfood_2025_2026_ytd","category":"rasff","context":"---\ntopic_id: rasff_petfood_2025_2026_ytd\ncategory: rasff\ntitle: \"RASFF pet food notifications — 2025 full year vs 2026 YTD (by notification type, hazard, origin)\"\nlang: en\nsource: \"EU RASFF public consolidated-search backend response — productCategory pet food (id 18429), productType feed (id 282). Pulled 2026-07-30 (first-hand EU official source).\"\nsource_file: recalls/rasff-petfood-20260730.json\ndate_parsed: 2026-08-18\ntokens_estimated: 0\nrecovered: false\npath: rasff/rasff_petfood_2025_2026_ytd/01_rasff_petfood_2025_2026_ytd.md\ncitation_url: https://webgate.ec.europa.eu/rasff-window/portal/\nverification:\n  method: derived_from_dataset\n  claims: 64\n  derived: true\n  date: 2026-08-18\n---\n\n# RASFF pet food notifications — 2025 full year vs 2026 YTD\n\nCross-tab of EU RASFF pet food / feed notifications sliced two ways:\n**2025 (full calendar year, n=40)** versus **2026 year-to-date\n(n=27, EC validation dates 2026-01 through 2026-07, partial coverage)**.\nSource dataset: `recalls/rasff-petfood-20260730.json` (first-hand EU\nofficial backend response, productCategory = pet food id 18429,\nproductType = feed id 282).\n\n**Method note (derived_from_dataset):** counts are computed directly from\nthe source JSON, not quoted verbatim. Year is extracted from\n`ecValidationDate` (DD-MM-YYYY). Notification type = `notificationClassification.description`.\nOrigin = `originCountries[].isoCode` (a single notification may list more\nthan one origin). Hazard category = case-insensitive keyword match against\nthe `subject` field, mirroring the methodology of\n`RASFF_petfood_hazard_categories_by_subject_keyword` (categories are\nnon-exclusive; \"Unclassified\" = no keyword match). No figures below are\nsubstring quotes; each is a derived count over the cited records.\n\n## 1. By notification type\n\n| Type | 2025 (n=40) | 2026 YTD (n=27) |\n|------|-----------:|----------------:|\n| Information notification for follow-up | 23 | 19 |\n| Alert notification | 8 | 3 |\n| Border rejection notification | 6 | 3 |\n| Information notification for attention | 3 | 2 |\n\nFollow-up notifications dominate both years (57.5% of 2025, 70.4% of 2026\nYTD). Alerts fall from 8 (2025) to 3 (2026 YTD) — but 2026 YTD is a\npartial year, so the alert rate (3/27 = 11.1%) is still within the 2025\nrange (8/40 = 20.0%).\n\n## 2. By origin country (top 8 by record count)\n\n| Origin (ISO) | 2025 | 2026 YTD |\n|--------------|-----:|---------:|\n| Netherlands (NL) | 8 | 3 |\n| Germany (DE) | 6 | 6 |\n| Czechia (CZ) | 6 | 2 |\n| India (IN) | 5 | 2 |\n| China (CN) | 5 | 3 |\n| Italy (IT) | 0 | 3 |\n| Belgium (BE) | 0 | 2 |\n| United Kingdom (GB) | 2 | 0 |\n| Poland (PL) | 2 | 0 |\n| Thailand (TH) | 2 | 2 |\n\nGermany is the only origin in the top tier for both years (6 each). The\n2025 leader, Netherlands (8), drops to 3 in 2026 YTD, while Italy (0 → 3)\nand Belgium (0 → 2) newly enter the top ranks — a shift in the 2026 YTD\norigin mix, though the partial-year denominator limits interpretation.\n\n## 3. By hazard category\n\n| Hazard category | 2025 | 2026 YTD |\n|-----------------|-----:|---------:|\n| Microbiological — Salmonella | 16 | 4 |\n| Microbiological — Enterobacteriaceae | 4 | 2 |\n| Physical — plastic | 2 | 3 |\n| Physical — glass | 0 | 1 |\n| Physical — foreign body | 1 | 0 |\n| Physical — metal | 1 | 0 |\n| Chemical — Heavy metals | 1 | 0 |\n| Chemical — Dioxin/PCB | 1 | 0 |\n| Chemical — Other | 0 | 1 |\n| Unclassified | 14 | 17 |\n\nSalmonella's share collapses from 16/40 (40.0%) in 2025 to 4/27 (14.8%)\nin 2026 YTD — the single largest shift. Physical hazards (plastic/glass/\nforeign body/metal) hold roughly steady (4 in 2025, 4 in 2026 YTD) but\nplastic rises to lead the physical group (3 in 2026 YTD vs 2 in 2025).\nUnclassified grows to 17/27 (63.0%) in 2026 YTD, reflecting more\nsubjects without a discrete hazard descriptor early in the year.\n\n## 4. By notifying country (issuing member state, top 8)\n\n| Notifying (ISO) | 2025 | 2026 YTD |\n|-----------------|-----:|---------:|\n| Belgium (BE) | 12 | 6 |\n| Germany (DE) | 4 | 2 |\n| Denmark (DK) | 4 | 0 |\n| Netherlands (NL) | 3 | 7 |\n| Italy (IT) | 2 | 5 |\n| Austria (AT) | 2 | 0 |\n| Spain (ES) | 2 | 1 |\n| Croatia (HR) | 0 | 2 |\n\nBelgium remains the top issuer in both years (12 then 6), but the\n2026 YTD concentration shifts toward Netherlands (3 → 7) and Italy\n(2 → 5). Denmark (4 → 0) and Austria (2 → 0) drop out of the top ranks\nin the partial year.\n\n**Caveat:** 2026 YTD is a partial year (through 2026-07) and its counts\nare not annualized; year-over-year comparisons are directional, not\nrate-equivalent. Full-year 2026 data will revise these slices.\n\nSource: `recalls/rasff-petfood-20260730.json` → Counter over\n`notificationClassification.description`, `originCountries[].isoCode`,\n`notifyingCountry.isoCode`, and subject keyword match.\n","sources":["rasff-petfood-20260719 — RASFF pet food notifications — 2025 full year vs 2026 YTD (by notification type, hazard, origin) (retrieved 2026-08-18)"],"source":{"authority":"rasff-petfood-20260719","title":"RASFF pet food notifications — 2025 full year vs 2026 YTD (by notification type, hazard, origin)","url":"https://webgate.ec.europa.eu/rasff-window/","retrieved":"2026-08-18","ref":"","doc_type":"official source","source_document":"","verification_file":"recalls/rasff-petfood-20260730.json"},"source_document":"","source_file":"recalls/rasff-petfood-20260730.json","trust":{"authority_tier":"ungraded","fidelity":"verbatim","license":null,"display_grade":"pending"},"tokens_estimated":1042,"generated_at":null,"tip":"Use /api/v1/topics to discover more topics. /api/v1/nutrient for precise single-point queries. /api/v1/cross_compare for 2-3 standard comparisons."}