# Backlink Monitor – Track New & Lost Backlinks (`rowfeed/backlink-monitor`) Actor

See the new and lost backlinks of any site, in the period you choose. Every link is checked on the live page, so false alarms are removed and you only pay for confirmed links. Run it weekly for backlink alerts, no subscription.

- **URL**: https://apify.com/rowfeed/backlink-monitor.md
- **Developed by:** [Rowfeed](https://apify.com/rowfeed) (community)
- **Categories:** SEO tools, AI
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 links

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 Monitor – Track New & Lost Backlinks

See the new and lost backlinks of any site, in the period you choose. Run it once to review a competitor, or schedule it weekly and get your own backlink alerts.

**Why it is different:** link databases are often wrong about lost links. In our own test, 25 of 87 links reported as "lost" were still on the page. This Actor opens each linking page and checks the link itself. Links the live page contradicts are removed, and you only pay for links confirmed on the page.

Built for SEO agencies reporting to clients, site owners who want to know when a valuable link disappears, and link builders watching where competitors get new links.

### What you get

- **New links** found in the period.
- **Lost links** that disappeared in the period, so you can ask to get them back.
- **One row per linking website**, strongest first, with the linking page, the page linked to and the anchor text.
- **Dofollow or nofollow**, link type, strength of the linking website and page (0-1000), spam score, first and last seen.
- **`verified`:** `true` when the live page confirms it. `false` when we could not tell, for example because the page blocks automated visits or is built by JavaScript. Those rows are listed for free.
- **One free summary row per site** with the totals.

### Example output row

A real row:

```json
{
  "row_type": "link",
  "target": "notion.so",
  "change": "new",
  "domain_from": "app.yoroll.ai",
  "url_from": "https://app.yoroll.ai/",
  "url_to": "https://www.notion.so/Yoroll-Creating-Interactive-Movie-Games-308d2df44910807d88a7ca111d6ed046",
  "anchor": "Quick tutorial",
  "dofollow": true,
  "domain_from_rank": 488,
  "first_seen": "2026-11-07T10:29:50+00:00",
  "verified": true,
  "period_days": 30
}
```

### Backlink alerts on a schedule

1. Enter your website and set **Look back (days)** to 7.
2. Save it as a task and add a weekly schedule in Apify.
3. Connect the run to email, Slack or a webhook with Apify's integrations.

One site checked weekly with a few changes costs about $0.40 a month.

### An alternative to link alerts in Ahrefs and Semrush

Those tools put backlink alerts inside monthly plans. This Actor gives you only the changes, as a list you can keep, and you pay per run. The link index is DataForSEO's own, so its counts differ from Ahrefs' and Semrush's numbers. There is no dashboard or outreach workflow.

### Input

| Field | What it does |
|---|---|
| `targets` | Domains (whole site with subdomains) or page URLs. Your own or a competitor's. Up to 1,000. |
| `days` | How far back to look. 1 to 365, default 30. |
| `show` | `both` (default), `new` or `lost`. |
| `maxLinks` | Per site, for new and for lost separately. 1 to 5,000, default 100. |
| `dofollowOnly` | Leave out nofollow links. |

### Pricing

Pay per event, no subscription:

- **$2 per 1,000 links** ($0.002 per link confirmed on the live page). Links we could not confirm are free.
- $0.04 per lookup. New and lost are one lookup each per site, also when nothing changed, because the data provider bills every lookup. Each further 1,000 links is one more lookup.
- $0.001 per run start.

Examples: one site with 20 new and 5 lost links costs about $0.13. Only lost links for 10 sites, 5 each, cost about $0.50.

**Try it for $0.001:** the pre-filled example is answered from a saved snapshot of a real lookup (rows carry `from_snapshot: true`). You can cap the cost of a run with the maximum charge setting; the Actor never charges beyond it. Lines that are not a domain or URL are listed and never charged.

**Free Apify plan:** the pre-filled example works on any plan. Live lookups need a paid Apify plan (any plan), because each one costs real money at the data provider.

### Good to know

- One row per linking website, so a site that adds ten links shows once. A lost link means that link is gone; the website may still link to you from another page.
- "New" means first seen by the link index in the period, which can be later than the day the link was added.
- The live check reads the page's HTML. A link added only by JavaScript is not visible there, so a page with other normal links can still show it as lost, or remove it as a new link.
- Internal links of the site itself are left out.
- Because the live check can remove links, you may get fewer rows than `maxLinks`. `new_links_total` and `lost_links_total` show the index totals before the check.

### More tools from Rowfeed

- [Backlinks Checker](https://apify.com/rowfeed/backlink-checker) – every backlink of a site right now, with anchors and link strength.
- [Competitor Keyword Research](https://apify.com/rowfeed/competitor-keywords) – the keywords any website ranks for, and your keyword gap.
- [Domain Authority Checker](https://apify.com/rowfeed/da-pa-checker) – authority scores for many domains at once.
- [Broken Link Checker](https://apify.com/rowfeed/broken-link-checker) – 404s, dead links and broken images on any website.
- [Keyword Research Tool](https://apify.com/rowfeed/keyword-search-volume) – search volume, CPC, difficulty and keyword ideas.
- [Website Email Extractor & Contact Finder](https://apify.com/rowfeed/website-contact-finder) – public company emails, to ask for a lost link back.
- [Google Sheets Export](https://apify.com/rowfeed/google-sheets-export) – send the results of any run to a Google Sheet.

# Actor input Schema

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

A domain (example.com) covers the whole site with subdomains; a URL with a path covers that one page. Your own site or a competitor. Up to 1,000.

## `days` (type: `integer`):

Show links that appeared or disappeared in this many days. For a weekly schedule, use 7.

## `show` (type: `string`):

Each of new and lost is one lookup per site.

## `maxLinks` (type: `integer`):

For new and for lost separately, strongest linking sites first.

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

Leave out nofollow links.

## Actor input object example

```json
{
  "targets": [
    "example.com",
    "https://example.com/blog/post"
  ],
  "days": 30,
  "show": "both",
  "maxLinks": 100,
  "dofollowOnly": false
}
```

# Actor output Schema

## `results` (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": [
        "notion.so"
    ],
    "days": 30,
    "show": "both"
};

// Run the Actor and wait for it to finish
const run = await client.actor("rowfeed/backlink-monitor").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": ["notion.so"],
    "days": 30,
    "show": "both",
}

# Run the Actor and wait for it to finish
run = client.actor("rowfeed/backlink-monitor").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": [
    "notion.so"
  ],
  "days": 30,
  "show": "both"
}' |
apify call rowfeed/backlink-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rowfeed/backlink-monitor"
        }
    }
}
```

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/CFfKtKBDdAYPKvOzE/builds/0AEeE9swlQuLbDLeZ/openapi.json
