SPB Git forge

spb/websensor

Public
33commits 1branches 0releases
3.4 MBsize
maindefault branch
10 days agolast push
TypeScript 55.4% Python 43.2% SQL 1.2%
63.8 KB · 1,622 lines yaml
Raw Blame History
1# config/sources.d/14-retail-consumer-travel.yaml — retail & marketplaces, consumer brands, food & beverage,2# restaurants, hospitality & travel platforms, delivery, automotive retail, loyalty (added 2026-09-08).3# Every sensor below was fetched and parsed by apps/engine/src/validate.ts before being written. Investor-relations4# feeds hosted on Q4 behind a Cloudflare challenge (Costco, Best Buy, Kroger IR, eBay IR, Wayfair, Chewy, Canadian5# Tire, Aritzia, Roots, General Mills, Molson Coors, Kimberly-Clark, Whirlpool, Mattel, GoPro, Crocs, CarMax,6# Gap, Levi's, Hyatt IR, RBI, Starbucks, Yum, Wendy's, Darden, Booking, Uber IR, DoorDash IR) are NOT sensors —7# they are listed in `notes:`. `robots.txt` sensors (tier D) on the large marketplaces track AI-crawler policy shifts.89sources:10  # ───────────────────────── A · Retailers & marketplaces ─────────────────────────11  - id: amazon12    name: Amazon13    domain: amazon.com14    homepage: https://www.aboutamazon.com15    categories: [retail, commerce, technology]16    tier: A17    weight: 1.518    aliases: [amazon.com, amazon inc]19    products:20      - { name: Amazon Prime, type: service, aliases: [prime] }21      - { name: Alexa, type: product }22      - { name: Kindle, type: product }23      - { name: Amazon Marketplace, type: service, aliases: [amazon marketplace, amazon sellers] }24    discover: { rss: true, sitemap: true, pages: true }25    notes: "AWS is the separate `aws` source. press.aboutamazon.com/rss/news-releases.xml and ir.aboutamazon.com (Q4, Cloudflare challenge) are not reachable; the About Amazon newsroom feed is."26    sensors:27      - { name: news feed, url: "https://www.aboutamazon.com/rss/feed.rss", type: RSS, connector: rss, tier: A }28      - { name: crawler policy (robots.txt), url: "https://www.amazon.com/robots.txt", type: FILE, connector: http, tier: D }29  - id: walmart30    name: Walmart31    domain: walmart.com32    homepage: https://corporate.walmart.com33    categories: [retail, commerce]34    tier: B35    weight: 1.336    aliases: [walmart inc, wal-mart]37    products:38      - { name: Walmart+, type: service, aliases: [walmart plus] }39      - { name: Sam's Club, type: product, aliases: [sams club] }40    discover: { rss: true, sitemap: true, pages: true }41    notes: "No RSS on corporate.walmart.com or stock.walmart.com (Q4 404); newsroom index page + robots."42    sensors:43      - { name: newsroom, url: "https://corporate.walmart.com/content/corporate/en_us/news.html", type: HTML, connector: http, tier: B }44      - { name: crawler policy (robots.txt), url: "https://www.walmart.com/robots.txt", type: FILE, connector: http, tier: D }45  - id: target46    name: Target47    domain: target.com48    homepage: https://corporate.target.com49    categories: [retail, commerce]50    tier: B51    weight: 1.252    aliases: [target corporation, target corp]53    discover: { rss: true, sitemap: true }54    sensors:55      - { name: press releases feed, url: "https://corporate.target.com/feeds/pressreleases", type: RSS, connector: rss, tier: B }56      - { name: news feed, url: "https://corporate.target.com/feeds/news", type: RSS, connector: rss, tier: B }57      - { name: crawler policy (robots.txt), url: "https://www.target.com/robots.txt", type: FILE, connector: http, tier: D }58  - id: costco59    name: Costco60    domain: costco.com61    homepage: https://investor.costco.com62    categories: [retail, commerce]63    tier: B64    weight: 1.265    aliases: [costco wholesale]66    discover: { rss: true, sitemap: true }67    notes: "investor.costco.com (Q4) sits behind a Cloudflare challenge; costco.com times out for bots. No validated sensor yet."68  - id: home-depot69    name: The Home Depot70    domain: homedepot.com71    homepage: https://corporate.homedepot.com72    categories: [retail, commerce]73    tier: B74    weight: 1.275    aliases: [home depot]76    discover: { rss: true, sitemap: true }77    sensors:78      - { name: investor news feed, url: "https://ir.homedepot.com/rss/news-releases.xml", type: RSS, connector: rss, tier: B }79      - { name: crawler policy (robots.txt), url: "https://www.homedepot.com/robots.txt", type: FILE, connector: http, tier: D }80  - id: lowes81    name: Lowe's82    domain: lowes.com83    homepage: https://corporate.lowes.com84    categories: [retail, commerce]85    tier: B86    aliases: [lowes, lowe's companies]87    discover: { rss: true, sitemap: true, pages: true }88    notes: "corporate.lowes.com newsroom has no feed (Akamai on lowes.com)."89    sensors:90      - { name: newsroom, url: "https://corporate.lowes.com/newsroom", type: HTML, connector: http, tier: B }91  - id: kroger92    name: Kroger93    domain: thekrogerco.com94    categories: [retail, food]95    tier: B96    aliases: [the kroger co]97    discover: { rss: true }98    notes: "ir.kroger.com (Q4) behind a Cloudflare challenge; corporate WordPress feed works."99    sensors:100      - { name: newsroom feed, url: "https://www.thekrogerco.com/feed/", type: RSS, connector: rss, tier: B }101  - id: best-buy102    name: Best Buy103    domain: bestbuy.com104    homepage: https://corporate.bestbuy.com105    categories: [retail, consumer-tech]106    tier: B107    aliases: [bestbuy]108    discover: { rss: true }109    notes: "investors.bestbuy.com (Q4) behind a Cloudflare challenge."110    sensors:111      - { name: corporate news feed, url: "https://corporate.bestbuy.com/feed/", type: RSS, connector: rss, tier: B }112      - { name: crawler policy (robots.txt), url: "https://www.bestbuy.com/robots.txt", type: FILE, connector: http, tier: D }113  - id: ikea114    name: IKEA115    domain: ikea.com116    categories: [retail, consumer]117    tier: B118    weight: 1.1119    aliases: [ingka, inter ikea]120    discover: { rss: true, sitemap: true, pages: true }121    notes: "Newsroom (ikea.com/global/en/newsroom) is client-rendered, no feed."122    sensors:123      - { name: crawler policy (robots.txt), url: "https://www.ikea.com/robots.txt", type: FILE, connector: http, tier: D }124  - id: loblaw125    name: Loblaw Companies126    domain: loblaw.ca127    categories: [retail, food]128    tier: B129    weight: 1.1130    aliases: [loblaws, loblaw companies limited]131    products:132      - { name: PC Optimum, type: service, aliases: [pc optimum] }133      - { name: Shoppers Drug Mart, type: product, aliases: [shoppers, pharmaprix] }134      - { name: No Frills, type: product }135    discover: { rss: true, sitemap: true, pages: true }136    sensors:137      - { name: our stories, url: "https://www.loblaw.ca/en/our-stories/", type: HTML, connector: http, tier: B }138  - id: empire-sobeys139    name: Empire Company (Sobeys)140    domain: empireco.ca141    categories: [retail, food]142    tier: B143    aliases: [empire, sobeys, iga, safeway canada]144    products:145      - { name: Scene+, type: service, aliases: [scene plus] }146      - { name: Voilà, type: service, aliases: [voila] }147    discover: { rss: true, sitemap: true, pages: true }148    sensors:149      - { name: news releases, url: "https://www.empireco.ca/news", type: HTML, connector: http, tier: B }150  - id: dollarama151    name: Dollarama152    domain: dollarama.com153    categories: [retail]154    tier: B155    discover: { rss: true, sitemap: true }156    sensors:157      - { name: corporate content sitemap, url: "https://www.dollarama.com/sitemap_content.xml", type: SITEMAP, connector: sitemap, tier: B }158  - id: couche-tard159    name: Alimentation Couche-Tard160    domain: couche-tard.com161    homepage: https://corporate.couche-tard.com162    categories: [retail]163    tier: B164    aliases: [couche-tard, circle k]165    products:166      - { name: Circle K, type: product }167    discover: { rss: true, sitemap: true, pages: true }168    sensors:169      - { name: newsroom, url: "https://corporate.couche-tard.com/newsroom", type: HTML, connector: http, tier: B }170  - id: aldi171    name: ALDI172    domain: aldi.us173    homepage: https://corporate.aldi.us174    categories: [retail, food]175    tier: B176    aliases: [aldi us, aldi süd, aldi nord]177    discover: { rss: true, sitemap: true, pages: true }178    notes: "aldi.co.uk newsroom is 403 to bots."179    sensors:180      - { name: US newsroom, url: "https://corporate.aldi.us/newsroom", type: HTML, connector: http, tier: B }181  - id: carrefour182    name: Carrefour183    domain: carrefour.com184    categories: [retail, food]185    tier: B186    weight: 1.1187    aliases: [groupe carrefour]188    discover: { rss: true, sitemap: true }189    sensors:190      - { name: news feed, url: "https://www.carrefour.com/en/rss.xml", type: RSS, connector: rss, tier: B }191  - id: hm-group192    name: H&M Group193    domain: hmgroup.com194    categories: [retail, consumer]195    tier: B196    aliases: [h&m, hennes & mauritz, h and m]197    discover: { rss: true, sitemap: true }198    sensors:199      - { name: news feed, url: "https://hmgroup.com/feed/", type: RSS, connector: rss, tier: B }200  - id: seven-and-i201    name: Seven & i Holdings202    domain: 7andi.com203    categories: [retail]204    tier: B205    aliases: [seven & i, 7-eleven, seven eleven, 7&i]206    products:207      - { name: 7-Eleven, type: product, aliases: [seven eleven] }208    discover: { rss: true }209    sensors:210      - { name: news feed, url: "https://www.7andi.com/rss/en_news.xml", type: RSS, connector: rss, tier: B }211  - id: alibaba212    name: Alibaba Group213    domain: alibabagroup.com214    categories: [commerce, retail, technology]215    tier: B216    weight: 1.3217    aliases: [alibaba, taobao, tmall, aliexpress]218    products:219      - { name: AliExpress, type: service }220      - { name: Taobao, type: service }221      - { name: Tmall, type: service }222      - { name: Alizila, type: product }223    discover: { rss: true, sitemap: true }224    notes: "alibabagroup.com is client-rendered; Alizila (official news site) has a WordPress feed."225    sensors:226      - { name: alizila news feed, url: "https://www.alizila.com/feed/", type: RSS, connector: rss, tier: B }227      - { name: alibaba.com crawler policy (robots.txt), url: "https://www.alibaba.com/robots.txt", type: FILE, connector: http, tier: D }228      - { name: aliexpress crawler policy (robots.txt), url: "https://www.aliexpress.com/robots.txt", type: FILE, connector: http, tier: D }229  - id: etsy230    name: Etsy231    domain: etsy.com232    homepage: https://investors.etsy.com233    categories: [commerce, retail]234    tier: B235    aliases: [etsy inc]236    discover: { rss: true }237    sensors:238      - { name: press releases feed, url: "https://investors.etsy.com/news-events/press-releases/rss", type: RSS, connector: rss, tier: B }239      - { name: crawler policy (robots.txt), url: "https://www.etsy.com/robots.txt", type: FILE, connector: http, tier: D }240  - id: ebay241    name: eBay242    domain: ebay.com243    homepage: https://www.ebayinc.com244    categories: [commerce, retail]245    tier: B246    weight: 1.1247    aliases: [ebay inc]248    discover: { rss: true }249    notes: "investors.ebayinc.com (Q4) behind a Cloudflare challenge; ebayinc.com stories feed works."250    sensors:251      - { name: news feed, url: "https://www.ebayinc.com/stories/news/rss/", type: RSS, connector: rss, tier: B }252      - { name: crawler policy (robots.txt), url: "https://www.ebay.com/robots.txt", type: FILE, connector: http, tier: D }253  - id: rakuten254    name: Rakuten Group255    domain: rakuten.co.jp256    homepage: https://global.rakuten.com/corp/257    categories: [commerce, retail, internet]258    tier: B259    aliases: [rakuten]260    discover: { rss: true }261    sensors:262      - { name: press releases feed, url: "https://global.rakuten.com/corp/rss/press.xml", type: RSS, connector: rss, tier: B }263      - { name: crawler policy (robots.txt), url: "https://www.rakuten.co.jp/robots.txt", type: FILE, connector: http, tier: D }264  - id: mercadolibre265    name: MercadoLibre266    domain: mercadolibre.com267    homepage: https://investor.mercadolibre.com268    categories: [commerce, retail, payments]269    tier: B270    weight: 1.1271    aliases: [mercado libre, meli, mercado pago]272    discover: { rss: true, sitemap: true }273    notes: "investor.mercadolibre.com exposes no RSS (404 on the usual paths)."274    sensors:275      - { name: crawler policy (robots.txt), url: "https://www.mercadolibre.com/robots.txt", type: FILE, connector: http, tier: D }276  - id: shein277    name: SHEIN278    domain: shein.com279    homepage: https://www.sheingroup.com280    categories: [commerce, retail, consumer]281    tier: B282    aliases: [shein group]283    discover: { rss: true, sitemap: true, pages: true }284    sensors:285      - { name: newsroom, url: "https://www.sheingroup.com/newsroom", type: HTML, connector: http, tier: B }286      - { name: crawler policy (robots.txt), url: "https://www.shein.com/robots.txt", type: FILE, connector: http, tier: D }287  - id: flipkart288    name: Flipkart289    domain: flipkart.com290    homepage: https://stories.flipkart.com291    categories: [commerce, retail]292    tier: B293    discover: { rss: true, sitemap: true }294    sensors:295      - { name: crawler policy (robots.txt), url: "https://www.flipkart.com/robots.txt", type: FILE, connector: http, tier: D }296  - id: wayfair297    name: Wayfair298    domain: wayfair.com299    categories: [commerce, retail]300    tier: B301    discover: { rss: true }302    notes: "investor.wayfair.com (Q4) behind a Cloudflare challenge."303    sensors:304      - { name: crawler policy (robots.txt), url: "https://www.wayfair.com/robots.txt", type: FILE, connector: http, tier: D }305  - id: chewy306    name: Chewy307    domain: chewy.com308    categories: [commerce, retail]309    tier: C310    discover: { rss: true }311    notes: "investor.chewy.com (Q4) behind a Cloudflare challenge."312    sensors:313      - { name: crawler policy (robots.txt), url: "https://www.chewy.com/robots.txt", type: FILE, connector: http, tier: D }314  - id: instacart315    name: Instacart316    domain: instacart.com317    homepage: https://company.instacart.com318    categories: [commerce, food, technology]319    tier: B320    aliases: [maplebear]321    discover: { rss: true, sitemap: true, pages: true }322    sensors:323      - { name: company updates, url: "https://company.instacart.com/updates/", type: HTML, connector: http, tier: B }324      - { name: crawler policy (robots.txt), url: "https://www.instacart.com/robots.txt", type: FILE, connector: http, tier: D }325  - id: newegg326    name: Newegg327    domain: newegg.com328    categories: [commerce, consumer-tech]329    tier: C330    discover: { rss: true }331    sensors:332      - { name: insider feed, url: "https://www.newegg.com/insider/feed/", type: RSS, connector: rss, tier: C }333      - { name: crawler policy (robots.txt), url: "https://www.newegg.com/robots.txt", type: FILE, connector: http, tier: D }334  - id: canadian-tire335    name: Canadian Tire Corporation336    domain: canadiantire.ca337    homepage: https://corp.canadiantire.ca338    categories: [retail]339    tier: B340    aliases: [canadian tire, ctc, sportchek, mark's]341    products:342      - { name: Triangle Rewards, type: service }343    discover: { rss: true, sitemap: true }344    notes: "corp.canadiantire.ca and investors.canadiantire.ca (Q4) behind a Cloudflare challenge."345    sensors:346      - { name: crawler policy (robots.txt), url: "https://www.canadiantire.ca/robots.txt", type: FILE, connector: http, tier: D }347  - id: walgreens348    name: Walgreens Boots Alliance349    domain: walgreens.com350    homepage: https://corporate.walgreens.com351    categories: [retail, health]352    tier: B353    aliases: [walgreens, boots, wba]354    discover: { rss: true, sitemap: true, pages: true }355    sensors:356      - { name: news and stories, url: "https://corporate.walgreens.com/news-and-stories/", type: HTML, connector: http, tier: B }357  - id: cvs358    name: CVS Health359    domain: cvshealth.com360    categories: [retail, health]361    tier: B362    weight: 1.1363    aliases: [cvs, cvs pharmacy, aetna]364    discover: { rss: true, sitemap: true, pages: true }365    sensors:366      - { name: sitemap, url: "https://www.cvshealth.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 2000 } }367  - id: metro-inc368    name: Metro Inc.369    domain: metro.ca370    homepage: https://corpo.metro.ca371    categories: [retail, food]372    tier: B373    aliases: [metro, jean coutu, brunet, super c]374    products:375      - { name: Jean Coutu, type: product, aliases: [pjc] }376    discover: { rss: true, sitemap: true }377    notes: "No feed on corpo.metro.ca; corporate sitemap only."378    sensors:379      - { name: corporate sitemap, url: "https://corpo.metro.ca/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 2000 } }380  - id: lidl381    name: Lidl382    domain: lidl.com383    homepage: https://corporate.lidl.co.uk384    categories: [retail, food]385    tier: B386    aliases: [lidl gb, schwarz group]387    discover: { rss: true, sitemap: true, pages: true }388    sensors:389      - { name: UK media centre, url: "https://corporate.lidl.co.uk/media-centre", type: HTML, connector: http, tier: B }390  - id: tesco391    name: Tesco392    domain: tescoplc.com393    categories: [retail, food]394    tier: B395    weight: 1.1396    aliases: [tesco plc]397    discover: { rss: true, sitemap: true }398    notes: "tescoplc.com returns 403 to non-browser clients on every path (Akamai). No validated sensor yet."399  - id: sainsburys400    name: Sainsbury's401    domain: sainsburys.co.uk402    homepage: https://corporate.sainsburys.co.uk403    categories: [retail, food]404    tier: B405    aliases: [sainsburys, j sainsbury, argos]406    discover: { rss: true, sitemap: true, pages: true }407    sensors:408      - { name: press releases feed, url: "https://corporate.sainsburys.co.uk/rss/news", type: RSS, connector: rss, tier: B }409      - { name: press releases, url: "https://corporate.sainsburys.co.uk/news/press-releases/", type: HTML, connector: http, tier: B }410  - id: inditex411    name: Inditex412    domain: inditex.com413    categories: [retail, consumer]414    tier: B415    weight: 1.1416    aliases: [zara, massimo dutti, bershka, pull&bear]417    products:418      - { name: Zara, type: product }419    discover: { rss: true, sitemap: true, pages: true }420    notes: "zara.com is 403 to bots; inditex.com press pages are server-rendered."421    sensors:422      - { name: press news, url: "https://www.inditex.com/itxcomweb/en/press/news", type: HTML, connector: http, tier: B }423  - id: fast-retailing424    name: Fast Retailing425    domain: fastretailing.com426    categories: [retail, consumer]427    tier: B428    aliases: [uniqlo, gu]429    products:430      - { name: UNIQLO, type: product, aliases: [uniqlo] }431    discover: { rss: true, sitemap: true, pages: true }432    sensors:433      - { name: news, url: "https://www.fastretailing.com/eng/about/news/", type: HTML, connector: http, tier: B }434  - id: jd-com435    name: JD.com436    domain: jd.com437    homepage: https://ir.jd.com438    categories: [commerce, retail]439    tier: B440    aliases: [jingdong, jd]441    discover: { rss: true, sitemap: true }442    notes: "ir.jd.com and corporate.jd.com are 403 to bots; jd.com robots.txt redirects to an HTML page. No validated sensor yet."443  - id: pdd-temu444    name: PDD Holdings (Temu)445    domain: pddholdings.com446    categories: [commerce, retail]447    tier: B448    aliases: [pdd, temu, pinduoduo]449    products:450      - { name: Temu, type: service }451      - { name: Pinduoduo, type: service }452    discover: { rss: true, sitemap: true }453    notes: "investor.pddholdings.com is 403 to bots; temu.com serves an HTML shell for robots.txt. No validated sensor yet."454  - id: bh-photo455    name: B&H Photo Video456    domain: bhphotovideo.com457    categories: [commerce, consumer-tech]458    tier: C459    aliases: [b&h, bh photo]460    discover: { rss: true }461    notes: "Whole site behind a Cloudflare challenge (Explora feed included)."462  - id: simons463    name: La Maison Simons464    domain: simons.ca465    categories: [retail, consumer]466    tier: C467    aliases: [simons]468    discover: { rss: true, sitemap: true }469    notes: "simons.ca is 403 to bots."470  - id: aritzia471    name: Aritzia472    domain: aritzia.com473    categories: [retail, consumer]474    tier: C475    discover: { rss: true, sitemap: true }476    notes: "aritzia.com and investors.aritzia.com (Q4) behind a Cloudflare challenge."477  - id: roots478    name: Roots479    domain: roots.com480    categories: [retail, consumer]481    tier: C482    aliases: [roots canada]483    discover: { rss: true, sitemap: true }484    notes: "investors.roots.com (Q4) behind a Cloudflare challenge; roots.com exposes no feed."485  - id: sephora486    name: Sephora487    domain: sephora.com488    homepage: https://newsroom.sephora.com489    categories: [retail, consumer]490    tier: B491    discover: { rss: true }492    sensors:493      - { name: newsroom feed, url: "https://newsroom.sephora.com/feed/", type: RSS, connector: rss, tier: B }494  - id: ulta495    name: Ulta Beauty496    domain: ulta.com497    categories: [retail, consumer]498    tier: B499    aliases: [ulta]500    discover: { rss: true, sitemap: true, pages: true }501    notes: "investors.ulta.com unreachable for bots; ulta.com newsroom is client-rendered — investor sitemap only."502    sensors:503      - { name: investor sitemap, url: "https://www.ulta.com/investor/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B }504505  # ───────────────────────── B · Consumer brands ─────────────────────────506  - id: nike507    name: Nike508    domain: nike.com509    homepage: https://about.nike.com510    categories: [consumer, retail]511    tier: B512    weight: 1.3513    aliases: [nike inc, jordan brand, converse]514    discover: { rss: true, sitemap: true }515    sensors:516      - { name: newsroom feed, url: "https://about.nike.com/en/feed", type: RSS, connector: rss, tier: B }517  - id: adidas518    name: adidas519    domain: adidas-group.com520    homepage: https://www.adidas-group.com521    categories: [consumer, retail]522    tier: B523    weight: 1.1524    aliases: [adidas ag]525    discover: { rss: true, sitemap: true }526    notes: "news.adidas.com answers 202 with an empty body (bot management); adidas-group.com exposes no feed. No validated sensor yet."527  - id: lululemon528    name: lululemon529    domain: lululemon.com530    homepage: https://corporate.lululemon.com531    categories: [consumer, retail]532    tier: B533    aliases: [lululemon athletica]534    discover: { rss: true }535    sensors:536      - { name: press releases feed, url: "https://corporate.lululemon.com/rss/press-releases", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }537  - id: canada-goose538    name: Canada Goose539    domain: canadagoose.com540    categories: [consumer, retail]541    tier: C542    discover: { rss: true, sitemap: true }543    notes: "canadagoose.com rate-limits bots (429); investors.canadagoose.com unreachable. No validated sensor yet."544  - id: lvmh545    name: LVMH546    domain: lvmh.com547    categories: [consumer, retail]548    tier: B549    weight: 1.3550    aliases: [louis vuitton, moët hennessy louis vuitton, dior, tiffany]551    products:552      - { name: Louis Vuitton, type: product }553      - { name: Dior, type: product }554    discover: { rss: true, sitemap: true, pages: true }555    notes: "lvmh.com news pages are client-rendered; sitemap index only."556    sensors:557      - { name: sitemap, url: "https://www.lvmh.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 3000 } }558  - id: kering559    name: Kering560    domain: kering.com561    categories: [consumer, retail]562    tier: B563    weight: 1.1564    aliases: [gucci, saint laurent, bottega veneta, balenciaga]565    products:566      - { name: Gucci, type: product }567    discover: { rss: true, sitemap: true }568    sensors:569      - { name: sitemap (en), url: "https://www.kering.com/en/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 3000 } }570  - id: hermes571    name: Hermès572    domain: hermes.com573    homepage: https://finance.hermes.com574    categories: [consumer, retail]575    tier: B576    weight: 1.1577    aliases: [hermes, hermès international]578    discover: { rss: true, sitemap: true }579    sensors:580      - { name: finance sitemap, url: "https://finance.hermes.com/sitemap-index.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 3000 } }581  - id: richemont582    name: Richemont583    domain: richemont.com584    categories: [consumer, retail]585    tier: B586    aliases: [cartier, van cleef & arpels, iwc, compagnie financière richemont]587    products:588      - { name: Cartier, type: product }589    discover: { rss: true, sitemap: true }590    sensors:591      - { name: sitemap, url: "https://www.richemont.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 2000 } }592  - id: loreal593    name: L'Oréal594    domain: loreal.com595    categories: [consumer]596    tier: B597    weight: 1.2598    aliases: [loreal, l'oréal groupe, lancôme, maybelline, garnier]599    discover: { rss: true, sitemap: true, pages: true }600    sensors:601      - { name: news, url: "https://www.loreal.com/en/news/", type: HTML, connector: http, tier: B }602      - { name: finance news (fr), url: "https://www.loreal-finance.com/fr/actualites", type: HTML, connector: http, tier: B }603  - id: estee-lauder604    name: The Estée Lauder Companies605    domain: elcompanies.com606    categories: [consumer]607    tier: B608    weight: 1.1609    aliases: [estee lauder, estée lauder, mac cosmetics, clinique]610    discover: { rss: true }611    sensors:612      - { name: press releases feed, url: "https://www.elcompanies.com/en/rss/press-releases", type: RSS, connector: rss, tier: B }613  - id: procter-gamble614    name: Procter & Gamble615    domain: pg.com616    homepage: https://us.pg.com617    categories: [consumer]618    tier: B619    weight: 1.3620    aliases: [p&g, procter and gamble, pampers, tide, gillette]621    products:622      - { name: Gillette, type: product }623      - { name: Pampers, type: product }624      - { name: Tide, type: product }625    discover: { rss: true, sitemap: true, pages: true }626    notes: "news.pg.com (Q4) redirects to the newsroom; no RSS."627    sensors:628      - { name: newsroom, url: "https://us.pg.com/newsroom/", type: HTML, connector: http, tier: B }629      - { name: sitemap, url: "https://us.pg.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 2000 } }630  - id: unilever631    name: Unilever632    domain: unilever.com633    categories: [consumer, food]634    tier: B635    weight: 1.3636    aliases: [dove, hellmann's, ben & jerry's, knorr]637    discover: { rss: true, sitemap: true }638    notes: "unilever.com is 403 to non-browser clients on every path (Akamai). No validated sensor yet."639  - id: nestle640    name: Nestlé641    domain: nestle.com642    categories: [consumer, food]643    tier: B644    weight: 1.3645    aliases: [nestle, nespresso, purina, kitkat]646    products:647      - { name: Nespresso, type: product }648    discover: { rss: true, sitemap: true }649    notes: "nestle.com media pages are 403 to bots (Akamai); sitemap is reachable."650    sensors:651      - { name: sitemap, url: "https://www.nestle.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 3000 } }652  - id: coca-cola653    name: The Coca-Cola Company654    domain: coca-colacompany.com655    categories: [consumer, food]656    tier: B657    weight: 1.3658    aliases: [coca-cola, coke, sprite, fanta]659    discover: { rss: true, sitemap: true, pages: true }660    notes: "investors.coca-colacompany.com exposes no RSS."661    sensors:662      - { name: media center, url: "https://www.coca-colacompany.com/media-center", type: HTML, connector: http, tier: B }663      - { name: corporate sitemap (us-en), url: "https://www.coca-colacompany.com/content/corporate.sitemap.us-en-sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 2000 } }664  - id: pepsico665    name: PepsiCo666    domain: pepsico.com667    categories: [consumer, food]668    tier: B669    weight: 1.3670    aliases: [pepsi, frito-lay, gatorade, quaker]671    discover: { rss: true, sitemap: true, pages: true }672    notes: "investors.pepsico.com and pepsico.com expose no RSS."673    sensors:674      - { name: newsroom, url: "https://www.pepsico.com/newsroom", type: HTML, connector: http, tier: B }675      - { name: sitemap, url: "https://www.pepsico.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 3000 } }676  - id: mondelez677    name: Mondelēz International678    domain: mondelezinternational.com679    categories: [consumer, food]680    tier: B681    weight: 1.1682    aliases: [mondelez, oreo, cadbury, toblerone]683    discover: { rss: true, sitemap: true }684    notes: "ir.mondelezinternational.com (Q4) is 403 to bots."685    sensors:686      - { name: sitemap, url: "https://www.mondelezinternational.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 3000 } }687  - id: kraft-heinz688    name: Kraft Heinz689    domain: kraftheinzcompany.com690    categories: [consumer, food]691    tier: B692    aliases: [kraft, heinz]693    discover: { rss: true, sitemap: true }694    notes: "news.kraftheinzcompany.com and ir.kraftheinzcompany.com (Q4) behind a Cloudflare challenge. No validated sensor yet."695  - id: general-mills696    name: General Mills697    domain: generalmills.com698    categories: [consumer, food]699    tier: B700    aliases: [cheerios, pillsbury, häagen-dazs]701    discover: { rss: true, sitemap: true, pages: true }702    notes: "investors.generalmills.com (Q4) behind a Cloudflare challenge; generalmills.com news pages are client-rendered — sitemap only."703    sensors:704      - { name: sitemap, url: "https://www.generalmills.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 3000 } }705  - id: kellanova706    name: Kellanova707    domain: kellanova.com708    categories: [consumer, food]709    tier: C710    aliases: [kellogg's, kellogg, pringles]711    discover: { rss: true, sitemap: true }712    notes: "kellanova.com answers 405 to bots; investor.kellanova.com (Q4) likewise. No validated sensor yet."713  - id: mars714    name: Mars, Incorporated715    domain: mars.com716    categories: [consumer, food]717    tier: B718    aliases: [mars inc, m&m's, snickers, pedigree, royal canin]719    discover: { rss: true, sitemap: true }720    notes: "mars.com news pages are 403 to bots; sitemap is reachable."721    sensors:722      - { name: sitemap, url: "https://www.mars.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 3000 } }723  - id: danone724    name: Danone725    domain: danone.com726    categories: [consumer, food]727    tier: B728    aliases: [activia, evian, alpro]729    discover: { rss: true, sitemap: true, pages: true }730    sensors:731      - { name: press releases, url: "https://www.danone.com/newsroom/press-releases.html", type: HTML, connector: http, tier: B }732  - id: ab-inbev733    name: AB InBev734    domain: ab-inbev.com735    categories: [consumer, food]736    tier: B737    weight: 1.1738    aliases: [anheuser-busch inbev, anheuser-busch, budweiser, stella artois, corona]739    discover: { rss: true, sitemap: true, pages: true }740    notes: "ab-inbev.com news pages are client-rendered (React shell) and the sitemap 404s. No validated sensor yet."741  - id: diageo742    name: Diageo743    domain: diageo.com744    categories: [consumer, food]745    tier: B746    aliases: [johnnie walker, guinness, smirnoff, tanqueray]747    discover: { rss: true }748    sensors:749      - { name: press releases feed, url: "https://www.diageo.com/en/rss/press-releases", type: RSS, connector: rss, tier: B }750  - id: heineken751    name: Heineken752    domain: theheinekencompany.com753    categories: [consumer, food]754    tier: B755    aliases: [heineken n.v.]756    discover: { rss: true, sitemap: true }757    notes: "theheinekencompany.com is 403 to bots (Akamai). No validated sensor yet."758  - id: molson-coors759    name: Molson Coors760    domain: molsoncoors.com761    categories: [consumer, food]762    tier: B763    aliases: [molson, coors, miller lite]764    discover: { rss: true, sitemap: true }765    notes: "ir.molsoncoors.com (Q4) behind a Cloudflare challenge; the corporate site feed works."766    sensors:767      - { name: news feed, url: "https://www.molsoncoors.com/rss.xml", type: RSS, connector: rss, tier: B }768  - id: constellation-brands769    name: Constellation Brands770    domain: cbrands.com771    categories: [consumer, food]772    tier: B773    aliases: [constellation, modelo, corona usa, kim crawford]774    discover: { rss: true }775    sensors:776      - { name: press releases feed, url: "https://www.cbrands.com/blogs/press-releases.atom", type: ATOM, connector: rss, tier: B }777  - id: saputo778    name: Saputo779    domain: saputo.com780    categories: [consumer, food]781    tier: B782    discover: { rss: true, sitemap: true }783    sensors:784      - { name: news sitemap, url: "https://www.saputo.com/news-sitemap.xml", type: SITEMAP, connector: sitemap, tier: B }785  - id: lassonde786    name: Lassonde Industries787    domain: lassonde.com788    categories: [consumer, food]789    tier: C790    aliases: [lassonde, oasis]791    discover: { rss: true }792    sensors:793      - { name: news feed, url: "https://www.lassonde.com/en/feed/", type: RSS, connector: rss, tier: C }794  - id: agropur795    name: Agropur796    domain: agropur.com797    categories: [consumer, food, agriculture]798    tier: C799    aliases: [natrel, oka]800    discover: { rss: true, sitemap: true, pages: true }801    sensors:802      - { name: news, url: "https://www.agropur.com/en/news", type: HTML, connector: http, tier: C }803  - id: colgate-palmolive804    name: Colgate-Palmolive805    domain: colgatepalmolive.com806    categories: [consumer]807    tier: B808    aliases: [colgate, palmolive, hill's pet nutrition]809    discover: { rss: true, sitemap: true }810    notes: "colgatepalmolive.com and investor.colgatepalmolive.com are 403 to bots. No validated sensor yet."811  - id: kimberly-clark812    name: Kimberly-Clark813    domain: kimberly-clark.com814    categories: [consumer]815    tier: B816    aliases: [kleenex, huggies, kotex, scott]817    discover: { rss: true, sitemap: true }818    notes: "kimberly-clark.com and investor.kimberly-clark.com (Q4) behind a Cloudflare challenge. No validated sensor yet."819  - id: clorox820    name: The Clorox Company821    domain: thecloroxcompany.com822    categories: [consumer]823    tier: B824    aliases: [clorox, burt's bees, brita, glad]825    discover: { rss: true, sitemap: true, pages: true }826    sensors:827      - { name: news feed, url: "https://www.thecloroxcompany.com/feed/", type: RSS, connector: rss, tier: B }828      - { name: newsroom, url: "https://www.thecloroxcompany.com/newsroom/", type: HTML, connector: http, tier: B }829  - id: reckitt830    name: Reckitt831    domain: reckitt.com832    categories: [consumer, health]833    tier: B834    aliases: [reckitt benckiser, dettol, lysol, durex, nurofen]835    discover: { rss: true, sitemap: true, pages: true }836    sensors:837      - { name: news, url: "https://www.reckitt.com/news/", type: HTML, connector: http, tier: B }838  - id: henkel839    name: Henkel840    domain: henkel.com841    categories: [consumer]842    tier: B843    aliases: [persil, schwarzkopf, loctite, pritt]844    discover: { rss: true, sitemap: true }845    sensors:846      - { name: press releases feed, url: "https://www.henkel.com/service/en/33922/asFeed/index.xml", type: RSS, connector: rss, tier: B }847  - id: beiersdorf848    name: Beiersdorf849    domain: beiersdorf.com850    categories: [consumer]851    tier: B852    aliases: [nivea, eucerin, la prairie, tesa]853    discover: { rss: true, sitemap: true, pages: true }854    sensors:855      - { name: press releases, url: "https://www.beiersdorf.com/newsroom/press-information/all-press-releases", type: HTML, connector: http, tier: B }856  - id: shiseido857    name: Shiseido858    domain: shiseido.com859    homepage: https://corp.shiseido.com860    categories: [consumer]861    tier: C862    aliases: [nars, drunk elephant]863    discover: { rss: true, sitemap: true }864    notes: "corp.shiseido.com exposes no feed and its English newsroom 404s on the usual paths. No validated sensor yet."865  - id: whirlpool866    name: Whirlpool Corporation867    domain: whirlpoolcorp.com868    categories: [consumer, consumer-tech]869    tier: B870    aliases: [whirlpool, kitchenaid, maytag]871    discover: { rss: true, sitemap: true }872    notes: "investors.whirlpoolcorp.com (Q4) behind a Cloudflare challenge; whirlpoolcorp.com/news 404. No validated sensor yet."873  - id: electrolux874    name: Electrolux Group875    domain: electroluxgroup.com876    categories: [consumer, consumer-tech]877    tier: B878    aliases: [electrolux, frigidaire, aeg]879    discover: { rss: true, sitemap: true }880    sensors:881      - { name: news feed, url: "https://www.electroluxgroup.com/en/feed", type: RSS, connector: rss, tier: B }882  - id: dyson883    name: Dyson884    domain: dyson.com885    categories: [consumer, consumer-tech]886    tier: C887    discover: { rss: true, sitemap: true }888    notes: "dyson.com newsroom is 403 to bots. No validated sensor yet."889  - id: philips890    name: Philips891    domain: philips.com892    categories: [consumer, consumer-tech, health]893    tier: B894    weight: 1.1895    aliases: [royal philips, koninklijke philips]896    discover: { rss: true, sitemap: true }897    sensors:898      - { name: news feed, url: "https://www.philips.com/content/corporate/en_AA/feed.rss.xml?pageSize=15&startIndex=0&src=/content/corporate/en_AA/about/news/archive&sortMode=createdDate", type: RSS, connector: rss, tier: B }899  - id: sonos900    name: Sonos901    domain: sonos.com902    homepage: https://newsroom.sonos.com903    categories: [consumer-tech, consumer]904    tier: B905    discover: { rss: true }906    sensors:907      - { name: press releases feed, url: "https://newsroom.sonos.com/press_releases.atom", type: ATOM, connector: rss, tier: B }908  - id: gopro909    name: GoPro910    domain: gopro.com911    categories: [consumer-tech, consumer]912    tier: C913    discover: { rss: true, sitemap: true }914    notes: "gopro.com news and investor.gopro.com (Q4) behind a Cloudflare challenge. No validated sensor yet."915  - id: garmin916    name: Garmin917    domain: garmin.com918    categories: [consumer-tech, consumer]919    tier: B920    weight: 1.1921    discover: { rss: true, sitemap: true }922    sensors:923      - { name: newsroom feed, url: "https://www.garmin.com/en-US/newsroom/feed/", type: RSS, connector: rss, tier: B }924  - id: peloton925    name: Peloton926    domain: onepeloton.com927    categories: [consumer-tech, consumer]928    tier: C929    aliases: [peloton interactive]930    discover: { rss: true, sitemap: true, pages: true }931    notes: "investor.onepeloton.com is 403 to bots."932    sensors:933      - { name: blog, url: "https://www.onepeloton.com/blog", type: HTML, connector: http, tier: C }934  - id: mattel935    name: Mattel936    domain: mattel.com937    homepage: https://corporate.mattel.com938    categories: [consumer]939    tier: B940    aliases: [barbie, hot wheels, fisher-price]941    products:942      - { name: Barbie, type: product }943    discover: { rss: true, sitemap: true }944    notes: "investors.mattel.com (Q4) behind a Cloudflare challenge; corporate sitemap is reachable."945    sensors:946      - { name: corporate sitemap, url: "https://corporate.mattel.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B }947  - id: hasbro948    name: Hasbro949    domain: hasbro.com950    categories: [consumer, gaming]951    tier: B952    aliases: [wizards of the coast, monopoly, nerf]953    discover: { rss: true, sitemap: true }954    notes: "newsroom.hasbro.com and investor.hasbro.com are 403 to bots. No validated sensor yet."955  - id: lego956    name: The LEGO Group957    domain: lego.com958    categories: [consumer]959    tier: B960    weight: 1.1961    aliases: [lego]962    discover: { rss: true, sitemap: true, pages: true }963    sensors:964      - { name: newsroom, url: "https://www.lego.com/en-ca/aboutus/newsroom", type: HTML, connector: http, tier: B }965      - { name: local news sitemap, url: "https://www.lego.com/local-news/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B }966  - id: yeti967    name: YETI968    domain: yeti.com969    categories: [consumer]970    tier: C971    discover: { rss: true, sitemap: true }972    notes: "yeti.com press pages are 403 to bots. No validated sensor yet."973  - id: stanley974    name: Stanley 1913975    domain: stanley1913.com976    categories: [consumer]977    tier: C978    aliases: [stanley, stanley cup tumbler, pmi worldwide]979    discover: { rss: true, sitemap: true }980    sensors:981      - { name: stories feed, url: "https://www.stanley1913.com/blogs/stanley-story.atom", type: ATOM, connector: rss, tier: C }982  - id: crocs983    name: Crocs984    domain: crocs.com985    categories: [consumer, retail]986    tier: C987    aliases: [heydude]988    discover: { rss: true, sitemap: true }989    notes: "investors.crocs.com (Q4) behind a Cloudflare challenge. No validated sensor yet."990  - id: vf-corp991    name: VF Corporation992    domain: vfc.com993    categories: [consumer, retail]994    tier: B995    aliases: [vf corp, the north face, vans, timberland]996    products:997      - { name: The North Face, type: product }998      - { name: Vans, type: product }999    discover: { rss: true }1000    sensors:1001      - { name: press releases feed, url: "https://www.vfc.com/investors/news-events-presentations/press-releases/rss", type: RSS, connector: rss, tier: B }1002  - id: levi-strauss1003    name: Levi Strauss & Co.1004    domain: levistrauss.com1005    categories: [consumer, retail]1006    tier: B1007    aliases: [levi's, levis, dockers]1008    discover: { rss: true }1009    notes: "investors.levistrauss.com (Q4) behind a Cloudflare challenge; corporate WordPress feed works."1010    sensors:1011      - { name: news feed, url: "https://www.levistrauss.com/feed/", type: RSS, connector: rss, tier: B }1012  - id: gap1013    name: Gap Inc.1014    domain: gapinc.com1015    categories: [consumer, retail]1016    tier: B1017    aliases: [gap, old navy, banana republic, athleta]1018    discover: { rss: true, sitemap: true, pages: true }1019    notes: "investors.gapinc.com (Q4) behind a Cloudflare challenge."1020    sensors:1021      - { name: newsroom, url: "https://www.gapinc.com/en-us/news", type: HTML, connector: http, tier: B }1022  - id: abercrombie1023    name: Abercrombie & Fitch Co.1024    domain: abercrombie.com1025    homepage: https://corporate.abercrombie.com1026    categories: [consumer, retail]1027    tier: C1028    aliases: [abercrombie, hollister]1029    discover: { rss: true, pages: true }1030    notes: "abercrombieandfitchcompany.gcs-web.com feeds are 403 to bots."1031    sensors:1032      - { name: news, url: "https://corporate.abercrombie.com/news", type: HTML, connector: http, tier: C }1033  - id: ralph-lauren1034    name: Ralph Lauren1035    domain: ralphlauren.com1036    homepage: https://corporate.ralphlauren.com1037    categories: [consumer, retail]1038    tier: B1039    aliases: [polo ralph lauren]1040    discover: { rss: true, pages: true }1041    sensors:1042      - { name: newsroom, url: "https://corporate.ralphlauren.com/newsroom", type: HTML, connector: http, tier: B }1043  - id: tapestry1044    name: Tapestry1045    domain: tapestry.com1046    categories: [consumer, retail]1047    tier: B1048    aliases: [coach, kate spade, stuart weitzman]1049    discover: { rss: true }1050    sensors:1051      - { name: news feed, url: "https://www.tapestry.com/feed/", type: RSS, connector: rss, tier: B }1052  - id: capri-holdings1053    name: Capri Holdings1054    domain: capriholdings.com1055    categories: [consumer, retail]1056    tier: C1057    aliases: [capri, michael kors, versace, jimmy choo]1058    discover: { rss: true, sitemap: true }1059    notes: "capriholdings.com is 403 to bots. No validated sensor yet."10601061  # ───────────────────────── C · Restaurants ─────────────────────────1062  - id: mcdonalds1063    name: McDonald's1064    domain: mcdonalds.com1065    homepage: https://corporate.mcdonalds.com1066    categories: [food, retail]1067    tier: B1068    weight: 1.31069    aliases: [mcdonald's, mcdonalds, mcd]1070    discover: { rss: true, sitemap: true }1071    notes: "corporate.mcdonalds.com and mcdonalds.com time out for non-browser clients (Akamai); investors.mcdonalds.com unreachable. No validated sensor yet."1072  - id: starbucks1073    name: Starbucks1074    domain: starbucks.com1075    homepage: https://about.starbucks.com1076    categories: [food, retail]1077    tier: B1078    weight: 1.21079    discover: { rss: true, sitemap: true }1080    notes: "about.starbucks.com / stories.starbucks.com and investor.starbucks.com (Q4) behind a Cloudflare challenge. No validated sensor yet."1081  - id: yum-brands1082    name: Yum! Brands1083    domain: yum.com1084    categories: [food, retail]1085    tier: B1086    aliases: [yum, kfc, taco bell, pizza hut]1087    products:1088      - { name: KFC, type: product }1089      - { name: Taco Bell, type: product }1090      - { name: Pizza Hut, type: product }1091    discover: { rss: true, pages: true }1092    notes: "investors.yum.com (Q4) behind a Cloudflare challenge."1093    sensors:1094      - { name: news, url: "https://www.yum.com/wps/portal/yumbrands/Yumbrands/news", type: HTML, connector: http, tier: B }1095  - id: restaurant-brands1096    name: Restaurant Brands International1097    domain: rbi.com1098    categories: [food, retail]1099    tier: B1100    weight: 1.11101    aliases: [rbi, tim hortons, burger king, popeyes, firehouse subs]1102    products:1103      - { name: Tim Hortons, type: product, aliases: [tims] }1104      - { name: Burger King, type: product }1105      - { name: Popeyes, type: product }1106    discover: { rss: true, sitemap: true, pages: true }1107    notes: "rbi.com (Q4) behind a Cloudflare challenge; timhortons.ca/news is a client-rendered shell (validator: thin). No validated sensor yet."1108  - id: chipotle1109    name: Chipotle Mexican Grill1110    domain: chipotle.com1111    homepage: https://newsroom.chipotle.com1112    categories: [food, retail]1113    tier: B1114    aliases: [chipotle]1115    discover: { rss: true }1116    sensors:1117      - { name: press releases feed, url: "https://newsroom.chipotle.com/press-releases?pagetemplate=rss", type: RSS, connector: rss, tier: B }1118  - id: dominos1119    name: Domino's Pizza1120    domain: dominos.com1121    homepage: https://ir.dominos.com1122    categories: [food, retail]1123    tier: B1124    aliases: [dominos, domino's]1125    discover: { rss: true, sitemap: true }1126    notes: "ir.dominos.com is 403 to bots. No validated sensor yet."1127  - id: subway1128    name: Subway1129    domain: subway.com1130    homepage: https://newsroom.subway.com1131    categories: [food, retail]1132    tier: B1133    discover: { rss: true }1134    sensors:1135      - { name: press releases feed, url: "https://newsroom.subway.com/Press-Releases?pagetemplate=rss", type: RSS, connector: rss, tier: B }1136  - id: mty-group1137    name: MTY Food Group1138    domain: mtygroup.com1139    categories: [food, retail]1140    tier: C1141    aliases: [mty, thaï express, valentine, cold stone]1142    discover: { rss: true, sitemap: true }1143    notes: "mtygroup.com WordPress feeds (all languages/categories) are empty; press releases live behind a client-rendered investors page. No validated sensor yet."1144  - id: aw-canada1145    name: A&W Canada1146    domain: aw.ca1147    homepage: https://web.aw.ca1148    categories: [food, retail]1149    tier: C1150    aliases: [a&w, a&w food services]1151    discover: { rss: true, sitemap: true }1152    notes: "web.aw.ca newsroom is a client-rendered shell. No validated sensor yet."1153  - id: st-hubert1154    name: St-Hubert1155    domain: st-hubert.com1156    categories: [food, retail]1157    tier: C1158    aliases: [rôtisseries st-hubert]1159    discover: { rss: true, sitemap: true }1160    notes: "st-hubert.com is 403 to bots (news, press, sitemap). No validated sensor yet."1161  - id: wendys1162    name: Wendy's1163    domain: wendys.com1164    homepage: https://www.irwendys.com1165    categories: [food, retail]1166    tier: B1167    aliases: [wendys]1168    discover: { rss: true, sitemap: true }1169    notes: "irwendys.com (Q4) behind a Cloudflare challenge; wendys.com has no feed. No validated sensor yet."1170  - id: darden1171    name: Darden Restaurants1172    domain: darden.com1173    categories: [food, retail]1174    tier: C1175    aliases: [olive garden, longhorn steakhouse]1176    discover: { rss: true, sitemap: true }1177    notes: "investor.darden.com (Q4) behind a Cloudflare challenge; darden.com newsroom 404. No validated sensor yet."1178  - id: chick-fil-a1179    name: Chick-fil-A1180    domain: chick-fil-a.com1181    categories: [food, retail]1182    tier: B1183    discover: { rss: true }1184    sensors:1185      - { name: stories feed, url: "https://www.chick-fil-a.com/feed", type: RSS, connector: rss, tier: B }1186  - id: inspire-brands1187    name: Inspire Brands1188    domain: inspirebrands.com1189    categories: [food, retail]1190    tier: B1191    aliases: [dunkin, dunkin', arby's, buffalo wild wings, sonic, baskin-robbins, jimmy john's]1192    products:1193      - { name: Dunkin', type: product, aliases: [dunkin, dunkin donuts] }1194      - { name: Arby's, type: product }1195    discover: { rss: true }1196    sensors:1197      - { name: news feed, url: "https://inspirebrands.com/feed/", type: RSS, connector: rss, tier: B }11981199  # ───────────────────────── D · Hospitality & travel ─────────────────────────1200  - id: marriott1201    name: Marriott International1202    domain: marriott.com1203    homepage: https://news.marriott.com1204    categories: [travel]1205    tier: B1206    weight: 1.21207    aliases: [marriott, bonvoy, sheraton, westin, ritz-carlton]1208    products:1209      - { name: Marriott Bonvoy, type: service, aliases: [bonvoy] }1210    discover: { rss: true, sitemap: true }1211    notes: "news.marriott.com is fully client-rendered (2.5 KB shell); investors.marriott.com unreachable. No validated sensor yet."1212  - id: hilton1213    name: Hilton1214    domain: hilton.com1215    homepage: https://stories.hilton.com1216    categories: [travel]1217    tier: B1218    weight: 1.21219    aliases: [hilton worldwide, hilton honors, waldorf astoria, doubletree]1220    discover: { rss: true }1221    sensors:1222      - { name: stories feed, url: "https://stories.hilton.com/feed", type: RSS, connector: rss, tier: B }1223  - id: hyatt1224    name: Hyatt1225    domain: hyatt.com1226    homepage: https://newsroom.hyatt.com1227    categories: [travel]1228    tier: B1229    aliases: [hyatt hotels, world of hyatt]1230    discover: { rss: true }1231    notes: "investors.hyatt.com (Q4) behind a Cloudflare challenge; newsroom RSS works."1232    sensors:1233      - { name: news releases feed, url: "https://newsroom.hyatt.com/news-releases?pagetemplate=rss", type: RSS, connector: rss, tier: B }1234  - id: ihg1235    name: IHG Hotels & Resorts1236    domain: ihgplc.com1237    categories: [travel]1238    tier: B1239    aliases: [ihg, intercontinental, holiday inn, crowne plaza]1240    discover: { rss: true, sitemap: true }1241    notes: "ihgplc.com is 403 to bots on news and RSS paths (Akamai). No validated sensor yet."1242  - id: accor1243    name: Accor1244    domain: accor.com1245    homepage: https://group.accor.com1246    categories: [travel]1247    tier: B1248    aliases: [accorhotels, ibis, novotel, sofitel, fairmont]1249    discover: { rss: true, sitemap: true }1250    notes: "press.accor.com feed is 403 to bots; group.accor.com exposes no feed. No validated sensor yet."1251  - id: wyndham1252    name: Wyndham Hotels & Resorts1253    domain: wyndhamhotels.com1254    homepage: https://corporate.wyndhamhotels.com1255    categories: [travel]1256    tier: B1257    aliases: [wyndham, days inn, la quinta, super 8]1258    discover: { rss: true }1259    sensors:1260      - { name: news releases feed, url: "https://corporate.wyndhamhotels.com/news-releases/feed/", type: RSS, connector: rss, tier: B }1261  - id: four-seasons1262    name: Four Seasons1263    domain: fourseasons.com1264    homepage: https://press.fourseasons.com1265    categories: [travel]1266    tier: C1267    aliases: [four seasons hotels and resorts]1268    discover: { rss: true, pages: true }1269    sensors:1270      - { name: news releases, url: "https://press.fourseasons.com/news-releases/", type: HTML, connector: http, tier: C }1271  - id: airbnb1272    name: Airbnb1273    domain: airbnb.com1274    homepage: https://news.airbnb.com1275    categories: [travel, technology]1276    tier: B1277    weight: 1.31278    discover: { rss: true, sitemap: true, pages: true }1279    notes: "news.airbnb.com has no RSS; investors.airbnb.com exposes no feed."1280    sensors:1281      - { name: newsroom sitemap, url: "https://news.airbnb.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 3000 } }1282      - { name: crawler policy (robots.txt), url: "https://www.airbnb.com/robots.txt", type: FILE, connector: http, tier: D }1283  - id: booking-holdings1284    name: Booking Holdings1285    domain: booking.com1286    homepage: https://www.bookingholdings.com1287    categories: [travel, technology]1288    tier: B1289    weight: 1.31290    aliases: [booking, booking.com, priceline, agoda, kayak, opentable, rentalcars]1291    products:1292      - { name: Booking.com, type: service }1293      - { name: Priceline, type: service }1294      - { name: Agoda, type: service }1295      - { name: OpenTable, type: service }1296    discover: { rss: true, sitemap: true }1297    notes: "ir.bookingholdings.com (Q4) behind a Cloudflare challenge."1298    sensors:1299      - { name: crawler policy (robots.txt), url: "https://www.booking.com/robots.txt", type: FILE, connector: http, tier: D }1300  - id: kayak1301    name: KAYAK1302    domain: kayak.com1303    categories: [travel, technology]1304    tier: C1305    aliases: [kayak]1306    discover: { rss: true }1307    sensors:1308      - { name: news feed, url: "https://www.kayak.com/news/feed/", type: RSS, connector: rss, tier: C }1309  - id: expedia1310    name: Expedia Group1311    domain: expedia.com1312    homepage: https://www.expediagroup.com1313    categories: [travel, technology]1314    tier: B1315    weight: 1.21316    aliases: [expedia, hotels.com, vrbo, trivago, orbitz, travelocity]1317    products:1318      - { name: Vrbo, type: service }1319      - { name: Hotels.com, type: service }1320    discover: { rss: true, sitemap: true }1321    notes: "expediagroup.com media/IR pages (Q4) behind a Cloudflare challenge."1322    sensors:1323      - { name: crawler policy (robots.txt), url: "https://www.expedia.com/robots.txt", type: FILE, connector: http, tier: D }1324  - id: tripadvisor1325    name: Tripadvisor1326    domain: tripadvisor.com1327    categories: [travel, internet]1328    tier: B1329    aliases: [trip advisor, viator, thefork]1330    discover: { rss: true, sitemap: true }1331    notes: "ir.tripadvisor.com is 403 to bots."1332    sensors:1333      - { name: crawler policy (robots.txt), url: "https://www.tripadvisor.com/robots.txt", type: FILE, connector: http, tier: D }1334  - id: trip-com1335    name: Trip.com Group1336    domain: trip.com1337    homepage: https://investors.trip.com1338    categories: [travel, internet]1339    tier: B1340    aliases: [trip.com, ctrip, skyscanner, qunar]1341    products:1342      - { name: Skyscanner, type: service }1343    discover: { rss: true, sitemap: true }1344    notes: "investors.trip.com is 403 to bots; skyscanner.net serves a captcha. No validated sensor yet."1345  - id: hopper1346    name: Hopper1347    domain: hopper.com1348    homepage: https://media.hopper.com1349    categories: [travel, technology]1350    tier: C1351    discover: { rss: true, sitemap: true, pages: true }1352    sensors:1353      - { name: media room, url: "https://media.hopper.com/", type: HTML, connector: http, tier: C }1354  - id: carnival1355    name: Carnival Corporation1356    domain: carnivalcorp.com1357    categories: [travel]1358    tier: B1359    weight: 1.11360    aliases: [carnival, carnival cruise line, princess cruises, holland america, costa, aida, p&o cruises]1361    discover: { rss: true }1362    sensors:1363      - { name: news feed, url: "https://www.carnivalcorp.com/feed/", type: RSS, connector: rss, tier: B }1364  - id: royal-caribbean1365    name: Royal Caribbean Group1366    domain: royalcaribbeangroup.com1367    categories: [travel]1368    tier: B1369    weight: 1.11370    aliases: [royal caribbean, celebrity cruises, silversea]1371    discover: { rss: true, sitemap: true, pages: true }1372    notes: "rclinvestor.com exposes no RSS."1373    sensors:1374      - { name: news, url: "https://www.royalcaribbeangroup.com/news", type: HTML, connector: http, tier: B }1375  - id: norwegian-cruise1376    name: Norwegian Cruise Line Holdings1377    domain: nclhltd.com1378    categories: [travel]1379    tier: B1380    aliases: [norwegian cruise line, ncl, oceania cruises, regent seven seas]1381    discover: { rss: true }1382    sensors:1383      - { name: press releases feed, url: "https://www.nclhltd.com/investors/news-events/press-releases/rss", type: RSS, connector: rss, tier: B }1384  - id: msc-cruises1385    name: MSC Cruises1386    domain: msccruises.com1387    categories: [travel]1388    tier: C1389    aliases: [msc]1390    discover: { rss: true, sitemap: true }1391    notes: "msccruises.com answers 401 to bots. No validated sensor yet."1392  - id: vail-resorts1393    name: Vail Resorts1394    domain: vailresorts.com1395    homepage: https://news.vailresorts.com1396    categories: [travel, sports]1397    tier: C1398    aliases: [vail, epic pass, whistler blackcomb]1399    discover: { rss: true, sitemap: true }1400    notes: "investors.vailresorts.com is 403 to bots; news.vailresorts.com exposes no RSS. No validated sensor yet."1401  - id: club-med1402    name: Club Med1403    domain: clubmed.com1404    homepage: https://corporate.clubmed1405    categories: [travel]1406    tier: C1407    discover: { rss: true, sitemap: true }1408    notes: "corporate.clubmed feed is 403 to bots. No validated sensor yet."1409  - id: transat1410    name: Transat A.T.1411    domain: transat.com1412    categories: [travel, aviation]1413    tier: C1414    aliases: [air transat, transat]1415    discover: { rss: true, sitemap: true, pages: true }1416    sensors:1417      - { name: media, url: "https://www.transat.com/en-CA/corporate/media", type: HTML, connector: http, tier: C }1418  - id: sunwing1419    name: Sunwing1420    domain: sunwing.ca1421    categories: [travel, aviation]1422    tier: C1423    aliases: [sunwing vacations, westjet vacations]1424    discover: { rss: true, sitemap: true }1425    notes: "sunwing.ca exposes no press page or feed reachable by bots. No validated sensor yet."1426  - id: uber1427    name: Uber1428    domain: uber.com1429    categories: [travel, transport, technology]1430    tier: B1431    weight: 1.31432    aliases: [uber technologies, uber eats]1433    products:1434      - { name: Uber Eats, type: service }1435    discover: { rss: true, sitemap: true, pages: true }1436    notes: "investor.uber.com (Q4) behind a Cloudflare challenge; uber.com newsroom feed paths answer 406."1437    sensors:1438      - { name: newsroom (US), url: "https://www.uber.com/us/en/newsroom/", type: HTML, connector: http, tier: B }1439      - { name: crawler policy (robots.txt), url: "https://www.uber.com/robots.txt", type: FILE, connector: http, tier: D }1440  - id: lyft1441    name: Lyft1442    domain: lyft.com1443    categories: [travel, transport, technology]1444    tier: B1445    discover: { rss: true, sitemap: true, pages: true }1446    notes: "investor.lyft.com exposes no RSS."1447    sensors:1448      - { name: blog, url: "https://www.lyft.com/blog", type: HTML, connector: http, tier: B }1449  - id: doordash1450    name: DoorDash1451    domain: doordash.com1452    homepage: https://about.doordash.com1453    categories: [food, technology, commerce]1454    tier: B1455    weight: 1.11456    aliases: [dashpass, wolt]1457    discover: { rss: true, sitemap: true, pages: true }1458    notes: "ir.doordash.com (Q4) and doordash.com robots.txt behind a Cloudflare challenge."1459    sensors:1460      - { name: news, url: "https://about.doordash.com/en-us/news", type: HTML, connector: http, tier: B }1461  - id: deliveroo1462    name: Deliveroo1463    domain: deliveroo.co.uk1464    homepage: https://corporate.deliveroo.co.uk1465    categories: [food, technology, commerce]1466    tier: C1467    discover: { rss: true, sitemap: true }1468    notes: "corporate.deliveroo.co.uk and deliveroo.news are unreachable for bots. No validated sensor yet."1469  - id: just-eat-takeaway1470    name: Just Eat Takeaway.com1471    domain: justeattakeaway.com1472    categories: [food, technology, commerce]1473    tier: C1474    aliases: [just eat, takeaway.com, skip the dishes, skipthedishes, lieferando, thuisbezorgd]1475    products:1476      - { name: SkipTheDishes, type: service, aliases: [skip] }1477    discover: { rss: true, sitemap: true }1478    notes: "justeattakeaway.com newsroom and RSS behind a Cloudflare challenge; skipthedishes.com/news 403. No validated sensor yet."1479  - id: grab1480    name: Grab1481    domain: grab.com1482    categories: [travel, transport, technology, commerce]1483    tier: B1484    aliases: [grab holdings, grabfood]1485    discover: { rss: true }1486    sensors:1487      - { name: press feed, url: "https://www.grab.com/sg/press/feed/", type: RSS, connector: rss, tier: B }1488  - id: bolt1489    name: Bolt1490    domain: bolt.eu1491    categories: [travel, transport, technology]1492    tier: C1493    aliases: [bolt technology, taxify]1494    discover: { rss: true, sitemap: true, pages: true }1495    sensors:1496      - { name: blog, url: "https://bolt.eu/en/blog/", type: HTML, connector: http, tier: C }1497  - id: getaround1498    name: Getaround1499    domain: getaround.com1500    categories: [travel, transport]1501    tier: C1502    discover: { rss: true, sitemap: true }1503    notes: "getaround.com blog and feed redirect to the homepage. No validated sensor yet."1504  - id: turo1505    name: Turo1506    domain: turo.com1507    categories: [travel, transport]1508    tier: C1509    discover: { rss: true, sitemap: true }1510    notes: "turo.com blog behind a Cloudflare challenge. No validated sensor yet."1511  - id: hertz1512    name: Hertz1513    domain: hertz.com1514    homepage: https://newsroom.hertz.com1515    categories: [travel, transport]1516    tier: B1517    aliases: [hertz global, dollar, thrifty]1518    discover: { rss: true }1519    sensors:1520      - { name: newsroom feed, url: "https://newsroom.hertz.com/feed/", type: RSS, connector: rss, tier: B }1521  - id: avis-budget1522    name: Avis Budget Group1523    domain: avisbudgetgroup.com1524    categories: [travel, transport]1525    tier: B1526    aliases: [avis, budget, zipcar]1527    products:1528      - { name: Zipcar, type: service }1529    discover: { rss: true, sitemap: true, pages: true }1530    notes: "ir.avisbudgetgroup.com is 403 to bots."1531    sensors:1532      - { name: press releases, url: "https://www.avisbudgetgroup.com/home/news-and-media/press-release", type: HTML, connector: http, tier: B }1533      - { name: sitemap, url: "https://www.avisbudgetgroup.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B }1534  - id: enterprise-mobility1535    name: Enterprise Mobility1536    domain: enterprisemobility.com1537    categories: [travel, transport]1538    tier: C1539    aliases: [enterprise, enterprise rent-a-car, national car rental, alamo]1540    discover: { rss: true, sitemap: true }1541    notes: "enterprisemobility.com press pages are 403 to bots. No validated sensor yet."1542  - id: sixt1543    name: Sixt1544    domain: sixt.com1545    homepage: https://about.sixt.com1546    categories: [travel, transport]1547    tier: C1548    discover: { rss: true, sitemap: true }1549    notes: "sixt.com and about.sixt.com press pages behind a Cloudflare challenge. No validated sensor yet."1550  - id: amadeus1551    name: Amadeus1552    domain: amadeus.com1553    categories: [travel, technology]1554    tier: B1555    aliases: [amadeus it group]1556    discover: { rss: true, sitemap: true }1557    notes: "amadeus.com newsroom is a client-rendered shell; no feed or XML sitemap. No validated sensor yet."1558  - id: sabre1559    name: Sabre1560    domain: sabre.com1561    categories: [travel, technology]1562    tier: B1563    aliases: [sabre corporation]1564    discover: { rss: true, sitemap: true, pages: true }1565    notes: "investors.sabre.com is 403 to bots; sabre.com releases pages are client-rendered and the feed answers 500. No validated sensor yet."1566  - id: travelport1567    name: Travelport1568    domain: travelport.com1569    categories: [travel, technology]1570    tier: C1571    discover: { rss: true, sitemap: true, pages: true }1572    sensors:1573      - { name: blog, url: "https://www.travelport.com/blog", type: HTML, connector: http, tier: C }15741575  # ───────────────────────── E · Automotive retail & loyalty ─────────────────────────1576  - id: carmax1577    name: CarMax1578    domain: carmax.com1579    categories: [automotive, retail]1580    tier: B1581    discover: { rss: true, sitemap: true }1582    notes: "investors.carmax.com (Q4) behind a Cloudflare challenge. No validated sensor yet."1583  - id: autonation1584    name: AutoNation1585    domain: autonation.com1586    categories: [automotive, retail]1587    tier: C1588    discover: { rss: true, sitemap: true }1589    notes: "autonation.com/news 403, newsroom.autonation.com behind a Cloudflare challenge, investors.autonation.com RSS 404. No validated sensor yet."1590  - id: carvana1591    name: Carvana1592    domain: carvana.com1593    homepage: https://investors.carvana.com1594    categories: [automotive, retail, commerce]1595    tier: B1596    discover: { rss: true }1597    sensors:1598      - { name: investor news feed, url: "https://investors.carvana.com/rss/news-releases.xml", type: RSS, connector: rss, tier: B }1599  - id: autocanada1600    name: AutoCanada1601    domain: autocan.ca1602    categories: [automotive, retail]1603    tier: C1604    discover: { rss: true, sitemap: true }1605    notes: "autocan.ca is 403 to bots. No validated sensor yet."1606  - id: air-miles1607    name: AIR MILES1608    domain: airmiles.ca1609    categories: [retail, commerce]1610    tier: C1611    aliases: [air miles, airmiles, bmo air miles]1612    discover: { rss: true, sitemap: true }1613    notes: "airmiles.ca redirects most pages through OAuth; sitemap is the only stable public surface."1614    sensors:1615      - { name: sitemap, url: "https://www.airmiles.ca/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 1000 } }16161617  # ───────────────────────── F · Extensions of founding-file sources ─────────────────────────1618  - id: shopify1619    extend: true1620    sensors:1621      - { name: crawler policy (robots.txt), url: "https://www.shopify.com/robots.txt", type: FILE, connector: http, tier: D }1622