# Ahrefs SEO Checker & API: Bulk DR, Backlinks & Traffic (`s_actors/ahrefs-seo-checker`) Actor

All-in-one Ahrefs checker for lists of domains, URLs and keywords: DR, backlinks with the top 20 links, referring domains, organic traffic and value, top pages, keywords, competitors, keyword difficulty and volume. Tracks changes between runs. Works on the free Apify plan.

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

## Pricing

from $3.99 / 1,000 results

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 SEO Checker & API: Bulk DR, Backlinks & Traffic

**All-in-one Ahrefs checker** for lists of **domains, page URLs and keywords**. One run gives each site its **Domain Rating (DR)**, **backlinks**, **referring domains**, **dofollow share**, the **top 20 backlinks** with anchors, **organic traffic** and **traffic value**, **top pages**, **top countries and keywords**, **competitors** and a **12-month history**, and each keyword its **Keyword Difficulty (KD)**, **search volume** and **SERP**. Turn on the **tracker** to see what changed since the last run.

```json
{
  "targets": ["competitor.com", "https://backlinko.com/seo-checklist"],
  "keywords": ["seo checker", "backlink checker"]
}
```

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 SEO checker**, an **Ahrefs API** alternative for SEO reports, competitor research, link prospecting and keyword research.

#### What you get

One row per domain or URL. Real example, 24 October 2026:

| target | DR | backlinks | referring domains | dofollow | organic traffic | traffic value | keywords |
|---|---|---|---|---|---|---|---|
| ahrefs.com | 91 | 25,265,945 | 118,384 | 58% | 3,028,432 | $5,300,727 | 135,500 |
| zalando.de | 78 | | | | 11,368,782 | | |
| backlinko.com/seo-checklist (page) | 90 | 1,104 | 474 | 82% | 899 | $2,207 | |

Each domain row also carries lists: `topBacklinks` (linking page, its DR, anchor, linked URL), `topCountries`, `topKeywords`, `competitors`, `trafficHistory` and `referringDomainsHistory`, and `topPages` when you turn them on.

One row per keyword:

| keyword | country | KD | search volume | ref. domains to rank | SERP features | #1 result |
|---|---|---|---|---|---|---|
| seo checker | us | 86 | 9,300 | 524 | AI overview | seobility.net/en/seocheck/ (DR 80) |

With **Keyword ideas and questions** on, the keyword row also gets 20 ideas and 20 questions with volume range and difficulty label ("seo checker": 878 ideas in total).

| Field | Description |
|---|---|
| `type`, `target`, `mode`, `input` | `domain`, `url` or `keyword`; the checked domain or URL, Ahrefs' target mode and what you entered |
| `domainRating`, `domainRatingChange` | Ahrefs DR (0-100) and its change this month |
| `backlinks`, `referringDomains`, `referringDomainsChange` | Total backlinks, linking websites and their monthly change |
| `dofollowBacklinksPercent`, `dofollowReferringDomainsPercent` | Dofollow share of backlinks and of referring domains |
| `topBacklinks` | Up to 20 top backlinks: `sourceUrl`, `sourceDomain`, `sourceTitle`, `sourceDomainRating`, `anchor`, `targetUrl` |
| `organicTraffic`, `organicTrafficChange`, `trafficValueUsd`, `trafficValueChange` | Monthly organic search traffic, its value in USD and the change from last month |
| `organicKeywords`, `trafficRank`, `siteTitle`, `siteDescription` | Ranking keywords, Ahrefs traffic rank, site name and description |
| `topPages`, `topCountries`, `topKeywords`, `competitors` | Top 5 pages, countries, keywords and competing websites |
| `trafficHistory`, `referringDomainsHistory` | Monthly traffic, traffic value and referring domains (12 months) |
| `keyword`, `country`, `keywordDifficulty`, `searchVolume`, `referringDomainsToRank` | Keyword, search market, KD (0-100), monthly searches, referring domains needed for the top 10 |
| `serpFeatures`, `topResults` | SERP features and the top results with DR, backlinks, traffic and top keyword |
| `keywordIdeas`, `questionIdeas`, `totalIdeas`, `totalQuestions` | Keyword ideas and questions (with the option on) |
| `source` | Where the data came from: `ahrefs_top` (free index), `ahrefs_backlinks`, `ahrefs_traffic`, `ahrefs_live` |
| `note`, `error`, `checkedAt` | "No data" note, failed check message, time of the run |

