# Kao Data (`kaodata`) - **Domain**: `www.kaodata.com` · **Kind**: operator · **Priority**: 2 · **Enabled**: yes - **License / attribution**: Publicly accessible operator pages; factual data only; © Kao Data — attribution “Kao Data” - **Coverage**: GB ## What it collects Facility records (`kind: facility`) via parser(s) `kaodata_facility_v1` in `apps/worker/src/connectors/operators2/emea.ts`. Fields published by the pages and captured: campus record (address, postalCode, plannedPowerMw full-build, siteAreaHa, buildingSqm, renewableClaim, certifications) plus one record per building (code, itCapacityMw, status). Every field carries an extraction method in `methods` (e.g. `json-ld:PostalAddress`, `regex:it_mw_v1`, `attr:data-value+MW`, `lookup:city-country`) for provenance. Coordinates are only taken from JSON-LD / embedded JSON / map links published by the operator — never geocoded. Status defaults to `operational` unless the page uses pipeline wording (under construction / coming soon / planned). ## Discovery - Sitemaps: `https://kaodata.com/wp-sitemap-posts-page-1.xml`, `https://kaodata.com/wp-sitemap-posts-news-1.xml` - Include: `/locations/[a-z-]+/$`, `/news/.` - Exclude: `\?`, `#` - Classify: `/locations/[a-z-]+/$` → facility_pages (facility_page); `/news/.` → newsroom (press_release) Newsroom URLs (when configured) rely on the GenericConnector news fallback (press_release → `news_event` when data-center relevant). ## Schedule & fetch - Schedule: facility_pages weekly, newsroom daily, sitemap weekly - Fetch: L1→L2, 15 rpm, concurrency 2, robots.txt respected, max 20 premium credits/run. All pages are served at L1 (plain HTTP); `maxLevel` is capped at 2 so false-positive “blocked” heuristics (HubSpot / cookie-consent strings) never spend Scrapfly credits. ## Quirks Campus pages /locations// publish the campus address, full-build IT load, acreage and a list of buildings 'KLON-01 (8.8MW Operational)' → campus record + one record per building with its own MW and lifecycle status. Cookie-consent scripts trip the blocked heuristic → maxLevel 2. ## Verification (live, 2026-09-11) `try-connector --limit N`: discovered 112 URLs (facility_pages=4, newsroom=108); sampled pages → 11 entities, 11 valid, 0 rejected, 0 premium credits.