---
title: "Domain Authority reference"
url: "https://lookvalid.com/docs/api/domain-authority.md"
canonical_url: "https://lookvalid.com/docs/api/domain-authority"
last_updated: "2026-10-22"
type: "reference"
summary: "Request and response reference for Domain Authority: parameters, response fields, credit cost and error codes."
related: ["https://lookvalid.com/docs/errors.md"]
---

# Domain Authority reference

Request and response reference for Domain Authority: parameters, response fields, credit cost and error codes.

A 0 to 100 authority score for a domain, with every input shown: its Common Crawl web graph harmonic centrality and PageRank positions and its Majestic Million rank and referring subnets. Only domains inside the top of the open rank lists are scored; an unranked domain is not proof of low authority. It is a link-graph score, not Moz or Semrush authority.

```http
POST https://YOUR_API_HOST/v1/domain-authority
```

## Credits and caching

- Success billing. 10 credits per domain found in the rank data (an unranked domain is free). You are charged only when the lookup finds something; a not-found result is free.
- Results are cached per account for 7 days. Repeating the same lookup in that window is free and returns `cache_hit: true`.
- Invalid input, rate limits and errors are never charged.
- Read the [billing rules](https://lookvalid.com/docs/credits-and-billing.md) for the full picture.

## Request

Send a JSON body with `Authorization: Bearer <key>`. The body can be up to 64 KB.

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `domain` | string | yes | Up to 253 characters. |

### Example request

**cURL**

```sh
curl -X POST https://YOUR_API_HOST/v1/domain-authority \
  -H "Authorization: Bearer $LOOKVALID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"wikipedia.org"}'
```

**Node.js**

```js
const response = await fetch("https://YOUR_API_HOST/v1/domain-authority", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LOOKVALID_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "domain": "wikipedia.org"
  }),
});

const result = await response.json();
if (!response.ok) throw new Error(`${result.error.code}: ${result.error.fix}`);
console.log(result.found, result.data, result.credits_charged);
```

**Python**

```python
import os
import requests

response = requests.post(
    "https://YOUR_API_HOST/v1/domain-authority",
    headers={"Authorization": f"Bearer {os.environ['LOOKVALID_API_KEY']}"},
    json={
        "domain": "wikipedia.org",
    },
    timeout=30,
)
result = response.json()
if not response.ok:
    raise RuntimeError(f"{result['error']['code']}: {result['error']['fix']}")
print(result["found"], result["data"], result["credits_charged"])
```

## Response

The status is 200 whether or not anything was found. Check `found`. Every response also carries the `X-Request-Id`, `X-Credits-Charged`, `X-Credits-Remaining` and `X-RateLimit-*` headers.

### Envelope

| Field | Type | Notes |
| --- | --- | --- |
| `request_id` | string | - |
| `product` | "domain-authority" | - |
| `found` | boolean | False means the lookup ran and found nothing; it is free. |
| `reason` | string or null | Why nothing was found; null when found. |
| `sources` | array of string | Where the data came from, including any attribution the licence requires. |
| `credits_charged` | integer | 0 for a cache hit, a not-found result or an error. |
| `credits_remaining` | integer | - |
| `cache_hit` | boolean | True when the account already paid for this lookup within the cache window. |
| `cache` | object | - |

### The `data` object

Present when `found` is true, otherwise `null`.

| Field | Type | Notes |
| --- | --- | --- |
| `domain` | string | - |
| `matched_domain` | string | The domain the ranks belong to; a parent of the input when the input is a subdomain |
| `authority_score` | integer | Minimum 0. Maximum 100. |
| `signals` | object | - |
| `signals.common_crawl` | object | - |
| `signals.common_crawl.in_index` | boolean | - |
| `signals.common_crawl.release` | string or null | - |
| `signals.common_crawl.harmonic_position` | integer or null | - |
| `signals.common_crawl.harmonic_value` | number or null | - |
| `signals.common_crawl.pagerank_position` | integer or null | - |
| `signals.common_crawl.pagerank_value` | number or null | - |
| `signals.common_crawl.hosts_in_domain` | integer or null | - |
| `signals.common_crawl.domains_in_release` | integer or null | - |
| `signals.common_crawl.harmonic_signal` | number | - |
| `signals.common_crawl.pagerank_signal` | number | - |
| `signals.majestic` | object | - |
| `signals.majestic.in_index` | boolean | - |
| `signals.majestic.rank` | integer or null | - |
| `signals.majestic.referring_subnets` | integer or null | - |
| `signals.majestic.referring_ips` | integer or null | - |
| `signals.majestic.list_size` | integer or null | - |
| `signals.majestic.signal` | number | - |
| `formula` | string | - |
| `weights` | object | - |
| `weights.common_crawl_harmonic` | number | - |
| `weights.common_crawl_pagerank` | number | - |
| `weights.majestic` | number | - |
| `notes` | string | - |

### Captured example (2026-10-18)

A real run of this lookup on 2026-10-18, using the request above, which is a public input. The envelope fields are left out.

```json
{
  "product": "domain-authority",
  "found": true,
  "data": {
    "domain": "wikipedia.org",
    "matched_domain": "wikipedia.org",
    "authority_score": 83,
    "signals": {
      "common_crawl": {
        "in_index": true,
        "release": "cc-main-2026-jul-aug-sep",
        "harmonic_position": 14,
        "harmonic_value": 21064202,
        "pagerank_position": 35,
        "pagerank_value": 0.0008494547219015658,
        "hosts_in_domain": 2050,
        "domains_in_release": 133241980,
        "harmonic_signal": 85.9,
        "pagerank_signal": 81
      },
      "majestic": {
        "in_index": true,
        "rank": 12,
        "referring_subnets": 227466,
        "referring_ips": 698536,
        "list_size": 1000000,
        "signal": 82
      }
    },
    "formula": "authority_score = round(0.4 * harmonic + 0.2 * pagerank + 0.4 * majestic). Each signal = 100 * (1 - log10(position) / log10(list size)), so position 1 is 100 and the last position of the full list is 0. A list that does not hold the domain contributes 0. harmonic and pagerank are the Common Crawl web graph positions among all domains in the release; majestic is the Majestic Million global rank.",
    "weights": {
      "common_crawl_harmonic": 0.4,
      "common_crawl_pagerank": 0.2,
      "majestic": 0.4
    },
    "notes": "Scores come from open link-graph and popularity lists, not from Moz or Semrush, so they will not match those tools. Only the best-ranked domains of each list are indexed; a domain that is not found is not proof of low authority."
  },
  "sources": [
    "Common Crawl Web Graph (commoncrawl.org)",
    "Majestic Million (majestic.com/reports/majestic-million), licensed CC BY 3.0"
  ]
}
```

## Errors

- `400` [`invalid_input`](https://lookvalid.com/docs/errors.md#invalid_input): The request input is invalid.
- `401` [`unauthorized`](https://lookvalid.com/docs/errors.md#unauthorized): The API key is missing, malformed, revoked or unknown.
- `402` [`insufficient_credits`](https://lookvalid.com/docs/errors.md#insufficient_credits): The account does not have enough credits for this lookup. Error code: insufficient_credits. During a trial whose allowance is used up the code is trial_allowance_exhausted: nothing is charged and the customer starts the plan from the billing page.
- `405` [`method_not_allowed`](https://lookvalid.com/docs/errors.md#method_not_allowed): This endpoint does not accept that HTTP method.
- `413` [`payload_too_large`](https://lookvalid.com/docs/errors.md#payload_too_large): The request body is too large.
- `429` [`rate_limited`](https://lookvalid.com/docs/errors.md#rate_limited): Too many requests for this API key.
- `500` [`internal_error`](https://lookvalid.com/docs/errors.md#internal_error): An unexpected error occurred.
- `503` [`provider_unavailable`](https://lookvalid.com/docs/errors.md#provider_unavailable): The data source for this product is unavailable right now.

## Related

- [Errors](https://lookvalid.com/docs/errors.md)
