# Website Backlink Checker (`khadinakbar/website-backlink-checker`) Actor

Check inbound website backlinks by domain or page URL. Returns referring page, anchor text, dofollow, domain rank, spam score, and first seen. One dataset row per backlink, referring domain, anchor, or summary. Charged $0.01 per saved row plus $0.05 per SEO API request.

- **URL**: https://apify.com/khadinakbar/website-backlink-checker.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** SEO tools, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 backlink founds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Website Backlink Checker

Turn a domain or page URL into structured **inbound backlinks**: referring page, anchor text, dofollow, domain rank, spam score, and first seen. Returns one dataset row per backlink for SEO teams and agents that want a backlink export on Apify with API, schedule, and MCP access.

### Best fit for this Actor

- Check which public pages currently link to a competitor domain or a specific landing page.
- Export referring root domains or grouped anchor text after the first backlink sample looks useful.
- Keep the first run small with `maxResults` 5, then raise the cap for a fuller export.

When you already have phrases and only need search volume plus CPC, start with [Keyword Search Volume API](https://apify.com/khadinakbar/keyword-search-volume-api). After you pick linking pages to inspect on the live SERP, continue with [Google SERP All-in-One Scraper](https://apify.com/khadinakbar/google-serp-all-in-one-scraper).

### Practical scenario

An SEO lead pastes `moz.com`, keeps `mode` on `backlinks`, and runs the Actor. The dataset returns referring `sourceUrl` values with `anchorText`, `isDofollow`, `domainRank`, and `firstSeen`. They then switch `mode` to `referring_domains` with `maxResults` 5 to inspect the strongest linking hosts before outreach. A valid query with no matching rows finishes `SUCCEEDED` with `VALID_EMPTY` and skips the `backlink-found` event.

### Quick start input

```json
{
  "targets": ["moz.com"],
  "mode": "backlinks",
  "maxResults": 5
}
```

`targets` accepts a bare domain or a full URL. A path keeps page-level lookup. Up to 10 targets per run.

### Input reference

| Field | Type | What it controls |
|---|---|---|
| `targets` | array | Domains or page URLs to check. Example: `["moz.com"]`. Required. Cap 10. |
| `mode` | enum | `backlinks`, `referring_domains`, `anchors`, or `summary`. Default `backlinks`. |
| `maxResults` | integer | Row cap per target, 1–100. Default 5. Summary still writes at most one row. |
| `dofollowOnly` | boolean | Keep only dofollow links. Default false. |
| `excludeLost` | boolean | Drop lost inbound links. Default true. |
| `includeSubdomains` | boolean | Include subdomain link data. Default true. |
| `excludeInternalBacklinks` | boolean | Drop internal subdomain links from summary and referring-domain reports. Default true. |

Owner API credentials are already configured for Store runs. This Actor does not accept user API keys.

### What data you receive

One dataset item is one backlink, referring domain, anchor, or summary row.

```json
{
  "recordType": "backlink",
  "mode": "backlinks",
  "target": "moz.com",
  "sourceUrl": "https://example.com/seo-guide",
  "sourceDomain": "example.com",
  "targetUrl": "https://moz.com/",
  "anchorText": "moz",
  "isDofollow": true,
  "domainRank": 41,
  "firstSeen": "2025-12-19 00:23:13 +00:00",
  "source": "website_backlink_checker/backlinks",
  "status": "OK",
  "fetchedAt": "2026-09-10T00:00:00.000Z"
}
```

| Field | Meaning |
|---|---|
| `sourceUrl` / `sourceDomain` | Referring page and host |
| `targetUrl` | Destination URL on the checked site |
| `anchorText` / `isDofollow` | Visible anchor and follow type |
| `domainRank` / `pageRank` | Independent 0–100 index scores for the referring host or page |
| `firstSeen` | When the index first recorded the link |
| `source` | Mode provenance label for the row |

`OUTPUT` and `RUN_SUMMARY` in the default key-value store hold `outcome`, `itemsPushed`, `chargedEventCounts`, and `providerCostUsd`. Download the dataset as JSON, CSV, Excel, or HTML.

### Use through the API

```bash
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~website-backlink-checker/runs" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"targets":["moz.com"],"mode":"backlinks","maxResults":5}'
```

### Use with AI agents through Apify MCP

> Check inbound backlinks for moz.com. Return sourceUrl, sourceDomain, targetUrl, anchorText, isDofollow, domainRank, firstSeen, source, and fetchedAt. Read OUTPUT.outcome and itemsPushed. Treat domainRank as an independent 0-100 index score.

Connect via <https://mcp.apify.com>. Cost signal: about `$0.05` per successful SEO API request plus `$0.01` per saved row.

### Connect the workflow

- After you score a domain's inbound links, then use [Google SERP All-in-One Scraper](https://apify.com/khadinakbar/google-serp-all-in-one-scraper) to inspect how a referring host appears in live search results.
- When a referring URL looks stale, continue with [Broken Link Checker](https://apify.com/khadinakbar/broken-link-checker) to verify the source page.
- For a Moz-style domain-authority overview after a backlink sample, continue with [Moz Alternative](https://apify.com/khadinakbar/moz-alternative).

### Pricing

This Actor uses Pay per event plus Apify platform usage. The live Pricing tab is the current source of truth for billing details.

- `apify-actor-start`: $0.00005 per run
- `backlink-api-request`: **$0.05** per successful upstream SEO API task
- `backlink-found`: **$0.01** per persisted row

A five-row backlink prefill is one API task plus five rows. Empty matches skip the `backlink-found` charge. Provider cost is recorded in `RUN_SUMMARY.providerCostUsd`.

### Best results

- Provide a real hostname such as `moz.com` rather than a keyword or a search-app URL.
- Keep `maxResults` at 5 while you confirm the output shape, then raise it for exports.
- Treat rank and spam as independent index scores.
- A valid query with no match finishes `SUCCEEDED` with `VALID_EMPTY`.

### Builder's note

I found that Store backlink checkers often mix summary counts, referring domains, and raw link rows behind one vague export. This SKU keeps inbound-link rows as the primary job: one target, one API task, then one billed row per referring page (or referring domain / anchor / summary). That keeps a first agent call forecastable and leaves domain-authority suites on the sibling Actor.

### Legal and responsible use

Use this Actor with public SEO research you are authorized to run. Follow applicable law and the upstream data provider terms, and keep the output in your own compliance workflow. Moz is a trademark of its owner. The sibling Moz Alternative Actor is independent and is not affiliated with, associated with, or endorsed by Moz, Inc.

Issues and feature requests: use the Actor Issues tab on Apify.

# Changelog

This Actor's version history is a separate document: https://apify.com/khadinakbar/website-backlink-checker/changelog.md

# Actor input Schema

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

Domains or page URLs to check for inbound links. Example: \["moz.com"] or \["https://moz.com/learn"]. Protocol and www are stripped for domains; a path keeps page-level lookup. Duplicates collapse. Capped at 10 targets. This is NOT an API-key field.

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

Which inbound-link report to run. backlinks returns referring page URLs with anchor, dofollow, and first seen. referring\_domains lists linking root hosts. anchors groups by anchor text. summary returns one overview row with backlink and referring-domain counts. Default backlinks. This is NOT a login or API key field.

## `maxResults` (type: `integer`):

Maximum dataset rows to write per target (1-100). Defaults to 5 so quality tests and agent calls stay cheap. summary still writes at most one row per target. Raise this after you confirm the output shape.

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

When true, keep only dofollow inbound links in backlink, referring-domain, and anchor reports. Defaults to false so mixed follow types are returned. Ignored by summary mode.

## `excludeLost` (type: `boolean`):

When true, drop inbound links that the index marks as lost. Defaults to true. summary mode still reports live counts for the target.

## `includeSubdomains` (type: `boolean`):

When true, inbound-link reports include subdomain data for the target. Defaults to true. Does not crawl the live website.

## `excludeInternalBacklinks` (type: `boolean`):

When true, summary and referring-domain reports drop internal subdomain links. Defaults to true. Helps keep the export focused on external referring hosts.

## Actor input object example

```json
{
  "targets": [
    "moz.com"
  ],
  "mode": "backlinks",
  "maxResults": 5,
  "dofollowOnly": false,
  "excludeLost": true,
  "includeSubdomains": true,
  "excludeInternalBacklinks": true
}
```

# Actor output Schema

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

Backlink, referring-domain, anchor, or summary rows.

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

Compact OUTPUT record with outcome, itemsPushed, charges, and warnings.

## `runSummary` (type: `string`):

Detailed RUN\_SUMMARY including providerCostUsd and request counts.

# 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": [
        "moz.com"
    ],
    "mode": "backlinks",
    "maxResults": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/website-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": ["moz.com"],
    "mode": "backlinks",
    "maxResults": 5,
}

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,khadinakbar/website-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/rCohK9eJbjiovPN6s/builds/4v6gdUL3a3KczmO3k/openapi.json
