Namegarage

API reference

Read the public domain catalog and search for names. No account or API key is needed.

API quickstart · Changelog · Download OpenAPI JSON · Connect an AI assistant

Namegarage public domain catalog (1.3.0)

Anonymous read-only catalog and search. No account, API key, bearer token, or browser cookie is required.

Servers
https://namegarage.com

Endpoint details

Catalog

Read the deployed domain catalog snapshot.

GET /domains.json

List public domains for sale

Responses

200 — Public sales catalog

application/json

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "base_url": {
      "type": "string"
    },
    "brand": {
      "type": "string"
    },
    "count": {
      "minimum": 0,
      "type": "integer"
    },
    "domains": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "buy_now": {
            "type": [
              "integer",
              "null"
            ]
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "deal": {
            "additionalProperties": false,
            "description": "A current or scheduled weekly offer. Its price applies only while starts \u003c= now \u003c ends; otherwise use buy_now.",
            "properties": {
              "ends": {
                "format": "date-time",
                "type": "string"
              },
              "price": {
                "type": "integer"
              },
              "starts": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "price",
              "starts",
              "ends"
            ],
            "type": "object"
          },
          "display": {
            "type": "string"
          },
          "low": {
            "type": [
              "integer",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "promotion": {
            "additionalProperties": false,
            "properties": {
              "ends": {
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "enum": [
                  "regular",
                  "weekly",
                  "price_drop"
                ]
              },
              "minimum": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "next": {
                "additionalProperties": false,
                "properties": {
                  "price": {
                    "type": "integer"
                  },
                  "starts": {
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "starts",
                  "price"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "price": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "version": {
                "pattern": "^[a-f0-9]{64}$",
                "type": "string"
              }
            },
            "required": [
              "price",
              "kind",
              "minimum",
              "ends",
              "next",
              "version"
            ],
            "type": "object"
          },
          "regular_price": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sld": {
            "type": "string"
          },
          "tier": {
            "enum": [
              "",
              "Platinum",
              "Gold",
              "Silver",
              "Bronze",
              "Bargain"
            ],
            "type": "string"
          },
          "tld": {
            "type": "string"
          },
          "visits": {
            "type": "integer"
          },
          "visits_through": {
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "name",
          "sld",
          "tld",
          "path",
          "tier",
          "buy_now",
          "categories",
          "low"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "priced_at": {
      "type": "integer"
    },
    "traffic_max_stale_days": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "brand",
    "base_url",
    "count",
    "traffic_max_stale_days",
    "domains"
  ],
  "type": "object"
}

GET /api/domain

Look up a published domain

Parameters

name required
Complete domain name, including its suffix; no URL or path.
{
  "description": "Complete domain name, including its suffix; no URL or path.",
  "maxLength": 200,
  "minLength": 3,
  "type": "string"
}

Responses

200 — Public catalog operation result; missing lookup names use found:false

application/json

{
  "additionalProperties": false,
  "properties": {
    "domain": {
      "oneOf": [
        {
          "additionalProperties": false,
          "properties": {
            "description": {
              "type": "string"
            },
            "display": {
              "type": "string"
            },
            "fits": {
              "description": "The published use case or description this name matched; null when the match was by spelling only or the name\u0027s copy is withheld.",
              "type": [
                "string",
                "null"
              ]
            },
            "match": {
              "description": "exact: the query is the whole name or its first label; keyword: a match by spelling; meaning: a match by what the name is for.",
              "enum": [
                "exact",
                "keyword",
                "meaning"
              ]
            },
            "name": {
              "type": "string"
            },
            "price_usd": {
              "description": "Current price in whole USD, a running deal included; null for an offer-only name, which has no fixed price (make an offer on its page).",
              "type": [
                "integer",
                "null"
              ]
            },
            "regular_price_usd": {
              "description": "The usual price, present only while a discount is running.",
              "type": "integer"
            },
            "tier": {
              "type": [
                "string",
                "null"
              ]
            },
            "url": {
              "type": "string"
            },
            "use_cases": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "required": [
            "name",
            "url",
            "tier",
            "price_usd",
            "match",
            "fits"
          ],
          "type": "object"
        },
        {
          "type": "null"
        }
      ]
    },
    "found": {
      "type": "boolean"
    },
    "name": {
      "type": "string"
    },
    "priced_at": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "name",
    "priced_at",
    "found",
    "domain"
  ],
  "type": "object"
}
400 — Invalid, unknown or duplicate query parameters
404 — Not this origin or path
429 — Busy; retry after the Retry-After header
503 — Prices cannot be verified right now ("prices_unverified") or search is unavailable; retry after the Retry-After header
405 — Only GET is supported

GET /api/purchase-options

Compare outright and lease-to-own options

Parameters

name required
Complete domain name, including its suffix; no URL or path.
{
  "description": "Complete domain name, including its suffix; no URL or path.",
  "maxLength": 200,
  "minLength": 3,
  "type": "string"
}

Responses

200 — Public catalog operation result; missing lookup names use found:false

application/json

{
  "additionalProperties": false,
  "properties": {
    "domain": {
      "oneOf": [
        {
          "additionalProperties": false,
          "properties": {
            "display": {
              "type": "string"
            },
            "fits": {
              "description": "The published use case or description this name matched; null when the match was by spelling only or the name\u0027s copy is withheld.",
              "type": [
                "string",
                "null"
              ]
            },
            "match": {
              "description": "exact: the query is the whole name or its first label; keyword: a match by spelling; meaning: a match by what the name is for.",
              "enum": [
                "exact",
                "keyword",
                "meaning"
              ]
            },
            "name": {
              "type": "string"
            },
            "price_usd": {
              "description": "Current price in whole USD, a running deal included; null for an offer-only name, which has no fixed price (make an offer on its page).",
              "type": [
                "integer",
                "null"
              ]
            },
            "purchase_options": {
              "additionalProperties": false,
              "properties": {
                "buy_outright": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "total_usd": {
                          "minimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "total_usd"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "currency": {
                  "const": "USD"
                },
                "lease_base_price_usd": {
                  "minimum": 1,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "lease_to_own": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "down_payment_usd": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "extra_cost_vs_buy_outright_usd": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "final_payment_usd": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "first_payment_usd": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "monthly_payment_usd": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "months": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "total_usd": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "months",
                      "down_payment_usd",
                      "first_payment_usd",
                      "monthly_payment_usd",
                      "final_payment_usd",
                      "total_usd",
                      "extra_cost_vs_buy_outright_usd"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "currency",
                "buy_outright",
                "lease_base_price_usd",
                "lease_to_own"
              ],
              "type": "object"
            },
            "regular_price_usd": {
              "description": "The usual price, present only while a discount is running.",
              "type": "integer"
            },
            "tier": {
              "type": [
                "string",
                "null"
              ]
            },
            "url": {
              "type": "string"
            }
          },
          "required": [
            "name",
            "url",
            "tier",
            "price_usd",
            "match",
            "fits",
            "purchase_options"
          ],
          "type": "object"
        },
        {
          "type": "null"
        }
      ]
    },
    "found": {
      "type": "boolean"
    },
    "name": {
      "type": "string"
    },
    "priced_at": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "name",
    "priced_at",
    "found",
    "domain"
  ],
  "type": "object"
}
400 — Invalid, unknown or duplicate query parameters
404 — Not this origin or path
429 — Busy; retry after the Retry-After header
503 — Prices cannot be verified right now ("prices_unverified") or search is unavailable; retry after the Retry-After header
405 — Only GET is supported

Search

Find domains by keyword or by meaning, with optional filters.

Search the public domains by keyword or by meaning

Parameters

q required
A domain, keyword, or description of the project the name should fit.
{
  "maxLength": 200,
  "minLength": 2,
  "type": "string"
}
max_price
Maximum current price in whole USD.
{
  "minimum": 1,
  "type": "integer"
}
tier
Limit matches to this pricing tier.
{
  "enum": [
    "Bargain",
    "Bronze",
    "Silver",
    "Gold",
    "Platinum"
  ]
}
tld
How the name ends: a TLD (com) or a longer suffix (co.uk), in ASCII (xn--p1ai) or Unicode; a leading dot is ignored.
{
  "type": "string"
}
max_length
Maximum name length.
{
  "maximum": 63,
  "minimum": 1,
  "type": "integer"
}
limit
Maximum number of matches to return.
{
  "default": 20,
  "maximum": 50,
  "minimum": 1,
  "type": "integer"
}

Responses

200 — Ranked matches with current prices

application/json

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "count": {
      "minimum": 0,
      "type": "integer"
    },
    "meaning": {
      "enum": [
        "available",
        "unavailable"
      ]
    },
    "priced_at": {
      "type": "integer"
    },
    "query": {
      "type": "string"
    },
    "results": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "type": "string"
          },
          "fits": {
            "description": "The published use case or description this name matched; null when the match was by spelling only or the name\u0027s copy is withheld.",
            "type": [
              "string",
              "null"
            ]
          },
          "match": {
            "description": "exact: the query is the whole name or its first label; keyword: a match by spelling; meaning: a match by what the name is for.",
            "enum": [
              "exact",
              "keyword",
              "meaning"
            ]
          },
          "name": {
            "type": "string"
          },
          "price_usd": {
            "description": "Current price in whole USD, a running deal included; null for an offer-only name, which has no fixed price (make an offer on its page).",
            "type": [
              "integer",
              "null"
            ]
          },
          "regular_price_usd": {
            "description": "The usual price, present only while a discount is running.",
            "type": "integer"
          },
          "tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "url",
          "tier",
          "price_usd",
          "match",
          "fits"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "query",
    "priced_at",
    "meaning",
    "count",
    "results"
  ],
  "type": "object"
}
400 — A parameter is invalid: {"error": "invalid_parameter", "parameter": <name>}
404 — Not this origin or path
429 — Busy; retry after the Retry-After header
503 — Prices cannot be verified right now ("prices_unverified") or search is unavailable; retry after the Retry-After header

GET /api/alternatives

Find published alternatives

Parameters

name required
Complete reference domain name, including its suffix; no URL or path. It need not be in our catalog.
{
  "description": "Complete reference domain name, including its suffix; no URL or path. It need not be in our catalog.",
  "maxLength": 200,
  "minLength": 3,
  "type": "string"
}
query
Optional project description or keywords to rank alternatives instead of the reference name’s first label.
{
  "description": "Optional project description or keywords to rank alternatives instead of the reference name\u2019s first label.",
  "maxLength": 200,
  "minLength": 2,
  "type": "string"
}
max_price
Maximum whole USD cash price; excludes offer-only names.
{
  "description": "Maximum whole USD cash price; excludes offer-only names.",
  "maximum": 9007199254740991,
  "minimum": 1,
  "type": "integer"
}
limit
limit
{
  "default": 5,
  "maximum": 50,
  "minimum": 1,
  "type": "integer"
}

Responses

200 — Public catalog operation result; missing lookup names use found:false

application/json

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "count": {
      "minimum": 0,
      "type": "integer"
    },
    "meaning": {
      "enum": [
        "available",
        "unavailable"
      ]
    },
    "name": {
      "type": "string"
    },
    "priced_at": {
      "type": "integer"
    },
    "query": {
      "type": "string"
    },
    "results": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "display": {
            "type": "string"
          },
          "fits": {
            "description": "The published use case or description this name matched; null when the match was by spelling only or the name\u0027s copy is withheld.",
            "type": [
              "string",
              "null"
            ]
          },
          "match": {
            "description": "exact: the query is the whole name or its first label; keyword: a match by spelling; meaning: a match by what the name is for.",
            "enum": [
              "exact",
              "keyword",
              "meaning"
            ]
          },
          "name": {
            "type": "string"
          },
          "price_usd": {
            "description": "Current price in whole USD, a running deal included; null for an offer-only name, which has no fixed price (make an offer on its page).",
            "type": [
              "integer",
              "null"
            ]
          },
          "regular_price_usd": {
            "description": "The usual price, present only while a discount is running.",
            "type": "integer"
          },
          "tier": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "url",
          "tier",
          "price_usd",
          "match",
          "fits"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "query",
    "priced_at",
    "meaning",
    "count",
    "results",
    "name"
  ],
  "type": "object"
}
400 — Invalid, unknown or duplicate query parameters
404 — Not this origin or path
429 — Busy; retry after the Retry-After header
503 — Prices cannot be verified right now ("prices_unverified") or search is unavailable; retry after the Retry-After header
405 — Only GET is supported