# Suggest Domains

> Alternatives close to a domain that is taken.

Requires an API key with the `read` scope.

## Query Parameters

<ParamField query="domain" type="string" required>
  The domain you wanted. Up to 253 characters.
</ParamField>

<ParamField query="exclude" type="string">
  Comma-separated domains to leave out. The domain you asked about is always left out. Up to 4,000 characters.
</ParamField>

<ParamField query="limit" type="integer" default="8">
  How many suggestions to return, 1 to 20.
</ParamField>

## Response

<ResponseField name="data" type="object">
  Suggestions.

  <Expandable title="data">
    <ResponseField name="domain" type="string">The domain you asked about, lowercased.</ResponseField>
    <ResponseField name="items" type="array">
      Related domains that can be registered.

      <Expandable title="items">
        <ResponseField name="domain" type="string">Full domain.</ResponseField>
        <ResponseField name="priceCents" type="integer">Registration price in US cents.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
```bash cURL
curl -X GET "https://api.foxreach.io/api/v1/managed-inboxes/domains/suggest?domain=yourbrand.com&limit=5" \
  -H "X-API-Key: otr_your_key"
```

```python Python SDK (beta)
from foxreach import FoxReach

client = FoxReach(api_key="otr_your_key")
suggestions = client.managed_inboxes.suggest_domains("yourbrand.com", limit=5)
```

```typescript TypeScript SDK (beta)
import { FoxReach } from "foxreach";

const client = new FoxReach({ apiKey: "otr_your_key" });
const suggestions = await client.managedInboxes.suggestDomains("yourbrand.com", undefined, 5);
```
</RequestExample>

<ResponseExample>
```json
{
  "data": {
    "domain": "yourbrand.com",
    "items": [
      { "domain": "yourbrand-mail.com", "priceCents": 1400 },
      { "domain": "getyourbrand.com", "priceCents": 1400 }
    ]
  }
}
```
</ResponseExample>

## Errors

| Status | Description |
|--------|-------------|
| `401` | Missing, invalid, revoked or expired API key |
| `403` | API key does not have the required scope: `read` |
| `400` | `Enter a domain like yourbrand-mail.com` when the value is not a valid domain |
| `404` | Not found while managed mailboxes are switched off on this environment (`{"detail": "Not found"}`) |
| `422` | `domain` is missing or `limit` is outside 1-20 |
| `502` | `Suggestions are unavailable right now. Try again in a minute.` when the registrar lookup fails |

## Rate Limit

- **100 requests per minute, per API key.** Fixed 60-second window.
- Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` (unix epoch seconds).
- A `429` response includes a `Retry-After` header (seconds until the bucket resets).

For client-side patterns (`Retry-After`, exponential backoff, monitoring `X-RateLimit-Remaining`), see [Rate Limiting](/rate-limiting).
