# Domain Authority Checker: Bulk Rank, Backlinks & Spam Score (`plainrows/domain-authority-checker`) Actor

Check domain authority for up to 10,000 domains per run: domain rank (0-100), spam score, backlinks, referring domains and nofollow counts in one row per domain. A Moz DA and Ahrefs Domain Rating (DR) alternative, no subscription, results in seconds. Pay per domain with data plus small lookup fees.

- **URL**: https://apify.com/plainrows/domain-authority-checker.md
- **Developed by:** [PlainRows](https://apify.com/plainrows) (community)
- **Categories:** SEO tools, Marketing, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 domains

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Domain Authority Checker: Bulk Rank, Backlinks & Spam Score

Check the **domain authority** of up to **10,000 domains per run**: domain rank (0-100), spam score, backlinks count, referring domains and nofollow counts, one clean row per domain. A fast bulk DA checker and backlink checker for link building, SEO audits and domain research.

It reads a commercial backlink index through an API instead of scraping Moz or Ahrefs pages: **results in seconds, no login, no captchas, no blocked runs.** **You pay per domain with data, plus small lookup fees**: duplicates and input mistakes are free, and unknown domains are free until October 25, 2026 (then $0.0002 each).

### Typical uses

- **Link building and outreach**: sort a prospect list by authority and drop spammy sites before you pitch them.
- **Guest post and PR vetting**: check the referring domains and spam score of sites selling links or placements.
- **Expired domain and domain investing research**: screen thousands of domains in one run.
- **Competitor and market mapping**: compare the backlink strength of every site in a niche.
- **Automations and AI agents**: enrich a Google Sheet, CRM or agent workflow with authority metrics.

### What you get for each domain

| Field | Description |
|---|---|
| `domain`, `input` | The domain checked (lowercase, without `https://`, path or `www.`) and the value you entered |
| `domainRank` | DataForSEO domain rank on a 0-100 scale, computed from the domain's backlink profile |
| `spamScore` | DataForSEO spam score, 0-100 (higher = more spam signals in the link profile) |
| `backlinks` | Number of live backlinks pointing to the domain |
| `referringDomains`, `referringDomainsNofollow` | Domains linking to it, and how many of them link with nofollow |
| `referringMainDomains`, `referringMainDomainsNofollow` | Same, with subdomains grouped under their main domain |
| `found` | `false` when the index has no data for the domain (free row, all metrics empty or 0; from October 25, 2026 only the domain lookup fee applies) |
| `observedAt` | When the data was retrieved (UTC) |

**About "domain authority":** `domainRank` is DataForSEO's own rank, built in the same spirit as Moz Domain Authority (DA) or Ahrefs Domain Rating (DR), but it is a **different metric**: values will not match Moz DA or Ahrefs DR exactly. Use it to compare and sort domains, not to quote a Moz or Ahrefs score.

Missing values are `null`, never guessed. A metric group you turned off is `null` too.

### Input

```json
{
  "domains": ["apify.com", "https://www.forbes.com/sites/", "blog.hubspot.com"],
  "includeSpamScore": true,
  "includeBacklinks": true,
  "includeReferringDomains": true
}
```

- **domains**: up to 10,000 per run. Domains, subdomains or full URLs (reduced to the host, `www.` removed). Duplicates are removed; invalid lines are listed in the run summary.
- Domains are checked in **batches of 1,000**.
- **Metric groups**: domain rank is always included. `includeSpamScore`, `includeBacklinks` and `includeReferringDomains` (all on by default) can be turned off to lower the batch fees (see Pricing).
- In each batch, the free `found: false` rows are stored first, then the rows with data.

### Output example

Real row from a run on 2026-10-07 (input `https://www.semrush.com/blog/`):

```json
{
  "domain": "semrush.com",
  "input": "https://www.semrush.com/blog/",
  "found": true,
  "domainRank": 82,
  "spamScore": 9,
  "backlinks": 20567322,
  "referringDomains": 136233,
  "referringDomainsNofollow": 25209,
  "referringMainDomains": 125776,
  "referringMainDomainsNofollow": 20857,
  "observedAt": "2026-10-07T13:14:19.787Z",
  "schemaVersion": "1.0"
}
```

### Pricing

Pay per use, no subscription. See the **Pricing** tab for current prices. Two events (three from October 25, 2026):

- **Domain with data** (`domain-result`): one per domain returned with data.
- **Batch lookup** (`batch-lookup`): one per metric group for each batch of up to 1,000 domains. The data source charges a fixed fee per request, so this fee is shown openly instead of being hidden in the per-domain price. With all four metric groups, a run of 1 to 1,000 domains has 4 batch lookups, 1,001 to 2,000 domains has 8, and so on.
- **Domain lookup** (`domain-lookup`, from October 25, 2026): $0.0002 per domain sent to the backlink index, with or without data.

Price change on October 25, 2026: batch lookup $0.04 (FREE) / $0.037 (BRONZE) / $0.035 (GOLD+); new domain lookup $0.0002 per domain; domain with data unchanged.

The more domains per run, the cheaper each domain: on large lists the batch fee is spread over up to 1,000 domains. For a handful of domains, turn off the metric groups you do not need.

Duplicates and input mistakes are not billed; domains with no data are not billed until October 25, 2026, then only pay the domain lookup fee. The run checks the batch fees and rows against the maximum cost you set before each request, and never spends more.

**Free Apify plan:** up to 50 domains per run, so you can check the output. A paid Apify plan removes this limit.

### Use it from code, automations or AI agents

**API (one call, results returned directly):**

```bash
curl -X POST "https://api.apify.com/v2/acts/plainrows~domain-authority-checker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["apify.com", "forbes.com", "bbc.co.uk"]}'
```

**n8n, Make, Zapier:** use the Apify integration, pick `plainrows/domain-authority-checker`, and map the dataset items to Google Sheets, Airtable, HubSpot or your database.

**AI agents (MCP):** add `https://mcp.apify.com?tools=plainrows/domain-authority-checker` to Claude, Cursor or any MCP client. The agent gets a typed tool and pays per result.

### What this is not

- **Not Moz DA, Ahrefs DR or Semrush Authority Score.** It is DataForSEO's domain rank and spam score, from DataForSEO's own backlink index. Not affiliated with Moz, Ahrefs, Semrush or Google.
- No list of individual backlinks or anchors: it returns totals per domain.
- No traffic or keyword data.
- Page-level (URL) authority is not supported: every input is reduced to its domain.

### Run summary

Each run stores a summary in the key-value store (`OUTPUT`): domains submitted and checked, domains with and without data, batch lookups charged, duplicates and invalid inputs, and anything skipped because of the free-plan or budget limit.

### FAQ

**How do I check the domain authority of many websites at once?**
Paste up to 10,000 domains or URLs, one per line, and run: one row per domain with domain rank (0-100), spam score, backlinks and referring domains.

**Is this Moz DA or Ahrefs DR?**
No. It is DataForSEO's domain rank and spam score, from its own backlink index, on a 0-100 scale. Values will not match Moz DA or Ahrefs DR; use them to compare and sort domains.

**Can I lower the price for a large list?**
Yes: turn off the metric groups you do not need (`includeSpamScore`, `includeBacklinks`, `includeReferringDomains`) to save their batch fees. Domain rank is always included.

**Does it check the authority of a single page?**
No: every input is reduced to its domain. For links to a specific page, use [Backlink Checker](https://apify.com/plainrows/backlink-checker).

**Do I need an Ahrefs, Moz or Semrush account?**
No: you pay per domain with data, with no subscription.

### More PlainRows tools

Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.

- **SEO and keywords:** [Keyword Search Volume, CPC & Difficulty](https://apify.com/plainrows/keyword-search-volume) · [Keyword Ideas Generator](https://apify.com/plainrows/keyword-ideas-generator) · [Google Autocomplete & People Also Ask](https://apify.com/plainrows/google-autocomplete-questions) · [Google Trends Explorer](https://apify.com/plainrows/google-trends-explorer) · [Website Organic Traffic & Top Keywords](https://apify.com/plainrows/domain-seo-overview) · [Backlink Checker](https://apify.com/plainrows/backlink-checker) · [Broken Link Checker](https://apify.com/plainrows/broken-link-checker) · [AI Search Visibility Tracker (ChatGPT, Gemini, AI Mode)](https://apify.com/plainrows/ai-search-brand-visibility) · [Google Maps Rank Tracker (Geo-Grid Local SEO)](https://apify.com/plainrows/google-maps-rank-tracker)
- **Leads and companies:** [Google Maps Scraper](https://apify.com/plainrows/google-maps-businesses) · [Website Technology Checker](https://apify.com/plainrows/website-tech-stack) · [ATS Jobs Scraper (Workday, Greenhouse, Lever, Ashby)](https://apify.com/plainrows/ats-job-postings) · [Google Jobs Scraper](https://apify.com/plainrows/google-jobs-scraper) · [Google Ads Scraper (Transparency Center)](https://apify.com/plainrows/google-ads-transparency) · [Company Registry Lookup (SIRENE, LEI, Brreg)](https://apify.com/plainrows/company-registry-lookup) · [Public Tenders Search (EU TED & UK)](https://apify.com/plainrows/public-tenders-search)
- **E-commerce and travel:** [Amazon Product Search Scraper](https://apify.com/plainrows/amazon-product-search) · [Google Shopping Prices Scraper](https://apify.com/plainrows/google-shopping-prices) · [Google Hotels Prices Scraper](https://apify.com/plainrows/google-hotels-prices) · [Tripadvisor Reviews Scraper](https://apify.com/plainrows/tripadvisor-reviews)
- **Content and media:** [Google News Scraper](https://apify.com/plainrows/google-news-scraper) · [YouTube Search Scraper](https://apify.com/plainrows/youtube-search-scraper) · [YouTube Comments Scraper](https://apify.com/plainrows/youtube-comments-scraper) · [Google Images Scraper](https://apify.com/plainrows/google-images-scraper) · [Website Screenshot API](https://apify.com/plainrows/website-screenshot) · [Google Maps Reviews Scraper](https://apify.com/plainrows/google-maps-reviews) · [App Store & Google Play Reviews Scraper](https://apify.com/plainrows/app-reviews-scraper)

**Compared with other APIs:** [Ahrefs API alternative](https://nadaho.github.io/plainrows/ahrefs-api-alternative/) · [Moz API alternative](https://nadaho.github.io/plainrows/moz-api-alternative/)

### Support

Missing a metric or found a bug? Open an issue on this page. Issues are read and answered.

# Actor input Schema

## `domains` (type: `array`):

Domains to check, one per line: "example.com", "blog.example.com" or a full URL (it is reduced to its domain; "www." is removed). Duplicates are removed. Up to 10,000 domains per run, checked in batches of 1,000.

## `includeSpamScore` (type: `boolean`):

Add the spam score (0-100). Each metric group adds one batch lookup per 1,000 domains; see Pricing.

## `includeBacklinks` (type: `boolean`):

Add the total number of live backlinks. Adds one batch lookup per 1,000 domains.

## `includeReferringDomains` (type: `boolean`):

Add referring domains, referring main domains and their nofollow counts. Adds one batch lookup per 1,000 domains.

## Actor input object example

```json
{
  "domains": [
    "apify.com",
    "forbes.com",
    "bbc.co.uk"
  ],
  "includeSpamScore": true,
  "includeBacklinks": true,
  "includeReferringDomains": true
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "domains": [
        "apify.com",
        "forbes.com",
        "bbc.co.uk"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("plainrows/domain-authority-checker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "domains": [
        "apify.com",
        "forbes.com",
        "bbc.co.uk",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("plainrows/domain-authority-checker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "domains": [
    "apify.com",
    "forbes.com",
    "bbc.co.uk"
  ]
}' |
apify call plainrows/domain-authority-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plainrows/domain-authority-checker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/BjPPrFFL7ILmaNUAV/builds/fXQU7jnheAgpxcJ1h/openapi.json
