Changelog
Site-wide updates: when we verified a registrar's data, when we changed scoring, and when we shipped new pages. Page-specific changelogs live on each entity page.
- dataverificationpipelinecontent
Spaceship is now verified from primary sources (verified registrars 5 -> 6): its full USD table for 19 TLDs (registration, renewal, transfer, and the separately itemised ICANN fee) was read twice in a real browser on 2026-08-19 with identical results, and the capture is stored in full in data/pricing-sources.json. Because Spaceship itemises the mandatory ICANN fee on its own line while every other registrar's published figures already include it, an icann_fee column was added to both pricing files (0.00 means the price is all-in) and every ranking, cheapest claim, price range and multi-year total now sorts and sums on the all-in figure, so no registrar can gain a position by splitting its price up; the validator rejects a blank or implausible fee and any fee on a ccTLD row. The same manual pass re-read the two other blocked registrars: GoDaddy does render prices to a real browser (the July anti-bot finding is out of date) but geo-routes to its en-uk market and prices in GBP, so those figures are recorded as evidence and deliberately not ingested — new status blocked_geo_currency; Squarespace Domains was re-confirmed as publishing only a price range with no per-TLD table. Separately, the tracked TLD catalog was widened from ~78 to 294 entries and every collector re-run against it — the old narrow list was silently filtering out prices the collectors already read correctly. Porkbun added 212 rows from its public API, NameSilo went 52 -> 261 tracked TLDs, Namecheap 31 -> 33, Hover 14 -> 15, and a new Dynadot collector that walks its full catalog page (dynadot.com/domain/prices, switched to the 500-per-page view) took Dynadot 6 -> 252. 855 rows in each of pricing.csv and tld-pricing.csv now carry last_checked 2026-08-19, and TLDs with two or more verified registrars went from 54 to 263 of 275. Re-fetching corrected prices that had drifted since the June and July reads, including Dynadot .co first year 9.30 -> 3.48 against a renewal that rose 27.04 -> 31.20, and Porkbun .ca 8.75 -> 8.88. TLD pages went 63 -> 280, built from a fresh IANA root-zone pull (data/tld-registry-facts.json: 1,595 root rows, 284 tracked) and gated on verified pricing. The price-history clock also started: data/snapshots/2026-08-19.csv is the first immutable weekly snapshot, 856 verified rows, published at /data/snapshots/; eight snapshots are needed before per-TLD price-history pages can ship. Shipped the same day on the site surface: Markdown twins with Accept negotiation for every content page and the answer hubs, the canonical host fixed to www with data-derived freshness, a build failure on orphan pages, seven comparison pages on the GoDaddy and Squarespace exit corridors, and /registrars/<slug>/alternatives/ pages.
- contentdatatrust
Catalog expansion across registrars, countries and TLDs. Tracked registrars 9 -> 20: Hostinger, IONOS, Name.com, Gandi, AWS Route 53 (Amazon Registrar), WordPress.com, Wix Domains, Shopify Domains, Domain.com, Network Solutions and OVHcloud were added as facts-only entries (tested=false) with sourced facts and official source URLs — no score and no Review/AggregateRating schema, which the validator now enforces. ICANN accreditation was checked against the IANA registrar-ID list: 10 are directly accredited, Shopify has no direct accreditation and is marked a reseller through accredited partners. Country pages 10 -> 30: 20 countries added by ccTLD demand, each registry operator the exact IANA sponsoring organisation citing its IANA root-db record. Only 3 of the 20 have verified tracked-registrar ccTLD pricing; the other 17 state plainly that no tracked registrar sells the ccTLD and point at the registry's own accredited-registrar list rather than inventing a local recommendation. Published data/cctlds.json — every country-code TLD in the IANA root (316: 255 ASCII and 61 IDN; root version 2026062302, fetched 2026-07-16) with operator, IDN mapping and positive-confirmation registrar support read from real catalogs (Porkbun 907 TLDs, NameSilo 471, Namecheap 50, Hover 16). 47 ccTLDs have at least one confirmed tracked registrar; absence means unknown, never 'not offered'. Coverage against the live IANA root is now checked by validate-data. TLD pages 9 -> 62 with IANA-verified registry facts behind an anti-thin gate: a TLD page enters the sitemap only once at least one verified price row exists (.co.il renders but is held out). Also shipped: the /cheapest-domains/ and /tld-price-list/ rollups, an RDAP-backed domain registrar lookup tool, a 1/3/5/10-year TCO cost calculator, the /guides/ hub with cost, lifecycle, privacy and transfer clusters, a 35-pair sourced transfer matrix, and the glossary 24 -> 114 terms. Fixed a price contradiction on the Australia page and added a validator rule that fails the build on any hardcoded price literal in country prose.
- dataverificationpipeline
Built the verified-pricing ingestion pipeline and took verified registrars from 2 to 5 of 9. scripts/fetch-pricing.mjs ingests Porkbun's public pricing API into pricing.csv and tld-pricing.csv with a source_url and last_checked on every row (Porkbun 6 -> 43 verified TLDs, then 62 of a widened 82-TLD tracked spine). scripts/fetch-pricing-headless.mjs renders the JS-only pricing pages that return 403 to a plain fetch in a real Chromium via Playwright and extracts the published per-TLD figures, with a dedicated extractor per site: Namecheap (single register/renew/transfer table, 31 TLDs), NameSilo (three tabs, single-domain 1-49 tier, 52 TLDs) and Hover (trending table, 14 TLDs — Hover does not sell .ai). Both scripts share scripts/pricing-shared.mjs so the tracked-TLD list cannot drift between them, and neither fabricates a figure: a TLD with no rendered price is skipped and reported. Namecheap, NameSilo and Hover flipped to verified=true with verified_primary provenance (method headless_render, last_verified 2026-07-15); pricing.csv grew 42 -> 189 rows and tld-pricing.csv 42 -> 179. Added the cheapest-ranking guardrail so a stale sample price can never back a 'cheapest' claim: every pricing row is annotated with its registrar's verified flag at load, rankByPrice() returns verified rows first, and cheapestVerified() returns a verified row or nothing. GoDaddy (Akamai returns 403 to a headless browser too), Spaceship (no per-TLD price table) and Squarespace Domains (flat-pricing marketing page) stayed unverified, each with its blocker documented in registrars.json and pricing-sources.json.
- dataagent-readinessinfrastructure
Agent-facing data surfaces, built 2026-06-26 to 2026-07-07 and merged to main on 2026-08-05/06 (PRs #24-#30, #40). Tracked registrars 7 -> 9: NameSilo (2026-06-28) and Hover (2026-06-29) added with scores, pricing source strategies and corrected accreditation and pricing claims; GoDaddy's February 2026 terms-of-service consumer-protection change was documented as a dated editorial notice. New machine-readable endpoints: /data/api-access.json describing each registrar's API access tier (2026-06-30), per-registrar agent profiles at /data/registrars/<slug>.json (2026-07-01), and a site-wide data index at /data/index.json (2026-07-07) that catalogs every published endpoint with its format, contents, the pages it backs, freshness and an honest verification label, so an agent no longer has to know each path in advance. The Agent Readiness Index was extended to NameSilo and Hover (agent-readiness.json last_updated 2026-07-02). Also added the registrar API access-tiers reference page, an RDAP transition section on the AI-agents page, and DNS-management and domain-APIs audience landing pages.
- dataagent-readinesscontent
Published /domain-registrar-mcp/ and /data/domain-registrar-mcp.json: a tracker of which domain registrars publish an official, first-party Model Context Protocol server and, where they do, whether it is read/write management or read-only search, plus endpoint, auth model, method coverage and sandbox status. Every capability detail was re-verified live against each registrar's own MCP endpoint on 2026-07-06. Of the 9 registrars tracked at that date, two ship an official MCP: NameSilo's read/write management server (mcp.namesilo.com/rpc, 80+ methods, X-API-KEY auth, sandbox) can register, transfer and manage DNS end to end, while GoDaddy's read-only server (api.godaddy.com/v1/domains/mcp, streamable HTTP, no auth) answers search and availability only. Cloudflare Registrar, Porkbun, Namecheap, Spaceship, Dynadot, Hover and Squarespace Domains publish none; community wrappers are noted separately and never counted as official. The official-MCP yes/no signal is grounded in Open Domain Data agent_capability_signals@2026.05, with NameSilo and Hover named as not-yet-in-dataset rather than folded into its counts. Merged to main on 2026-08-05 (PR #29).
- dataverificationpipeline
Built an autonomous pricing-verification pipeline (scripts/verify-pricing-auto.mjs + data/pricing-sources.json) that probes each registrar's primary pricing source, classifies it (reachable / anti-bot 403 / JS-rendered), and reports what can be verified without a human reading prices off a browser. Used it to expand verified-from-primary-source coverage from 1 registrar to 2: re-verified Porkbun against porkbun.com/products/domains (corrected .org renewal/transfer to $11.84 with a $7.98 first-year sale, and fixed the stale .org row in tld-pricing.csv the previous pass missed) and newly verified Dynadot against its per-TLD pages (dynadot.com/domain/<tld>), which bypass the JS-only combined price list that was the original blocker. Dynadot's recorded prices had all drifted, e.g. .com is now $10.88 (was $8.99/$11.99) and .ai $85.60 with a $171.20 transfer. Confirmed Cloudflare Registrar's at-cost model from Cloudflare's developer docs (per-TLD amount = registry wholesale fee, so it is model_confirmed rather than re-listed). Recorded per-registrar provenance in a new pricing_verification object (status, method, primary/per-TLD sources, what blocked an automated read) and added a source_url column to tld-pricing.csv so every row is traceable. Namecheap, GoDaddy and Spaceship return HTTP 403 to a plain fetch and Squarespace renders prices client-side; those four stay verified=false with the blocker documented, pending a JS-rendering crawl. The data validator now enforces this provenance.
- contentdataagent-readiness
Launched the Agent Readiness Index (methodology v0.1): a transparent 0–100 score for how ready each registrar is for AI agents, across 10 weighted criteria (API coverage, authentication & delegation, agent safety, developer experience, agent-interface readiness, pricing transparency, DNS & infrastructure, privacy & compliance, support quality, trust signals). Every sub-score is tied to a cited public source and the overall recomputes from the sub-scores and published weights. As of this date: Cloudflare Registrar 78.7, Porkbun 63.2, GoDaddy 60.4, Namecheap 58.5, Dynadot 56.7, Spaceship 54.9, Squarespace Domains 27.8. Added the companion answer page /best-domain-registrars-for-ai-agents/ and published /data/agent-readiness.json. Headline finding: no registrar yet ships agent-native safety controls for domain operations; GoDaddy is the only registrar with an official (read-only) MCP server.
- datacontentdesign
Replaced placeholder registrar logos with real brand marks (Simple Icons, CC0) wrapped in each registrar's brand color. Added 10 verified Porkbun ccTLD pricing rows (.us, .uk, .co.uk, .ca, .de, .in, .co.in, .nl, .au, .com.au) sourced from porkbun.com/products/domains. Country pages now show a per-ccTLD breakdown with eligibility rules, registry coverage, local registrar lists, and verified-pricing tables. Switched 'Best for country-code domains' from Namecheap to Porkbun based on verified coverage and pricing.
- securityprivacyinfrastructure
Production hardening: CSP and security headers, consent-gated analytics, programmatic favicon and manifest, per-page Open Graph images for registrar reviews, /privacy/ and /changelog/ pages, branded 404, and security.txt.
- dataverification
Verified Porkbun pricing against the registrar's published pricing page (.com, .net, .org, .io, .ai, .co). Updated Cloudflare Registrar facts to remove the outdated 'transfer-only' claim. Added a `verified` boolean per registrar; Porkbun is the only verified entry as of this date.
- contenttrust
Expanded country pages with verifiable registry facts (registry operator, policy authority, nexus rules, DNSSEC, IDN) sourced from each ccTLD's official registry page. Expanded TLD pages with registry operator and IANA root references.
- infrastructure
Migrated `next lint` to standalone ESLint, added `validate:data` script, added GitHub Actions check workflow (lint + typecheck + validate + build).
- launch
Initial MVP foundation: 63 SSG routes across registrar reviews, country guides, TLD pages, comparisons, pricing tracker, methodology, data downloads, llms.txt, llms-full.txt, sitemap.xml, robots.txt. All key content server-rendered.