#### What to check

| Option | What it adds | Cost |
|---|---|---|
| Domains (always) | DR, referring domains, traffic, traffic value, keywords, countries, competitors, history from the free Ahrefs index | Result only |
| Domains missing from the index | Small and niche sites are checked live: DR, backlinks, traffic | + Live checks |
| **Backlinks** (on by default) | Today's backlinks, referring domains, dofollow share and the top 20 backlinks | + 1 live check |
| **Top pages** | Top 5 pages by organic traffic | + 1 live check |
| Page URLs | Backlinks and traffic of that exact page, folder or domain (target mode) | + Live checks |
| **Keywords** | KD, search volume, referring domains to rank, SERP | + 1 live check |
| **Keyword ideas** | 20 ideas and 20 questions per keyword | + 1 live check |

Turn **Backlinks** off for the cheapest bulk DR and traffic check of popular sites: no browser at all, thousands of domains in minutes.

#### How it works

| Step | What happens |
|---|---|
| 1. Free index | Each domain is looked up in the Ahrefs Top index by plain HTTP: fast and cheap |
| 2. Live checks | Backlinks, top pages, keyword difficulty, ideas and sites missing from the index are checked live in **Ahrefs' own free tools**. The Actor passes their human check itself, so you pay nothing extra for captcha solving |
| 3. One row | Everything about a domain, URL or keyword goes into one row, pushed as soon as it is ready |
| 4. Tracker | With **Track changes** on, the numbers and top backlinks are remembered under the tracker name and compared on the next run |

#### Why this Actor

| | This Actor |
|---|---|
| All in one | DR, backlinks, top backlinks, traffic, top pages, keywords, competitors, KD in one run and one table |
| Free Apify plan | Yes: captcha solving is built in, not a paid third-party service |
| Page-level data | Exact URL, URL prefix, domain or domain with subdomains |
| Bulk | Up to 5,000 domains or URLs and 1,000 keywords a run |
| Changes since the last run | DR, backlinks, referring domains, traffic, KD and new top backlinks |
| Short API timeouts | Finished rows are saved even if your call's timeout ends the run early |
| Failed checks and empty rows | Free |

#### Monitor your site and competitors

1. Put your domains and your competitors into **Domains or URLs**, your money keywords into **Keywords**.
2. Turn on **Track changes between runs** and give the list a **Tracker name** (e.g. `competitors`).
3. Schedule the Actor (Console → Schedules) weekly. The **Changes since last run** view shows DR, backlinks, referring domains, traffic and KD changes and **new top backlinks**. Turn on **Return only changed results** to pay only for what moved.

#### Pricing

Pay per event:

| Event | Free / Starter | Scale | Business |
|---|---|---|---|
| Result (one domain, URL or keyword with data) | $0.00499 | $0.00449 | $0.00399 |
| Live check (backlinks, top pages, a site missing from the index, KD, ideas) | $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, DR and traffic only (backlinks off) | $0.006 + 1,000 × $0.00499 = ~$5.00 |
| 100 domains with backlinks and top 20 backlinks | $0.006 + 100 × ($0.00499 + $0.006) = ~$1.10 |
| The example: 1 domain + 1 page with backlinks, 1 keyword with ideas | $0.006 + 3 × $0.00499 + 5 × $0.006 = ~$0.051 |
| Weekly tracker of 10 competitors with backlinks | ~$0.12 a run |

Rows with no Ahrefs data, unknown keywords, 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

The free index answers in under a second per domain. Live checks run in a browser: 1 at a time with the default 2 GB (2-3 checks a minute), 2 with 3 GB, 6 with 4 GB. The price per check is the same; more memory only adds the run start fee per GB. Give API and agent calls a timeout of 180+ seconds when they include live checks.

#### Other Ahrefs tools

