TypeScript 55.4%
Python 43.2%
SQL 1.2%
1# config/sources.d/21-consumer-safety-food-agri.yaml — recall & safety APIs, consumer-protection and competition2# agencies, food & agriculture agencies and producer bodies, agribusiness & food companies (2026-09-08).3# Every sensor below was fetched and parsed by apps/engine/src/validate.ts before being written.4#5# Not covered (blocked or client-rendered, kept out on purpose): USDA www/FSIS/NASS-RSS (Akamai 403 — AMS RSS and6# ERS/NASS newsroom pages are used instead), ECHA (403 for non-browser clients), EU Safety Gate/RAPEX and RASFF7# (Angular shells, POST-only APIs), Cargill and Metro AG (Akamai 403), Deere newsroom (403), George Weston8# (Incapsula JS challenge), Louis Dreyfus / Bunge IR / Tyson IR / Sysco IR / Mosaic IR (Cloudflare "Just a moment"9# on Q4 feeds — corporate newsroom pages used where server-rendered), Bayer Crop Science (maintenance/403),10# CNH, Smithfield, Oatly, Beyond Meat, Impossible Foods (403), Ag Growth International, Farm Credit Canada, ICCO,11# CCI India (JS shells / thin), MELCCFP Québec (no feed or news page), AAPCC poison centres (no feed), IGC / ISO12# sugar (no feed), CDC food-safety feed (no clean media id in the tools.cdc.gov API), MAPAQ (no ministry-level13# feed — the Québec fil de presse is attached to the existing `quebec` source instead).14sources:15 # ───────────────────────── recall & product-safety APIs ─────────────────────────16 - id: fda17 extend: true18 notes: "openFDA enforcement API (food/drug/device recalls) — firehose, keyed by recall_number; classification/status changes count as updates."19 sensors:20 - { name: openfda food enforcement, url: "https://api.fda.gov/food/enforcement.json?sort=report_date:desc&limit=50", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: results, keyField: recall_number, titleTemplate: "{classification} recall — {recalling_firm}: {product_description}", summaryField: reason_for_recall, dateField: report_date, urlTemplate: "https://www.accessdata.fda.gov/scripts/ires/index.cfm?Product={key}", compareFields: [status, classification], maxItems: 50 } }21 - { name: openfda drug enforcement, url: "https://api.fda.gov/drug/enforcement.json?sort=report_date:desc&limit=50", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: results, keyField: recall_number, titleTemplate: "{classification} recall — {recalling_firm}: {product_description}", summaryField: reason_for_recall, dateField: report_date, urlTemplate: "https://www.accessdata.fda.gov/scripts/ires/index.cfm?Product={key}", compareFields: [status, classification], maxItems: 50 } }22 - { name: openfda device enforcement, url: "https://api.fda.gov/device/enforcement.json?sort=report_date:desc&limit=50", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: results, keyField: recall_number, titleTemplate: "{classification} recall — {recalling_firm}: {product_description}", summaryField: reason_for_recall, dateField: report_date, urlTemplate: "https://www.accessdata.fda.gov/scripts/ires/index.cfm?Product={key}", compareFields: [status, classification], maxItems: 50 } }23 - id: cpsc24 name: U.S. Consumer Product Safety Commission25 domain: cpsc.gov26 homepage: https://www.cpsc.gov27 categories: [consumer-safety, government]28 tier: A29 weight: 1.330 aliases: [cpsc, consumer product safety commission, saferproducts]31 discover: { rss: false }32 notes: "Recalls via the SaferProducts REST API (rolling 30-day window); cpsc.gov has no RSS feed any more."33 sensors:34 - { name: recalls api, url: "https://www.saferproducts.gov/RestWebServices/Recall?format=json&RecallDateStart={now-30d}", type: REST_API, connector: jsonlist, tier: A, config: { keyField: RecallID, titleField: Title, urlField: URL, summaryField: Description, dateField: RecallDate, compareFields: [LastPublishDate], maxItems: 100, noConditional: true } }35 - { name: news releases, url: "https://www.cpsc.gov/Newsroom/News-Releases", type: HTML, connector: http, tier: B }36 - id: health-canada37 extend: true38 notes: "recalls-rappels.canada.ca category feeds (consumer products, health products, medical devices); PHAC public health notices page."39 sensors:40 - { name: consumer product recalls feed, url: "https://recalls-rappels.canada.ca/en/feed/consumer-products-alerts-recalls", type: RSS, connector: rss, tier: A }41 - { name: health product recalls feed, url: "https://recalls-rappels.canada.ca/en/feed/health-products-alerts-recalls", type: RSS, connector: rss, tier: A }42 - { name: medical device recalls feed, url: "https://recalls-rappels.canada.ca/en/feed/medical-devices-alerts-recalls", type: RSS, connector: rss, tier: A }43 - { name: phac public health notices, url: "https://www.canada.ca/en/public-health/services/public-health-notices.html", type: HTML, connector: http, tier: B }44 - id: cfia45 name: Canadian Food Inspection Agency46 domain: inspection.canada.ca47 categories: [food, consumer-safety, government]48 tier: A49 weight: 1.250 aliases: [cfia, acia, agence canadienne d'inspection des aliments]51 discover: { rss: false, sitemap: false }52 notes: "Food recall warnings come from the shared recalls-rappels.canada.ca feed; CFIA newsroom on inspection.canada.ca returns 410 and the canada.ca news page is a JS shell."53 sensors:54 - { name: food recall warnings feed, url: "https://recalls-rappels.canada.ca/en/feed/cfia-alerts-recalls", type: RSS, connector: rss, tier: A }55 - id: fsa-uk56 name: Food Standards Agency (UK)57 domain: food.gov.uk58 homepage: https://www.food.gov.uk59 categories: [food, consumer-safety, government]60 tier: A61 weight: 1.162 aliases: [fsa, food standards agency]63 discover: { rss: false }64 sensors:65 - { name: food alerts api, url: "https://data.food.gov.uk/food-alerts/id?_limit=50&_sort=-created", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: items, keyField: notation, titleField: title, urlField: alertURL, summaryField: shortTitle, dateField: created, compareFields: [modified], maxItems: 50 } }66 - { name: gov.uk activity feed, url: "https://www.gov.uk/government/organisations/food-standards-agency.atom", type: ATOM, connector: rss, tier: B }67 - id: food-standards-scotland68 name: Food Standards Scotland69 domain: foodstandards.gov.scot70 categories: [food, consumer-safety, government]71 tier: B72 aliases: [fss]73 discover: { rss: true }74 sensors:75 - { name: news, url: "https://www.foodstandards.gov.scot/news-and-alerts", type: HTML, connector: http, tier: B }76 - id: dgccrf77 name: DGCCRF / RappelConso78 domain: economie.gouv.fr79 homepage: https://www.economie.gouv.fr/dgccrf80 categories: [consumer-safety, food, government]81 tier: A82 weight: 1.183 aliases: [dgccrf, rappelconso, rappel conso, répression des fraudes]84 discover: { rss: false }85 llm: false86 notes: "RappelConso open-data API (data.economie.gouv.fr, Opendatasoft) — every French product recall; ~20 records/day so heuristics only."87 sensors:88 - { name: rappelconso recalls api, url: "https://data.economie.gouv.fr/api/explore/v2.1/catalog/datasets/rappelconso-v2-gtin-espaces/records?order_by=date_publication%20desc&limit=50", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: results, keyField: id, titleTemplate: "{categorie_produit} — {marque_produit} {libelle}", summaryField: motif_rappel, dateField: date_publication, urlField: lien_vers_la_fiche_rappel, compareFields: [numero_version], maxItems: 50 } }89 - id: uk-opss90 name: Office for Product Safety and Standards (UK)91 domain: gov.uk92 homepage: https://www.gov.uk/government/organisations/office-for-product-safety-and-standards93 categories: [consumer-safety, government]94 tier: A95 aliases: [opss, office for product safety and standards]96 discover: { rss: false }97 sensors:98 - { name: product safety alerts and recalls feed, url: "https://www.gov.uk/product-safety-alerts-reports-recalls.atom", type: ATOM, connector: rss, tier: A }99 - { name: gov.uk activity feed, url: "https://www.gov.uk/search/all.atom?organisations%5B%5D=office-for-product-safety-and-standards&order=updated-newest", type: ATOM, connector: rss, tier: B }100 - id: accc101 name: ACCC102 domain: accc.gov.au103 homepage: https://www.accc.gov.au104 categories: [consumer-safety, government]105 tier: A106 weight: 1.1107 aliases: [accc, australian competition and consumer commission, product safety australia]108 discover: { rss: false }109 sensors:110 - { name: media releases feed, url: "https://www.accc.gov.au/rss/media_releases.xml", type: RSS, connector: rss, tier: A, config: { maxItems: 50 } }111 - { name: product safety recalls feed, url: "https://www.productsafety.gov.au/rss/recalls.xml", type: RSS, connector: rss, tier: A, config: { maxItems: 50 } }112 # ───────────────────────── environment & chemical safety ─────────────────────────113 - id: epa114 name: U.S. Environmental Protection Agency115 domain: epa.gov116 homepage: https://www.epa.gov117 categories: [government, climate, consumer-safety]118 tier: B119 weight: 1.2120 aliases: [epa, environmental protection agency]121 discover: { rss: false, sitemap: false }122 notes: "EPA's news-release RSS and search endpoints answer 405 to non-browser clients; the server-rendered newsroom listing is used."123 sensors:124 - { name: news releases, url: "https://www.epa.gov/newsroom/browse-news-releases", type: HTML, connector: http, tier: B }125 - id: carb126 name: California Air Resources Board127 domain: ww2.arb.ca.gov128 homepage: https://ww2.arb.ca.gov129 categories: [government, climate, automotive]130 tier: B131 aliases: [carb, california air resources board]132 discover: { rss: false }133 sensors:134 - { name: news feed, url: "https://ww2.arb.ca.gov/rss.xml", type: RSS, connector: rss, tier: B }135 - id: environment-agency-uk136 name: Environment Agency (UK)137 domain: gov.uk138 homepage: https://www.gov.uk/government/organisations/environment-agency139 categories: [government, climate]140 tier: B141 aliases: [environment agency]142 discover: { rss: false }143 sensors:144 - { name: gov.uk activity feed, url: "https://www.gov.uk/government/organisations/environment-agency.atom", type: ATOM, connector: rss, tier: B }145 - id: bape146 name: BAPE147 domain: bape.gouv.qc.ca148 homepage: https://www.bape.gouv.qc.ca149 categories: [government, climate]150 tier: C151 aliases: [bape, bureau d'audiences publiques sur l'environnement]152 discover: { rss: true }153 sensors:154 - { name: sitemap, url: "https://www.bape.gouv.qc.ca/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 2000 } }155 # ───────────────────────── consumer protection & competition ─────────────────────────156 - id: competition-bureau-canada157 name: Competition Bureau Canada158 domain: competition-bureau.canada.ca159 categories: [government, consumer-safety, commerce]160 tier: B161 weight: 1.1162 aliases: [competition bureau, bureau de la concurrence]163 discover: { rss: false }164 sensors:165 - { name: news feed, url: "https://api.io.canada.ca/io-server/gc/news/en/v2?dept=competitionbureau&sort=publishedDate&orderBy=desc&pick=50&format=atom&atomtitle=Competition%20Bureau", type: ATOM, connector: rss, tier: B }166 - { name: sitemap, url: "https://competition-bureau.canada.ca/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 3000 } }167 - id: opc-quebec168 name: Office de la protection du consommateur169 domain: opc.gouv.qc.ca170 homepage: https://www.opc.gouv.qc.ca171 categories: [consumer-safety, government]172 tier: B173 aliases: [opc, office de la protection du consommateur]174 discover: { rss: false }175 sensors:176 - { name: communiqués feed, url: "https://www.opc.gouv.qc.ca/actualites/communiques/rss.xml", type: RSS, connector: rss, tier: B }177 - { name: toutes les actualités feed, url: "https://www.opc.gouv.qc.ca/actualite/toutes-les-actualites/rss.xml", type: RSS, connector: rss, tier: B }178 - id: uk-cma179 name: Competition and Markets Authority (UK)180 domain: gov.uk181 homepage: https://www.gov.uk/government/organisations/competition-and-markets-authority182 categories: [government, commerce, legal]183 tier: B184 weight: 1.1185 aliases: [cma, competition and markets authority]186 discover: { rss: false }187 sensors:188 - { name: gov.uk activity feed, url: "https://www.gov.uk/government/organisations/competition-and-markets-authority.atom", type: ATOM, connector: rss, tier: B }189 - id: european-commission190 extend: true191 aliases: [dg comp, dg competition]192 sensors:193 - { name: competition policy news feed, url: "https://competition-policy.ec.europa.eu/node/38/rss_en", type: RSS, connector: rss, tier: B }194 - id: autorite-de-la-concurrence195 name: Autorité de la concurrence196 domain: autoritedelaconcurrence.fr197 homepage: https://www.autoritedelaconcurrence.fr198 categories: [government, commerce, legal]199 tier: B200 aliases: [autorité de la concurrence, adlc]201 discover: { rss: false }202 sensors:203 - { name: actualités feed, url: "https://www.autoritedelaconcurrence.fr/fr/rss.xml", type: RSS, connector: rss, tier: B }204 - id: bundeskartellamt205 name: Bundeskartellamt206 domain: bundeskartellamt.de207 homepage: https://www.bundeskartellamt.de208 categories: [government, commerce, legal]209 tier: B210 aliases: [bundeskartellamt, german federal cartel office]211 discover: { rss: false }212 sensors:213 - { name: news feed, url: "https://www.bundeskartellamt.de/DE/Service/RSS/_documents/rssnewsfeed.xml", type: RSS, connector: rss, tier: B }214 - id: jftc215 name: Japan Fair Trade Commission216 domain: jftc.go.jp217 homepage: https://www.jftc.go.jp/en/218 categories: [government, commerce, legal]219 tier: B220 aliases: [jftc, japan fair trade commission]221 discover: { rss: false }222 sensors:223 - { name: press releases 2026, url: "https://www.jftc.go.jp/en/pressreleases/yearly-2026/index.html", type: HTML, connector: http, tier: B }224 - id: cci-india225 name: Competition Commission of India226 domain: cci.gov.in227 homepage: https://www.cci.gov.in228 categories: [government, commerce, legal]229 tier: B230 aliases: [cci, competition commission of india]231 discover: { rss: true, sitemap: true }232 notes: "Press-release and what's-new listings are client-rendered (short text) and there is no feed — discovery only."233 - id: acm-netherlands234 name: Autoriteit Consument & Markt235 domain: acm.nl236 homepage: https://www.acm.nl/en237 categories: [government, commerce, consumer-safety]238 tier: B239 aliases: [acm, autoriteit consument en markt, netherlands authority for consumers and markets]240 discover: { rss: false }241 sensors:242 - { name: press releases, url: "https://www.acm.nl/en/publications?type=press-release", type: HTML, connector: http, tier: B }243 - id: consumer-protection-bc244 name: Consumer Protection BC245 domain: consumerprotectionbc.ca246 homepage: https://www.consumerprotectionbc.ca247 categories: [consumer-safety, government]248 tier: C249 discover: { rss: false }250 sensors:251 - { name: news feed, url: "https://www.consumerprotectionbc.ca/feed/", type: RSS, connector: rss, tier: C }252 - id: which253 name: Which?254 domain: which.co.uk255 homepage: https://www.which.co.uk256 categories: [consumer-safety, ngo]257 tier: B258 aliases: ["which?", "consumers' association"]259 discover: { rss: false }260 sensors:261 - { name: news feed, url: "https://www.which.co.uk/news/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }262 - id: beuc263 name: BEUC — The European Consumer Organisation264 domain: beuc.eu265 homepage: https://www.beuc.eu266 categories: [consumer-safety, ngo]267 tier: B268 aliases: [beuc, european consumer organisation]269 discover: { rss: false }270 sensors:271 - { name: news feed, url: "https://www.beuc.eu/rss.xml", type: RSS, connector: rss, tier: B }272 - id: ewg273 name: Environmental Working Group274 domain: ewg.org275 homepage: https://www.ewg.org276 categories: [consumer-safety, ngo, food]277 tier: B278 aliases: [ewg]279 discover: { rss: false }280 sensors:281 - { name: news feed, url: "https://www.ewg.org/rss.xml", type: RSS, connector: rss, tier: B }282 # ───────────────────────── food & agriculture agencies ─────────────────────────283 - id: usda284 name: USDA285 domain: usda.gov286 homepage: https://www.usda.gov287 categories: [agriculture, food, government]288 tier: A289 weight: 1.3290 aliases: [usda, u.s. department of agriculture, ers, nass, ams, fsis]291 discover: { rss: false, sitemap: false }292 notes: "www.usda.gov, FSIS and the NASS RSS are behind Akamai (403). Agency-level endpoints that answer: AMS RSS, ERS and NASS newsroom pages."293 sensors:294 - { name: ams news feed, url: "https://www.ams.usda.gov/rss.xml", type: RSS, connector: rss, tier: B }295 - { name: ers newsroom, url: "https://www.ers.usda.gov/newsroom", type: HTML, connector: http, tier: B }296 - { name: nass newsroom, url: "https://www.nass.usda.gov/Newsroom/index.php", type: HTML, connector: http, tier: B }297 - id: aafc298 name: Agriculture and Agri-Food Canada299 domain: agriculture.canada.ca300 categories: [agriculture, food, government]301 tier: B302 weight: 1.1303 aliases: [aafc, aac, agriculture et agroalimentaire canada]304 discover: { rss: false }305 sensors:306 - { name: news feed, url: "https://agriculture.canada.ca/en/rss.xml", type: RSS, connector: rss, tier: B }307 - id: quebec308 extend: true309 aliases: [mapaq]310 sensors:311 - { name: fil de presse feed, url: "https://www.quebec.ca/fil-de-presse.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 60 } }312 - id: efsa313 name: European Food Safety Authority314 domain: efsa.europa.eu315 homepage: https://www.efsa.europa.eu316 categories: [food, health, government]317 tier: A318 weight: 1.2319 aliases: [efsa]320 discover: { rss: false }321 sensors:322 - { name: press feed, url: "https://www.efsa.europa.eu/en/press/rss", type: RSS, connector: rss, tier: A }323 - id: defra324 name: Department for Environment, Food & Rural Affairs (UK)325 domain: gov.uk326 homepage: https://www.gov.uk/government/organisations/department-for-environment-food-rural-affairs327 categories: [agriculture, food, government]328 tier: B329 aliases: [defra]330 discover: { rss: false }331 sensors:332 - { name: gov.uk activity feed, url: "https://www.gov.uk/government/organisations/department-for-environment-food-rural-affairs.atom", type: ATOM, connector: rss, tier: B }333 - id: fsanz334 name: Food Standards Australia New Zealand335 domain: foodstandards.gov.au336 homepage: https://www.foodstandards.gov.au337 categories: [food, consumer-safety, government]338 tier: B339 aliases: [fsanz]340 discover: { rss: false }341 sensors:342 - { name: news feed, url: "https://www.foodstandards.gov.au/rss.xml", type: RSS, connector: rss, tier: B }343 - id: anses344 name: ANSES345 domain: anses.fr346 homepage: https://www.anses.fr347 categories: [food, health, government]348 tier: B349 weight: 1.1350 aliases: [anses, agence nationale de sécurité sanitaire]351 discover: { rss: false }352 sensors:353 - { name: actualités feed, url: "https://www.anses.fr/fr/rss.xml", type: RSS, connector: rss, tier: B }354 - id: woah355 name: World Organisation for Animal Health356 domain: woah.org357 homepage: https://www.woah.org358 categories: [agriculture, health, international]359 tier: B360 weight: 1.1361 aliases: [woah, oie, world organisation for animal health]362 discover: { rss: false }363 sensors:364 - { name: news feed, url: "https://www.woah.org/en/feed/", type: RSS, connector: rss, tier: B }365 - id: codex-alimentarius366 name: Codex Alimentarius Commission367 domain: fao.org368 homepage: https://www.fao.org/fao-who-codexalimentarius/en/369 categories: [food, standards, international]370 tier: C371 aliases: [codex, codex alimentarius]372 discover: { rss: false, sitemap: false }373 sensors:374 - { name: news and events, url: "https://www.fao.org/fao-who-codexalimentarius/news-and-events/en/", type: HTML, connector: http, tier: C }375 - id: ippc376 name: International Plant Protection Convention377 domain: ippc.int378 homepage: https://www.ippc.int379 categories: [agriculture, international, standards]380 tier: C381 aliases: [ippc]382 discover: { rss: false }383 sensors:384 - { name: news, url: "https://www.ippc.int/en/news/", type: HTML, connector: http, tier: C }385 - id: icco386 name: International Cocoa Organization387 domain: icco.org388 homepage: https://www.icco.org389 categories: [agriculture, international, commerce]390 tier: C391 aliases: [icco, cocoa]392 discover: { rss: true, sitemap: true }393 notes: "News page is client-rendered (thin) and /feed redirects to the homepage — discovery only."394 - id: ico395 name: International Coffee Organization396 domain: ico.org397 homepage: https://www.ico.org398 categories: [agriculture, international, commerce]399 tier: C400 aliases: [ico, international coffee organization]401 discover: { rss: true }402 sensors:403 - { name: press releases, url: "https://ico.org/press-releases/", type: HTML, connector: http, tier: C }404 # ───────────────────────── farm & producer organizations ─────────────────────────405 - id: farm-credit-canada406 name: Farm Credit Canada407 domain: fcc-fac.ca408 homepage: https://www.fcc-fac.ca409 categories: [agriculture, finance]410 tier: C411 aliases: [fcc, financement agricole canada, fac]412 discover: { rss: true, sitemap: true }413 notes: "Newsroom is a client-rendered shell (thin); no feed found — discovery only."414 - id: upa415 name: Union des producteurs agricoles416 domain: upa.qc.ca417 homepage: https://www.upa.qc.ca418 categories: [agriculture, ngo]419 tier: C420 aliases: [upa, union des producteurs agricoles]421 discover: { rss: false }422 sensors:423 - { name: nouvelles, url: "https://www.upa.qc.ca/producteur/centre-des-communications/nouvelles", type: HTML, connector: http, tier: C }424 - id: cfa-fca425 name: Canadian Federation of Agriculture426 domain: cfa-fca.ca427 homepage: https://cfa-fca.ca428 categories: [agriculture, ngo]429 tier: C430 aliases: [cfa, fédération canadienne de l'agriculture]431 discover: { rss: false }432 sensors:433 - { name: news feed, url: "https://cfa-fca.ca/feed/", type: RSS, connector: rss, tier: C }434 - id: afbf435 name: American Farm Bureau Federation436 domain: fb.org437 homepage: https://www.fb.org438 categories: [agriculture, ngo]439 tier: C440 aliases: [afbf, farm bureau]441 discover: { rss: false }442 sensors:443 - { name: news releases, url: "https://www.fb.org/news-release", type: HTML, connector: http, tier: C }444 - id: gfo445 name: Grain Farmers of Ontario446 domain: gfo.ca447 homepage: https://gfo.ca448 categories: [agriculture, ngo]449 tier: C450 aliases: [gfo, grain farmers of ontario]451 discover: { rss: false }452 sensors:453 - { name: news feed, url: "https://gfo.ca/feed/", type: RSS, connector: rss, tier: C }454 - id: plq455 name: Les Producteurs de lait du Québec456 domain: lait.org457 homepage: https://lait.org458 categories: [agriculture, food, ngo]459 tier: C460 aliases: [plq, producteurs de lait du québec]461 discover: { rss: true }462 sensors:463 - { name: actualités, url: "https://lait.org/actualites/", type: HTML, connector: http, tier: C }464 - id: dairy-farmers-of-canada465 name: Dairy Farmers of Canada466 domain: dairyfarmersofcanada.ca467 homepage: https://dairyfarmersofcanada.ca468 categories: [agriculture, food, ngo]469 tier: C470 aliases: [dfc, producteurs laitiers du canada]471 discover: { rss: false }472 sensors:473 - { name: news releases, url: "https://dairyfarmersofcanada.ca/en/dairy-in-canada/news-releases", type: HTML, connector: http, tier: C }474 - id: cattle-ca475 name: Canadian Cattle Association476 domain: cattle.ca477 homepage: https://www.cattle.ca478 categories: [agriculture, ngo]479 tier: C480 aliases: [canadian cattle association, cca]481 discover: { rss: false }482 sensors:483 - { name: news feed, url: "https://www.cattle.ca/feed", type: RSS, connector: rss, tier: C }484 - id: cereals-canada485 name: Cereals Canada486 domain: cerealscanada.ca487 homepage: https://cerealscanada.ca488 categories: [agriculture, ngo]489 tier: C490 discover: { rss: false }491 sensors:492 - { name: news feed, url: "https://cerealscanada.ca/feed/", type: RSS, connector: rss, tier: C }493 - id: pulse-canada494 name: Pulse Canada495 domain: pulsecanada.com496 homepage: https://pulsecanada.com497 categories: [agriculture, ngo]498 tier: C499 discover: { rss: true }500 sensors:501 - { name: news, url: "https://pulsecanada.com/news", type: HTML, connector: http, tier: C }502 - id: canola-council503 name: Canola Council of Canada504 domain: canolacouncil.org505 homepage: https://www.canolacouncil.org506 categories: [agriculture, ngo]507 tier: C508 aliases: [canola council]509 discover: { rss: false }510 sensors:511 - { name: news feed, url: "https://www.canolacouncil.org/news/feed/", type: RSS, connector: rss, tier: C }512 # ───────────────────────── agribusiness, inputs & equipment ─────────────────────────513 - id: adm514 name: ADM515 domain: adm.com516 homepage: https://www.adm.com517 categories: [agriculture, food, commerce]518 tier: B519 weight: 1.2520 aliases: [adm, archer daniels midland, archer-daniels-midland]521 discover: { rss: false }522 sensors:523 - { name: news, url: "https://www.adm.com/news/", type: HTML, connector: http, tier: B }524 - { name: sitemap, url: "https://www.adm.com/en-us/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 3000 } }525 - id: bunge526 name: Bunge527 domain: bunge.com528 homepage: https://bunge.com529 categories: [agriculture, food, commerce]530 tier: B531 weight: 1.1532 aliases: [bunge global, bunge viterra]533 discover: { rss: true, sitemap: true }534 notes: "Media center and IR feeds sit behind a Cloudflare challenge (403) — discovery only."535 - id: nutrien536 name: Nutrien537 domain: nutrien.com538 homepage: https://www.nutrien.com539 categories: [agriculture, commerce]540 tier: B541 weight: 1.1542 aliases: [nutrien ag solutions]543 discover: { rss: false }544 sensors:545 - { name: news, url: "https://www.nutrien.com/news", type: HTML, connector: http, tier: B }546 - { name: sitemap, url: "https://www.nutrien.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 2000 } }547 - id: mosaic548 name: The Mosaic Company549 domain: mosaicco.com550 homepage: https://mosaicco.com551 categories: [agriculture, commerce]552 tier: B553 aliases: [mosaic, mosaic company]554 discover: { rss: false }555 sensors:556 - { name: news, url: "https://mosaicco.com/news", type: HTML, connector: http, tier: B }557 - id: cf-industries558 name: CF Industries559 domain: cfindustries.com560 homepage: https://www.cfindustries.com561 categories: [agriculture, energy, commerce]562 tier: B563 aliases: [cf industries]564 discover: { rss: false }565 sensors:566 - { name: newsroom, url: "https://www.cfindustries.com/newsroom", type: HTML, connector: http, tier: B }567 - id: corteva568 name: Corteva Agriscience569 domain: corteva.com570 homepage: https://www.corteva.com571 categories: [agriculture, science, commerce]572 tier: B573 weight: 1.1574 aliases: [corteva]575 discover: { rss: false }576 sensors:577 - { name: media center, url: "https://www.corteva.com/resources/media-center.html", type: HTML, connector: http, tier: B }578 - { name: sitemap, url: "https://www.corteva.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 2000 } }579 - id: syngenta580 name: Syngenta581 domain: syngenta.com582 homepage: https://www.syngenta.com583 categories: [agriculture, science, commerce]584 tier: B585 weight: 1.1586 aliases: [syngenta group]587 discover: { rss: false }588 sensors:589 - { name: media releases, url: "https://www.syngenta.com/media/media-releases", type: HTML, connector: http, tier: B }590 - { name: sitemap, url: "https://www.syngenta.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 2000 } }591 - id: agco-corp592 name: AGCO Corporation593 domain: agcocorp.com594 homepage: https://www.agcocorp.com595 categories: [agriculture, technology, commerce]596 tier: B597 aliases: [agco, fendt, massey ferguson, valtra]598 discover: { rss: false }599 sensors:600 - { name: newsroom, url: "https://news.agcocorp.com/", type: HTML, connector: http, tier: B }601 - id: kubota602 name: Kubota603 domain: kubota.com604 homepage: https://www.kubota.com605 categories: [agriculture, technology, commerce]606 tier: B607 aliases: [kubota corporation]608 discover: { rss: false }609 sensors:610 - { name: newsroom, url: "https://www.kubota.com/newsroom/", type: HTML, connector: http, tier: B }611 - id: premier-tech612 name: Premier Tech613 domain: premiertech.com614 homepage: https://www.premiertech.com615 categories: [agriculture, technology, commerce]616 tier: C617 discover: { rss: false }618 sensors:619 - { name: news feed, url: "https://www.premiertech.com/rss.xml", type: RSS, connector: rss, tier: C }620 # ───────────────────────── food processors, dairy & distributors ─────────────────────────621 - id: tyson-foods622 name: Tyson Foods623 domain: tysonfoods.com624 homepage: https://www.tysonfoods.com625 categories: [food, commerce]626 tier: B627 weight: 1.1628 aliases: [tyson]629 discover: { rss: false }630 sensors:631 - { name: news releases, url: "https://www.tysonfoods.com/news/news-releases", type: HTML, connector: http, tier: B }632 - id: jbs633 name: JBS634 domain: jbsfoodsgroup.com635 homepage: https://jbsfoodsgroup.com636 categories: [food, commerce]637 tier: B638 weight: 1.1639 aliases: [jbs foods, jbs s.a., pilgrim's]640 discover: { rss: false }641 sensors:642 - { name: news, url: "https://jbsfoodsgroup.com/news", type: HTML, connector: http, tier: B }643 - id: maple-leaf-foods644 name: Maple Leaf Foods645 domain: mapleleaffoods.com646 homepage: https://www.mapleleaffoods.com647 categories: [food, commerce]648 tier: B649 aliases: [maple leaf, aliments maple leaf]650 discover: { rss: false }651 sensors:652 - { name: news feed, url: "https://www.mapleleaffoods.com/feed/", type: RSS, connector: rss, tier: B }653 - id: olymel654 name: Olymel655 domain: olymel.com656 homepage: https://www.olymel.com657 categories: [food, commerce]658 tier: C659 discover: { rss: true }660 sensors:661 - { name: sitemap, url: "https://www.olymel.com/en-sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 2000 } }662 - id: hormel-foods663 name: Hormel Foods664 domain: hormelfoods.com665 homepage: https://www.hormelfoods.com666 categories: [food, commerce]667 tier: B668 aliases: [hormel]669 discover: { rss: false }670 sensors:671 - { name: news feed, url: "https://www.hormelfoods.com/feed/", type: RSS, connector: rss, tier: B }672 - id: conagra-brands673 name: Conagra Brands674 domain: conagrabrands.com675 homepage: https://www.conagrabrands.com676 categories: [food, commerce]677 tier: B678 aliases: [conagra]679 discover: { rss: false }680 sensors:681 - { name: news feed, url: "https://www.conagrabrands.com/rss.xml", type: RSS, connector: rss, tier: B }682 - id: campbells683 name: The Campbell's Company684 domain: thecampbellscompany.com685 homepage: https://www.thecampbellscompany.com686 categories: [food, commerce]687 tier: B688 aliases: [campbell's, campbell soup]689 discover: { rss: false }690 sensors:691 - { name: sitemap, url: "https://www.thecampbellscompany.com/sitemap_index.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 2000 } }692 - id: mccain693 name: McCain Foods694 domain: mccain.com695 homepage: https://www.mccain.com696 categories: [food, commerce]697 tier: B698 aliases: [mccain]699 discover: { rss: false }700 sensors:701 - { name: news, url: "https://www.mccain.com/information-centre/news/", type: HTML, connector: http, tier: B }702 - id: lactalis703 name: Lactalis704 domain: lactalis.com705 homepage: https://www.lactalis.com706 categories: [food, commerce]707 tier: B708 aliases: [groupe lactalis]709 discover: { rss: false }710 sensors:711 - { name: news, url: "https://www.lactalis.com/en/articles/news", type: HTML, connector: http, tier: B }712 - id: fonterra713 name: Fonterra714 domain: fonterra.com715 homepage: https://www.fonterra.com716 categories: [food, agriculture, commerce]717 tier: B718 discover: { rss: false }719 sensors:720 - { name: media releases, url: "https://www.fonterra.com/nz/en/our-stories/media.html", type: HTML, connector: http, tier: B }721 - id: arla722 name: Arla Foods723 domain: arla.com724 homepage: https://www.arla.com725 categories: [food, agriculture, commerce]726 tier: B727 aliases: [arla]728 discover: { rss: false }729 sensors:730 - { name: sitemap, url: "https://www.arla.com/sitemap.index.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 2000, maxChildren: 6 } }731 - id: frieslandcampina732 name: FrieslandCampina733 domain: frieslandcampina.com734 homepage: https://www.frieslandcampina.com735 categories: [food, agriculture, commerce]736 tier: B737 aliases: [royal frieslandcampina]738 discover: { rss: false }739 sensors:740 - { name: news feed, url: "https://www.frieslandcampina.com/rss", type: RSS, connector: rss, tier: B }741 - id: sysco742 name: Sysco743 domain: sysco.com744 homepage: https://www.sysco.com745 categories: [food, logistics, commerce]746 tier: B747 weight: 1.1748 discover: { rss: false }749 sensors:750 - { name: sitemap, url: "https://www.sysco.com/api/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 2000 } }751 - id: gfs752 name: Gordon Food Service753 domain: gfs.com754 homepage: https://gfs.com755 categories: [food, logistics, commerce]756 tier: C757 aliases: [gordon food service]758 discover: { rss: false }759 sensors:760 - { name: news feed, url: "https://gfs.com/en-us/feed/", type: RSS, connector: rss, tier: C }761 - id: colabor762 name: Colabor763 domain: colabor.com764 homepage: https://colabor.com765 categories: [food, logistics, commerce]766 tier: C767 aliases: [groupe colabor]768 discover: { rss: false }769 sensors:770 - { name: news feed, url: "https://colabor.com/en/feed/", type: RSS, connector: rss, tier: C }771