{
  "schema_version": "1.0",
  "generated_at": "2026-09-04T12:42:47.232Z",
  "license": "Provided for retrieval, citation, and research. No warranty of completeness or fitness. Do not treat unknown or null values as negative facts.",
  "usage": "Canonical HTML pages are the citation surface. Machine-readable files are derived representations of the same records.",
  "documentation_url": "https://tld.reviews/data",
  "schema_url": "https://tld.reviews/data/schema.json",
  "datasets": [
    {
      "name": "registrars",
      "description": "Canonical registrar entities",
      "formats": {
        "json": "/data/registrars.json",
        "jsonl": "/data/registrars.jsonl",
        "csv": "/data/registrars.csv",
        "xml": "/data/registrars.xml",
        "gzip": "/data/registrars.jsonl.gz"
      }
    },
    {
      "name": "tlds",
      "description": "Canonical TLD entities",
      "formats": {
        "json": "/data/tlds.json",
        "jsonl": "/data/tlds.jsonl",
        "csv": "/data/tlds.csv",
        "xml": "/data/tlds.xml"
      }
    },
    {
      "name": "pricing",
      "description": "Historical registrar and TLD pricing observations",
      "formats": {
        "jsonl": "/data/pricing.jsonl",
        "csv": "/data/pricing.csv",
        "xml": "/data/pricing.xml",
        "gzip": "/data/pricing.jsonl.gz"
      }
    },
    {
      "name": "offerings",
      "description": "Registrar × TLD offerings",
      "formats": {
        "jsonl": "/data/offerings.jsonl",
        "json": "/data/offerings.json"
      }
    },
    {
      "name": "features",
      "description": "Feature predicates used by claims",
      "formats": {
        "jsonl": "/data/features.jsonl"
      }
    },
    {
      "name": "claims",
      "description": "Provenanced statements about entities",
      "formats": {
        "jsonl": "/data/claims.jsonl",
        "json": "/data/claims.json"
      }
    },
    {
      "name": "reviews",
      "description": "Opinion records, stored separately from facts",
      "formats": {
        "jsonl": "/data/reviews.jsonl"
      }
    },
    {
      "name": "knowledge-graph",
      "description": "RDF export of the same canonical graph",
      "formats": {
        "turtle": "/data/knowledge.ttl",
        "ntriples": "/data/knowledge.nt"
      }
    }
  ],
  "rdf": {
    "turtle": "https://tld.reviews/data/knowledge.ttl",
    "ntriples": "https://tld.reviews/data/knowledge.nt"
  },
  "field_schema": {
    "schema_version": "1.0",
    "generated_at": "2026-09-04T12:42:47.232Z",
    "title": "tld.reviews Knowledge API field dictionary",
    "description": "Semantic definitions for canonical knowledge objects. Agents should treat null and absent values as unknown, never as false or zero.",
    "types": {
      "registrar": "A domain name registrar entity with stable public identity.",
      "tld": "A top-level domain tracked by tld.reviews.",
      "offering": "A registrar × TLD product relationship.",
      "price_observation": "A dated observation of a list price, not a live checkout quote.",
      "claim": "A provenanced statement about a subject, with a predicate and typed object.",
      "review": "A human opinion record, never mixed into fact fields.",
      "ranking": "A computed answer derived from observations."
    },
    "fields": {
      "schema_version": {
        "type": "string",
        "description": "Knowledge object schema version. Currently 1.0.",
        "nullable": false
      },
      "id": {
        "type": "string",
        "description": "Permanent public URI for the entity or compact internal id in JSONL bulk files.",
        "nullable": false
      },
      "type": {
        "type": "string",
        "description": "Knowledge type discriminator such as registrar, tld, or price_observation.",
        "nullable": false
      },
      "slug": {
        "type": "string",
        "description": "URL-safe identifier used in canonical HTML paths.",
        "nullable": false
      },
      "canonical_url": {
        "type": "string",
        "description": "Human citation URL. Prefer this when quoting tld.reviews.",
        "nullable": false
      },
      "last_verified_at": {
        "type": "string",
        "format": "date-time",
        "description": "Timestamp of the newest verified claim or identity update.",
        "nullable": true
      },
      "dnssec_supported": {
        "type": "boolean",
        "description": "Whether the registrar documents DNSSEC support for domains it sells.",
        "nullable": true
      },
      "whois_privacy_included": {
        "type": "boolean",
        "description": "Whether WHOIS/RDAP privacy is included in the standard registration price for most TLDs.",
        "nullable": true
      },
      "api_available": {
        "type": "boolean",
        "description": "Whether the registrar documents a customer or reseller API.",
        "nullable": true
      },
      "domain_renewal_price": {
        "type": "number",
        "currency_field": "currency",
        "description": "Standard non-promotional price charged for a one-year renewal of the domain registration.",
        "nullable": true,
        "source": "price_observation where price_type=renewal and promotion=false"
      },
      "domain_registration_price": {
        "type": "number",
        "currency_field": "currency",
        "description": "Standard non-promotional first-year registration price for a one-year term.",
        "nullable": true,
        "source": "price_observation where price_type=registration and promotion=false"
      },
      "domain_transfer_price": {
        "type": "number",
        "currency_field": "currency",
        "description": "Standard non-promotional inbound transfer price for a one-year term.",
        "nullable": true,
        "source": "price_observation where price_type=transfer and promotion=false"
      },
      "price_type": {
        "type": "string",
        "enum": [
          "registration",
          "renewal",
          "transfer",
          "redemption",
          "restore"
        ],
        "description": "Which lifecycle event the price observation applies to.",
        "nullable": false
      },
      "amount": {
        "type": "number",
        "currency_field": "currency",
        "description": "Numeric price amount in the observation currency.",
        "nullable": false
      },
      "currency": {
        "type": "string",
        "description": "ISO 4217 currency code for amount fields. USD unless otherwise stated.",
        "nullable": false
      },
      "observed_at": {
        "type": "string",
        "format": "date",
        "description": "Date the price or claim was observed. Historical, not a guarantee of current checkout.",
        "nullable": true
      },
      "promotion": {
        "type": "boolean",
        "description": "True when the observation is a temporary coupon, intro, or new-customer deal.",
        "nullable": false
      },
      "predicate": {
        "type": "string",
        "description": "Claim relation, such as dnssec_supported or domain_renewal_price.",
        "nullable": false
      },
      "knowledge_kind": {
        "type": "string",
        "enum": [
          "fact",
          "opinion",
          "computed"
        ],
        "description": "Fact is sourced; opinion is a review; computed is derived from other records.",
        "nullable": false
      }
    }
  }
}