# Ahrefs DR Checker & API: Bulk Domain Rating & Traffic (`s_actors/ahrefs-dr-checker`) Actor

Check Ahrefs Domain Rating (DR), referring domains, backlinks and organic traffic for thousands of domains at once: traffic value, keywords, top countries, top keywords, competitors, 12-month history. Tracks DR and traffic changes between runs. Works on the free Apify plan.

- **URL**: https://apify.com/s_actors/ahrefs-dr-checker.md
- **Developed by:** [Superior Actors](https://apify.com/s_actors) (community)
- **Categories:** SEO tools, Marketing, AI
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 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

### Ahrefs DR Checker & API: Bulk Domain Rating & Traffic

Check **Ahrefs Domain Rating (DR)** for **thousands of domains in one run**, together with **referring domains, backlinks, organic traffic, traffic value and keywords**. Every row also carries the month-over-month change, top countries, top keywords, competitors and a **12-month history**. Turn on the **tracker** to see **how DR, referring domains and traffic changed since the last run**.

```json
{ "domains": ["ahrefs.com", "apify.com", "zalando.de", "paulgraham.com"] }
```

No Ahrefs account, no API key, no captcha tokens, no browser setup on your side. **Works on the free Apify plan.** Use it as a bulk **Ahrefs DR and traffic checker**, an **Ahrefs API** alternative for link prospecting, lead scoring, competitor monitoring and SEO reports.

#### What you get

Real example, 16 October 2026:

| domain | DR | referring domains | backlinks | organic traffic | traffic value | keywords | source |
|---|---|---|---|---|---|---|---|
| ahrefs.com | 91 | 101,544 | | 3,028,432 | $5,300,727 | 135,500 | index |
| zalando.de | 78 | 10,221 | | 11,368,782 | $3,116,307 | 911,800 | index |
| apify.com | 81 (+1) | 11,427 (+465) | | 1,281,733 | $388,560 | 23,400 | index |
| paulgraham.com | 86 | 29,944 | 957,980 | 28,194 | $12,225 | | live |
| danluu.com | 75 | 7,479 | 1,154,828 | 916 | $386 | | live |

| Field | Description |
|---|---|
| `domain`, `input` | Checked domain (www. and paths removed) and what you entered |
| `domainRating`, `domainRatingChange` | Ahrefs DR (0-100) and its change over the last month |
| `referringDomains`, `referringDomainsChange` | Websites linking to the domain, change over the last month |
| `backlinks`, `dofollowBacklinksPercent`, `dofollowReferringDomainsPercent` | Total backlinks and dofollow share (live checks) |
| `organicTraffic`, `organicTrafficChange` | Estimated monthly organic search visits and change vs the previous month |
| `trafficValueUsd`, `trafficValueChange` | What that traffic would cost in Google Ads, USD |
| `organicKeywords` | Keywords the domain ranks for |
| `trafficRank`, `siteTitle`, `siteDescription` | Rank among the most visited websites, site name and description |
| `topCountries` | Top 5 countries: traffic, previous month, share % |
| `topKeywords` | Top keywords: volume, traffic, position (US) |
| `topPages` | Top 5 pages by traffic (live checks) |
| `competitors` | Top competing websites: traffic, change, pages |
| `trafficHistory`, `referringDomainsHistory` | Monthly traffic, traffic value and referring domains (last 12 months) |
| `source` | `ahrefs_top` (index), `ahrefs_live` (live check), `ahrefs_top+live` |
| `dataMonth`, `checkedAt` | Month of the Ahrefs data, time of the run |
| Tracker fields | `previousDomainRating`, `domainRatingChangeSinceLastRun`, `previousReferringDomains`, `referringDomainsChangeSinceLastRun`, `previousOrganicTraffic`, `organicTrafficChangeSinceLastRun`, `isNew`, `changed`, `lastCheckedAt` |

#### How it works

| Step | What happens |
|---|---|
| 1. Index | Popular and mid-size sites are read from **Ahrefs Top**, Ahrefs' public index of websites: DR, referring domains, traffic, keywords, countries, competitors and history. Fast (about 8 domains a second) and cheap |
| 2. Live check | Domains missing from the index (often small and niche sites) are checked **live in Ahrefs' own free tools** (Website Authority Checker, Traffic Checker). The Actor passes their human check itself, so you pay nothing extra for captcha solving |
| 3. Tracker | With **Track changes** on, every domain's DR, referring domains and traffic are remembered under the tracker name and compared on the next run |

Set **Live check** to *For every domain* to add total backlinks and dofollow share to indexed sites too, or to *Never* to use only the index.

#### Why this Actor

| | This Actor |
|---|---|
| DR and traffic in one row | Yes: DR, referring domains, traffic, traffic value and keywords per domain, no second run |
| Free Apify plan | Yes: captcha solving is built in, not a paid third-party service |
| Bulk | Up to 10,000 domains a run; URLs, www. and duplicates cleaned |
| Changes since the last run | Yes: DR, referring domains and traffic change per domain, "only changed" mode |
| History | 12 months of traffic, traffic value and referring domains |
| Failed checks | Free: you pay only for domains with data |

#### Track DR and traffic every week

1. Put your sites, competitors or link prospects into **Domains**.
2. Turn on **Track changes between runs** and give the list a **Tracker name** (e.g. `competitors`).
3. Schedule the Actor (Console → Schedules) daily or weekly. Turn on **Return only changed domains** to pay only for domains whose numbers moved.

The **Changes since last run** view shows the old and new DR, referring domains and traffic side by side.

#### Pricing

Pay per event:

| Event | Free / Starter | Scale | Business |
|---|---|---|---|
| Domain (one row with data) | $0.00499 | $0.00449 | $0.00399 |
| Live check (domains missing from the index; DR and traffic are one check each) | $0.006 | $0.006 | $0.006 |
| Run start (per GB of memory) | $0.003 | $0.003 | $0.003 |

Examples on the Free plan, default 2 GB memory:

| Run | Cost |
|---|---|
| 1,000 popular domains (all in the index) | ~$5.00 |
| 100 niche domains, DR and traffic live | 100 × ($0.00499 + 2 × $0.006) = ~$1.70 |
| 100 niche domains, DR only (traffic off) | 100 × ($0.00499 + $0.006) = ~$1.10 |
| Weekly tracker, 50 popular domains, only changed | from $0.006 a run when nothing changed |

Domains with no data, invalid entries and failed live checks are free. Set a maximum cost per run in Console and the Actor stops at it.

#### Speed and memory

Index lookups run 8 at a time. Live checks run in a browser: 1 at a time with the default 2 GB, 2 with 3 GB, 4 with 4 GB of memory (about 3x faster for many niche domains, same cost per check).

#### Other Ahrefs tools

| Actor | What it does |
| --- | --- |
| [Ahrefs Backlink Checker & API](https://apify.com/s_actors/ahrefs-backlink-checker) | Top backlinks with anchors and linking DR, total backlinks and referring domains for many domains or exact pages, new backlinks tracker |
| [Ahrefs Keyword Generator & API](https://apify.com/s_actors/ahrefs-keyword-generator) | Keyword ideas and questions with volume and difficulty for many seeds, exact KD, search volume and SERP for keyword lists, new ideas tracker |
| [Ahrefs Traffic Checker & API](https://apify.com/s_actors/ahrefs-traffic-checker) | Organic traffic, traffic value, top pages, countries and keywords for websites, folders or single pages, by country, traffic change tracker |

#### FAQ

**Why do index and live numbers differ?** Ahrefs Top shows the month's snapshot from Ahrefs' index; live checks show today's values from Ahrefs' free tools. Traffic from a live check is the latest month of the Traffic Checker, and its traffic value is the 6-month average. Small differences are normal.

**Which domains are in the index?** Most popular and mid-size websites. In our test 59 of 60 well-known sites were in it, and about half of small blogs and niche sites. The rest get a live check.

**Does it check subdomains?** DR and traffic are for the whole domain with its subdomains, the way Ahrefs shows them by default.

**Is this the official Ahrefs API?** No. The official Ahrefs API needs a paid Ahrefs plan with API units. This Actor reads the same public numbers Ahrefs shows on its free pages, for any number of domains, without an Ahrefs account.

**What if a live check fails?** The domain comes back with an `error` and is not charged. Run it again later.

#### Use with the API and AI agents

Call the Actor from the [Apify API](https://docs.apify.com/api/v2), Python or JavaScript clients, Make, Zapier, n8n, or as a tool for AI agents through the [Apify MCP server](https://mcp.apify.com). Input is one JSON object, output is one JSON row per domain.

# Actor input Schema

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

One domain or website URL per line (ahrefs.com, https://www.example.com/page). URLs are reduced to the domain, www. is dropped, duplicates are checked once. Up to 10,000 per run. Ahrefs counts the domain with all its subdomains.

## `liveCheck` (type: `string`):

Popular sites come from the Ahrefs Top index: fast and cheap. Other domains are checked live in Ahrefs' own free tools, which adds the "Live check" charge per domain. "For every domain" also adds the total backlinks count and dofollow share to indexed sites.

## `liveTraffic` (type: `boolean`):

Domains missing from the index get their organic traffic, traffic value, top pages, countries and keywords from a second live check (one more "Live check" charge). Turn off when you only need DR.

## `trackChanges` (type: `boolean`):

Remember each domain's DR, referring domains and traffic and add the change since the previous run with the same tracker name. Schedule the Actor (daily or weekly) to monitor your site, competitors or link prospects.

## `onlyChanged` (type: `boolean`):

With tracking on: return (and pay for) only domains whose DR, referring domains or traffic changed since the previous run, plus new domains.

## `monitorName` (type: `string`):

Separate trackers for separate domain lists, e.g. "my-sites" and "competitors".

## `includeHistory` (type: `boolean`):

Monthly organic traffic, traffic value and referring domains for the last 12 months (6 months of traffic for live-checked domains).

## `debugLog` (type: `boolean`):

Log every request retry.

## Actor input object example

```json
{
  "domains": [
    "ahrefs.com",
    "apify.com",
    "zalando.de"
  ],
  "liveCheck": "missing",
  "liveTraffic": true,
  "trackChanges": false,
  "onlyChanged": false,
  "monitorName": "default",
  "includeHistory": true,
  "debugLog": false
}
```

# Actor output Schema

## `overview` (type: `string`):

DR, referring domains, backlinks, organic traffic, traffic value, keywords.

## `tracker` (type: `string`):

DR, referring domains and traffic change since the previous run (tracking on).

## `all` (type: `string`):

Every field: top countries, top keywords, top pages, competitors, monthly history.

# 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": [
        "ahrefs.com",
        "apify.com",
        "zalando.de"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/ahrefs-dr-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": [
        "ahrefs.com",
        "apify.com",
        "zalando.de",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("s_actors/ahrefs-dr-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": [
    "ahrefs.com",
    "apify.com",
    "zalando.de"
  ]
}' |
apify call s_actors/ahrefs-dr-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,s_actors/ahrefs-dr-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/mOSLqfUFgKmRhBVOT/builds/TO8iogTRuc95or2Ow/openapi.json
