---
title: Public API quickstart
description: Fetch the catalog and search for domains with curl or the official JavaScript
  and TypeScript SDK. No account or API key is required.
url: https://namegarage.com/docs/quickstart
---


# Public API quickstart

Find published domains with `curl` or the official JavaScript and TypeScript client.

## Authentication

These requests are anonymous. Do not add an `Authorization` header, API key, or browser cookie.

## 1. Read the catalog

```bash
curl --fail-with-body --silent --show-error 'https://namegarage.com/domains.json'
```

The response is JSON with `brand`, `count`, and a `domains` array.
For filtered results with current prices, use search instead of downloading the catalog repeatedly.

## 2. Search by project description

```bash
curl --fail-with-body --silent --show-error --get 'https://namegarage.com/api/search' \
  --data-urlencode 'q=meal-planning app' \
  --data-urlencode 'limit=3'
```

The JSON response has `query`, `priced_at`, `meaning`, `count`, and `results`.
Each result has `name`, `url`, `tier`, `price_usd`, `match`, and `fits`.
A query may return no matches. A null `price_usd` means offer-only, not zero.

Add `--data-urlencode 'max_price=5000'` to set a whole-USD budget.
You can also filter by `tier`, `tld`, or `max_length`. The maximum `limit` is 50.
The [OpenAPI reference](https://namegarage.com/openapi.json) describes every parameter.


## 3. Connect an MCP client

In a client that supports remote MCP, choose Streamable HTTP and no authentication.
Use this server URL:

```text
https://namegarage.com/api/mcp
```

Call `search_domains` with these arguments:

```json
{"query":"meal-planning app","limit":3}
```

To check one result, call `get_domain` with its complete `name`, including the suffix.
See [MCP connection instructions](https://namegarage.com/mcp/) for client guidance.


## Handle the response

Open a returned `url` to review the domain. Prices and availability can change.
Search and MCP do not reserve names or buy them.

If you receive 429 or 503, wait for `Retry-After` before retrying.
For HTTP 400, correct the parameter named in the error.
Do not retry form, account, or transaction endpoints as alternatives.

Read the [API documentation](https://namegarage.com/docs/) for limits and price semantics.

## JavaScript and TypeScript

Install the [official SDK](https://www.npmjs.com/package/@namegarage/sdk):

```bash
npm install @namegarage/sdk@0.1.0
```

```typescript
import { Namegarage } from '@namegarage/sdk';

const client = new Namegarage();
const matches = await client.searchDomains('meal-planning app', {
  maxPrice: 5000,
  limit: 3,
});

for (const domain of matches.results) {
  console.log(domain.name, domain.price_usd, domain.url);
}

const catalog = await client.getCatalog();
console.log(catalog.count);
```

Use Node.js 22 or later, or bundle the SDK for a modern browser. It supports ESM and CommonJS,
includes TypeScript declarations, and has no runtime dependencies. No credentials are required.
Options use `maxPrice` and `maxLength`; response fields keep their API names, including `price_usd`.

The client never retries automatically. HTTP failures throw `NamegarageApiError`, with `status`,
`code`, and `retryAfterSeconds`; honor the server's retry time. A null price still means offer-only.
See the [source and complete examples](https://github.com/namegarage/sdk) for cancellation,
timeouts, and error handling. The SDK only reads the public catalog and search API.
