# Backlink Checker & Bulk Domain Authority (`vncntlabs/backlink-checker`) Actor

Check backlinks and authority for up to 1,000 domains or URLs per run: authority score (0-100), backlinks, referring domains, dofollow share, spam score, new and lost links. Plus full backlink lists with anchors and source authority, and only-new-backlink alerts. No API key needed.

- **URL**: https://apify.com/vncntlabs/backlink-checker.md
- **Developed by:** [VNCNT Labs](https://apify.com/vncntlabs) (community)
- **Categories:** SEO tools, Marketing, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / 1,000 backlinks

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Backlink Checker & Bulk Domain Authority

Check the **backlink profile and authority of up to 1,000 domains or URLs** in one run, and pull **full backlink lists** for the ones you care about. For each target you get an **authority score (DataForSEO rank 0-100, not Moz DA / Ahrefs DR)**, total **backlinks**, **referring domains** (dofollow and total), referring IPs and subnets, a **spam score**, broken links, first-seen date, the top linking TLDs, link types and countries, and optionally the **new and lost backlinks** of the last N days. Backlink lists come with the **linking URL, anchor text, dofollow/nofollow, source authority, page title, placement and first/last seen**. Schedule it with **only-new backlinks** to get alerted when a site links to you or a competitor.

No Ahrefs, Moz or Semrush subscription and no API key: data comes from DataForSEO's licensed backlink index, and you **pay per result**.

Built for:

- **SEO agencies and link builders**: vet prospect lists in bulk by authority and spam score, audit client and competitor link profiles.
- **Domain investors and marketplaces**: score expiring or for-sale domains by backlinks and referring domains.
- **Site owners and PR teams**: new-backlink alerts, lost-link checks, competitor link gap research.

### What you get

| Row (`type`) | What's in it | Charged |
|---|---|---|
| `domain` | `target`, `authorityScore` (0-100), `rank` (0-1000), `mainDomainRank`, `backlinks`, `referringDomains`, `referringDomainsDofollow`, `referringMainDomains`, `referringPages`, `referringIps`, `referringSubnets`, `spamScore`, `brokenBacklinks`, `brokenPages`, `firstSeen`, `topTlds`, `linkTypes`, `linkAttributes`, `platformTypes`, `countries`, optional `newBacklinks` / `lostBacklinks` / `newLostSince`, and list status | `domain-metrics` (only targets with backlinks) |
| `backlink` | `target`, `position`, `domainFrom`, `urlFrom`, `urlTo`, `anchor`, `dofollow`, `linkType`, `attributes`, `domainFromScore`, `domainFromRank`, `pageFromRank`, `pageFromTitle`, `pageFromLanguage`, `domainFromCountry`, `spamScore`, `semanticLocation`, `textBefore`, `textAfter`, `isBroken`, `urlToStatusCode`, `firstSeen`, `lastSeen`, `isNew` (monitor mode) | `backlink` |
| `referring-domain` | `target`, `position`, `domainFrom`, `domainFromScore`, `backlinksFromDomain`, `referringPages`, `spamScore`, `brokenBacklinks`, `firstSeen`, `lostDate`, `linkTypes` | `backlink` |

### Input examples

Bulk authority check for a prospect list (metrics only):

```json
{ "targets": ["example.com", "another-site.com", "third-site.org"], "listType": "none" }
```

Top 500 dofollow backlinks of a competitor, strongest first, low spam only:

```json
{ "targets": ["competitor.com"], "maxRowsPerTarget": 500, "dofollowOnly": true, "maxSpamScore": 30 }
```

Weekly new-backlink alert for your site and two competitors:

```json
{ "targets": ["yoursite.com", "competitor-one.com", "competitor-two.com"], "includeMetrics": false,
  "onlyNewBacklinks": true, "maxRowsPerTarget": 200, "monitorId": "weekly-links" }
```

**Tips**

- A domain covers all its subdomains; enter a full URL (`https://example.com/page`) for one page.
- **Authority score** is DataForSEO's rank (0-1000, based on the link graph, similar in spirit to PageRank) divided by 10. It is **not** Moz Domain Authority or Ahrefs Domain Rating, and numbers differ between tools. Compare sites with the same metric.
- **Only new backlinks**: each run makes one bulk lookup (up to 1,000 targets) to see which targets gained links since the last run, then fetches lists only for those, newest first. Delivered links are remembered in your Apify account (key-value store `backlink-monitor`).
- For a domain's organic traffic, ranked keywords and competitors, use our [Domain SEO Data](https://apify.com/vncntlabs/domain-seo-data) Actor; it uses the same backlink metrics.

### Output examples

```json
{
  "type": "domain", "target": "printify.com", "status": "ok", "authorityScore": 45, "rank": 449,
  "backlinks": 187133, "referringDomains": 19329, "referringDomainsDofollow": 14670, "referringMainDomains": 17709,
  "referringPages": 159414, "referringIps": 9567, "referringSubnets": 3847, "spamScore": 12,
  "brokenBacklinks": 20012, "brokenPages": 315, "firstSeen": "2019-01-17T21:59:12Z",
  "newBacklinks": 14817, "lostBacklinks": 1917, "newLostSince": "2026-09-17",
  "linkTypes": { "anchor": 137876, "image": 20257, "redirect": 846, "canonical": 435 }
}
```

```json
{
  "type": "backlink", "target": "example.com", "position": 1, "domainFrom": "blog.example.org",
  "urlFrom": "https://blog.example.org/best-tools", "urlTo": "https://example.com/",
  "anchor": "example.com", "dofollow": false, "linkType": "anchor", "attributes": ["ugc", "external", "noopener", "nofollow"],
  "domainFromScore": 55, "pageFromTitle": "The best tools we use",
  "semanticLocation": "main", "spamScore": 0, "firstSeen": "2026-10-17T02:03:38Z", "lastSeen": "2026-10-17T02:03:38Z"
}
```

The dataset has four views: **Overview**, **Domain metrics**, **Backlinks** and **Referring domains**. Export to CSV, Excel or JSON, or send new backlinks to Slack, Google Sheets or email with Apify integrations.

### Pricing (pay per event)

| Event | When it is charged |
|---|---|
| Actor start | once per run |
| `bulk-lookup` | one bulk request covering up to 1,000 targets: metrics, new/lost counts, or the monitor check |
| `domain-metrics` | one target with backlink metrics |
| `backlink-list` | one page of up to 1,000 backlinks or referring domains for a target |
| `backlink` | one backlink or referring-domain row delivered |

You are not charged for:

- targets with no backlinks in the index (or domains that don't exist), and failed requests;
- list pages that return nothing, and in monitor mode, targets with no new backlinks and links you already received;
- new/lost counts when every target has zero new and zero lost links;
- skipped inputs, and anything beyond your run's maximum charge. The run stops cleanly and lists what it didn't process.

**Apify free plan:** metrics for 10 targets and backlink lists for 2 targets x 100 rows per run. Any paid Apify plan unlocks 1,000 targets and up to 10,000 rows per target (lists for up to 50 targets per run).

### Use from AI agents (MCP)

AI assistants such as Claude, ChatGPT and Cursor can run this Actor through [Apify's MCP server](https://docs.apify.com/platform/integrations/mcp) (`https://mcp.apify.com`). The agent can look up the Actor, read its input schema, run it and read the results. Runs use your own Apify account and are charged at the prices on this page.

- **Actor name:** `vncntlabs/backlink-checker`
- **Server URL with only this tool:** `https://mcp.apify.com?tools=vncntlabs/backlink-checker`. The default `https://mcp.apify.com` also works; the agent can then search Apify Store and call the Actor by name.
- **Claude** (desktop app or claude.ai): Settings > Connectors > Add custom connector, paste the server URL, then sign in to Apify.
- **ChatGPT:** turn on Developer mode, then Settings > Apps & Connectors > Create, paste the server URL and choose OAuth.
- **Cursor:** run `/add-plugin apify` in Cursor chat and connect the Apify MCP server under Cursor Settings > Tools & MCPs, or add the server to `mcp.json`:

```json
{ "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=vncntlabs/backlink-checker" } } }
```

Example prompt: *"Use the Apify Actor vncntlabs/backlink-checker to get the authority score, total backlinks and referring domains for example.com and competitor.com."*

To cap the cost of an agent's run, it can pass `maxTotalChargeUsd` in the run options.

### FAQ

**Where does the data come from?** DataForSEO's backlink index, a continuously crawled link graph licensed for resale. Counts are estimates of the live web and will not match other tools exactly.

**Is the authority score the same as Moz DA or Ahrefs DR?** No. It is a 0-100 scale of DataForSEO's own rank. It ranks sites consistently, so it works for comparing and filtering lists.

**How fresh is it?** New links usually appear within days of being crawled; `firstSeen` and `lastSeen` show when each link was found and last confirmed.

**Can I check thousands of domains?** Yes: up to 1,000 per run, in one bulk request. Run it again for more.

# Actor input Schema

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

Up to 1,000 per run. A domain (<code>example.com</code>, subdomains included) or a page URL (<code>https://example.com/blog/post</code>) for page-level data.

## `includeMetrics` (type: `boolean`):

One row per target: authority score (DataForSEO rank 0-100, not Moz DA / Ahrefs DR), backlinks, referring domains (dofollow and total), referring IPs and subnets, spam score, broken links, first seen, top TLDs, link types and countries.

## `newLostDays` (type: `integer`):

Optional: also count backlinks gained and lost over the last N days (e.g. 30). 0 = off.

## `listType` (type: `string`):

Lists are fetched for the first 50 targets of a run.

## `maxRowsPerTarget` (type: `integer`):

Backlinks or referring domains per target, up to 10,000.

## `sortBy` (type: `string`):

Strongest = highest source authority first.

## `dofollowOnly` (type: `boolean`):

Backlinks list only.

## `onePerDomain` (type: `boolean`):

Backlinks list only: keep the best link from each referring domain.

## `maxSpamScore` (type: `integer`):

Optional: drop links (or referring domains) with a spam score above this, e.g. 30.

## `onlyNewBacklinks` (type: `boolean`):

For scheduled runs: returns only backlinks not delivered by earlier runs. One bulk lookup per run checks which targets gained links; lists are fetched only for those. History is kept in your Apify account (key-value store 'backlink-monitor').

## `monitorId` (type: `string`):

Optional. Keeps this monitor's history separate, e.g. <code>client-acme</code>.

## Actor input object example

```json
{
  "targets": [
    "printify.com",
    "redbubble.com"
  ],
  "includeMetrics": true,
  "newLostDays": 0,
  "listType": "backlinks",
  "maxRowsPerTarget": 100,
  "sortBy": "strongest",
  "dofollowOnly": false,
  "onePerDomain": false,
  "onlyNewBacklinks": false
}
```

# Actor output Schema

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

No description

## `domains` (type: `string`):

No description

## `all` (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 = {
    "targets": [
        "printify.com",
        "redbubble.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("vncntlabs/backlink-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": [
        "printify.com",
        "redbubble.com",
    ] }

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vncntlabs/backlink-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/biY8XUhDJaZUVTEKt/builds/OkXTAXzqaMxGGWGYD/openapi.json