| Actor | What it does |
| --- | --- |
| [Ahrefs DR Checker & API](https://apify.com/s_actors/ahrefs-dr-checker) | Bulk Domain Rating, referring domains, organic traffic and traffic value for thousands of domains, 12-month history, DR and traffic change tracker |
| [Ahrefs Backlink Checker & API](https://apify.com/s_actors/ahrefs-backlink-checker) | One row per backlink: top backlinks with anchors, surrounding text and redirects for many domains or pages, minimum linking DR, 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 |
| [Keyword Search Volume Checker & API](https://apify.com/s_actors/keyword-search-volume) | Monthly search volume, keyword difficulty, backlinks needed, related keywords and SERP for keyword lists, volume and KD change 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

**Are the numbers the same as on ahrefs.com?** Yes. Index data comes from Ahrefs Top (Ahrefs' free website rankings, updated monthly), live data from Ahrefs' free tools at the time of the run.

**Why do some domains have no backlinks list or top pages?** Those come from live checks: turn on **Backlinks** or **Top pages**. Domains from the free index always have DR, referring domains, traffic, keywords, countries and competitors.

**How many backlinks per site?** Up to 20 top backlinks, one per linking domain, as in Ahrefs' free Backlink Checker. The totals cover the whole profile.

**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 data Ahrefs shows in its free tools, for any number of domains and keywords, without an Ahrefs account.

**What if a check fails?** The row 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, URL and keyword.

# Actor input Schema

## `targets` (type: `array`):

One domain or URL per line (competitor.com, https://example.com/blog/post). Domains get DR, backlinks, referring domains, traffic, keywords and competitors; a URL gets the numbers of that page. Duplicates are checked once. Up to 5,000 per run.

## `keywords` (type: `array`):

Optional: one keyword per line. Each gets the exact Keyword Difficulty (KD), search volume, referring domains needed for the top 10 and the Google SERP with DR and traffic of the top pages. Up to 1,000 per run.

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

A live check on Ahrefs per domain or URL: today's backlinks, referring domains, dofollow share and the top 20 backlinks (linking page, its DR, anchor). One "Live check" charge each. Turn off for DR and traffic from the free index only (cheapest).

## `includeTopPages` (type: `boolean`):

One more live check per domain or URL: the top 5 pages by organic traffic (plus top countries and keywords for sites missing from the index). One "Live check" charge each.

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

Popular sites come from the Ahrefs Top index: fast and cheap. Small and niche sites are not in it: they get DR and traffic from live checks of Ahrefs' own free tools ("Live check" charges).

## `mode` (type: `string`):

Ahrefs' target modes for the live checks (backlinks, top pages).

## `includeKeywordIdeas` (type: `boolean`):

One more live check per keyword: 20 keyword ideas and 20 questions with volume range and difficulty label, plus the total number of ideas.

## `country` (type: `string`):

Search market of the keyword difficulty, volume and SERP (Google in that country).

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

Remember DR, backlinks, referring domains, traffic, the top backlinks and keyword KD, and add the change since the previous run with the same tracker name (plus new backlinks in the top 20). Schedule the Actor weekly to monitor your sites and competitors.

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

With tracking on: return (and pay for) only rows that changed since the previous run, plus new ones.

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

Separate trackers for separate 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 sites).

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

Log every request retry.

## Actor input object example

```json
{
  "targets": [
    "ahrefs.com",
    "https://backlinko.com/seo-checklist"
  ],
  "keywords": [
    "seo checker"
  ],
  "includeBacklinks": true,
  "includeTopPages": false,
  "liveCheck": "missing",
  "mode": "auto",
  "includeKeywordIdeas": true,
  "country": "us",
  "trackChanges": false,
  "onlyChanged": false,
  "monitorName": "default",
  "includeHistory": true,
  "debugLog": false
}
```

# Actor output Schema

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

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

## `keywords` (type: `string`):

Keyword difficulty, search volume, SERP, ideas and questions.

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

Every field: top backlinks, top pages, countries, keywords, competitors, 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 = {
    "targets": [
        "ahrefs.com",
        "https://backlinko.com/seo-checklist"
    ],
    "keywords": [
        "seo checker"
    ],
    "includeKeywordIdeas": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/ahrefs-seo-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 = {
    "targets": [
        "ahrefs.com",
        "https://backlinko.com/seo-checklist",
    ],
    "keywords": ["seo checker"],
    "includeKeywordIdeas": True,
}

# Run the Actor and wait for it to finish
run = client.actor("s_actors/ahrefs-seo-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 '{
  "targets": [
    "ahrefs.com",
    "https://backlinko.com/seo-checklist"
  ],
  "keywords": [
    "seo checker"
  ],
  "includeKeywordIdeas": true
}' |
apify call s_actors/ahrefs-seo-checker --silent --output-dataset

```

## MCP server setup

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