# equinix — Equinix IBX data centers | | | |---|---| | Config | `config/connectors/equinix.yaml` | | Parser | `apps/worker/src/connectors/operators1/equinix.ts` → `equinix_facility_v1` | | Kind / priority | operator / 1 | | License / attribution | Publicly accessible operator pages; factual data only; © Equinix, Inc. | | Cadence | facility pages weekly · index monthly · sitemap weekly | ## What is crawled - Sitemap `https://www.equinix.com/sitemap-core.xml` (the `/sitemap.xml` index also lists `sitemap-resources.xml` and `sitemap-prs.xml`; the latter returns HTML, not XML). - Facility pages: `/data-centers/-colocation/-colocation/-data-centers/` (code = `[a-z]{2,3}\d{1,2}[a-z]?`, e.g. `dc2`, `fr5`, `ty11`). Metro / country / region pages are `index`. - **Newsroom: disabled.** Press releases live on `newsroom.equinix.com` (RSS `https://newsroom.equinix.com/press-releases-global?pagetemplate=rss`, articles `/YYYY-MM-DD-`). Those pages are served normally (HTTP 200, ~20 KB of text) but embed Cloudflare's `/cdn-cgi/challenge-platform/` beacon, which the shared `looksBlockedOrEmpty()` heuristic in `packages/connectors/src/fetchers.ts` treats as a bot wall → each article escalated to Scrapfly (30 credits each; 120 credits burnt in the first dry run). The feed is commented out in the YAML until that heuristic only fires on short pages. ## Access `www.equinix.com` is behind Akamai: the bot UA gets 403, the browser identity (L2, still direct HTTP, 0 credits) is served in full. `fetch.level: 1`, `maxLevel: 4` — L2 is enough for every IBX page tested; Scrapfly is never reached. `maxCreditsPerRun: 60`. robots.txt: `Allow: /`, `Disallow: /content/dam/eqxcorp/*` (not crawled). ## Fields (method) - `code` ← JS constant `const title = "DC2"` in the map script (`js-var:title`); `name` ← `h1#hero-banner-heading` ("Washington DC DC2"). - `address`, `city`, `postalCode`, `countryIso2` ← `const address1/address2/city/postalCode/country` (country name → ISO-2 via `countryFromText`). - `regionName` ← US state in the meta description ("…, Ashburn, VA.") — US only. - `lat`/`lng` ← `const latitude/longitude` (unicode-escaped, decoded) → `geo.precision = exact` (operator marker). - `certifications` ← "Certified to global standards" list (HECVAT, HIPAA, ISO 22301/27001/9001, NIST 800-53/FISMA High, PCI DSS, SOC 1/2 Type II …). - `renewableClaim` ← the REC/renewable bullet of the "Sustainability" spec row. - `facilityType` ← `const ibxType` (`IBX` → colocation, `xScale` → hyperscale). `status` ← "coming soon / under construction" only when stated in the hero; default operational. - `description` ← meta description + "Colocation space: 11,004 m² (118,446 ft²). Power redundancy: N+1. UPS redundancy: N+1." Colocation (white) space is **not** stored as `buildingSqm` (it is not the building footprint). - Not published per IBX: MW capacity, PUE, rack count → left null (nothing invented). - Key `equinix:`; `externalIds.equinix_ibx`. ## Verification (2026-09-11) - Discovery: 398 URLs → `facility_pages=265`, `index=133` (sitemap-core has 403 `/data-centers/` URLs: 276 IBX-shaped, of which 265 pass classify; the rest are metro/country/region pages). - `--url` DC2: `Washington DC DC2`, 21715 Filigree Court, Ashburn, VA 20147, US, geo 39.01679/-77.46054, 9 certifications, renewable claim "2025: Wind RECs from Texas and Oklahoma vPPAs…" — matches the live page. - `--url` FR5: `Frankfurt FR5`, Kleyerstrasse 90, 60326 Frankfurt, DE, geo 50.09842/8.63239. - Sweep of 8 spread IBX pages (AT1, NY2, DC12, TR6, FR4, AM11, LD3, HK2): 8/8 valid, 0 rejected, all with address + coordinates. Credits: 0 (L2). ## Gaps / TODO - Newsroom off (see above) — re-enable the RSS line once the fetcher heuristic is fixed. - `regionName` only for US sites; MW never published.