schemas/pricing.schema.json

pricing.schema.json

JSON Schema for the tld_pricing dataset. Versioned alongside the data.

Download pricing.schema.jsonView dataset

Overview#overview

namepricing
version2026.06
fields9
used_bytld_pricing
draft2020-12
licenseCC-BY-4.0

Field definitions#fields

FieldTypeRequiredDescription
registrar_idstringrequiredForeign key to registrars.id.
tldstringrequiredTop-level domain (without leading dot).
register_usdnumberoptionalFirst-year register price in USD.
renew_usdnumberoptionalAnnual renewal price in USD.
transfer_usdnumberoptionalTransfer-in price in USD.
promotionalbooleanoptionalWhether register_usd is a promotional price.
sourcesarray · enumrequiredProvenance.
verification_statusenumrequiredSee verification statuses.
last_checkedstring · date-timerequiredISO 8601 timestamp.

JSON Schema#preview

{
  "$id": "https://opendomaindata.org/schemas/pricing.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "TldPricing",
  "description": "Normalized TLD pricing per registrar.",
  "version": "2026.06",
  "type": "object",
  "required": ["registrar_id", "tld", "sources", "verification_status", "last_checked"],
  "properties": {
    "registrar_id": { "type": "string" },
    "tld": { "type": "string", "pattern": "^[a-z0-9-]+$" },
    "register_usd": { "type": ["number", "null"], "minimum": 0 },
    "renew_usd": { "type": ["number", "null"], "minimum": 0 },
    "transfer_usd": { "type": ["number", "null"], "minimum": 0 },
    "promotional": { "type": "boolean" },
    "sources": {
      "type": "array",
      "items": { "type": "string", "enum": ["iana", "rdap", "registrar_docs", "submission"] }
    },
    "verification_status": {
      "type": "string",
      "enum": [
        "unknown",
        "public_sources",
        "independently_tested",
        "registrar_submitted",
        "registrar_verified",
        "deprecated"
      ]
    },
    "last_checked": { "type": "string", "format": "date-time" }
  },
  "additionalProperties": false
}

Validation example#validation

Validate a record locally using any JSON Schema validator. The schema is draft 2020-12; for ajv use the 2020 import.

import Ajv from "ajv/dist/2020";
import schema from "https://opendomaindata.org/schemas/pricing.schema.json" assert { type: "json" };

const ajv = new Ajv();
const validate = ajv.compile(schema);
const ok = validate(record);
if (!ok) console.error(validate.errors);

Changelog#changelog

Schema changes are recorded in the project changelog and follow the dataset release tag.