Every backlink tool I have used gives me a very long table and leaves the meaning to me. That is where the hours go, and it is the part a language model is genuinely good at: reading anchors and titles, spotting patterns, and pointing at the rows that deserve a human look.
This post is part of my AI-powered backlink strategy guide. For the method behind it, see how to do an AI-powered backlink audit. This post is the no-code route: connect Claude to the DataForSEO MCP server, ask questions in plain English, and Claude pulls the backlink data and reasons over it. I ran it on mlforseo.com on 7 November 2026 and every number below comes from that session, including the part that was mostly junk and the alarming finding that turned out to be stale.
Prefer a notebook? The Python version does the same with code and logs the cost of every call.
On this page
What MCP is, and why it suits backlink work
The Model Context Protocol (MCP) is, in the project’s own words, an open-source standard for connecting AI applications to external systems. Anthropic introduced it. A service publishes an MCP server that describes its tools, an app like Claude Desktop or Claude Code connects to it, and Claude can call those tools mid-conversation, read the results and decide what to do next. It is standard plumbing for function calling (tool use) across apps.
Backlink analysis fits this well because the hard part is interpretation. The DataForSEO API returns every link and anchor it knows about. It cannot notice that a domain is your own site, that 300 anchors are one link seller’s advert, or that sorting by authority has pushed the links you care about to the middle. Claude can, with no code, as long as you check its work: it is an AI agent reading metadata, not pages.
What you need, and what it costs
- A DataForSEO account. Your API login and API password are on the API access page. Treat them like any API key: never paste them into a chat, a ticket or a shared doc, and never commit them.
- Claude Desktop or Claude Code. I used Claude Code; the prompts work in either.
- Node.js (20 or newer, per the repository) if you run the server locally. The hosted option needs nothing installed.
On pricing: DataForSEO removed the $100 monthly minimum for the Backlinks API on 1 July 2026, so a one-off check on a small site is now realistic. You pay per request plus per returned row. On 7 November 2026 the Backlinks pricing page showed $0.024 per request plus $0.000036 per row. Prices change, so check before you start. At those prices my six calls (about a hundred rows) come to roughly $0.15; roughly, because the MCP responses don’t show the cost.
How to set up the DataForSEO MCP server
Many tutorials still show an ENABLED_MODULES setting with a “BACKLINKS” module. That is the deprecated v2 server. The current DataForSEO MCP server is v3, started with npx dataforseo-mcp-server@latest, and it has just four tools:
| Tool | What it does |
|---|---|
docs_index | Lists the documentation, optionally for one API section |
docs_list_sections | Returns the available documentation sections |
docs_search | Fetches the documentation page for an endpoint |
api_request | Makes an authenticated request to any DataForSEO v3 endpoint |
There is no separate backlinks tool. Claude reads the docs, picks the /v3/backlinks/... endpoint that answers your question and calls it through api_request, so anything the Backlinks API supports is available.
Option 1: the hosted server (OAuth, nothing to install)
DataForSEO runs a remote server at https://mcp.dataforseo.com/v3/mcp that signs you in with OAuth, so your password never sits in a config file. In Claude Code, add it with the command from Anthropic’s Claude Code MCP docs, then type /mcp inside Claude Code to complete the sign-in:
claude mcp add --transport http dataforseo https://mcp.dataforseo.com/v3/mcpFor other apps that accept a server URL, the README gives the JSON form; check your app’s docs for remote server support.
Option 2: a local server in Claude Desktop
Claude Desktop reads local servers from its claude_desktop_config.json file. This is the local stdio setup from the DataForSEO README. OAuth isn’t used on this route, so the credentials go in the env block:
{
"mcpServers": {
"dataforseo": {
"command": "npx",
"args": ["dataforseo-mcp-server@latest"],
"env": {
"DATAFORSEO_LOGIN": "your_api_login",
"DATAFORSEO_PASSWORD": "your_api_password"
}
}
}
}Restart Claude Desktop after saving. That file lives on your machine; keep it out of any synced or shared folder.
Option 3: a local server in Claude Code
claude mcp add --env DATAFORSEO_LOGIN=your_api_login --env DATAFORSEO_PASSWORD=your_api_password --transport stdio dataforseo -- npx dataforseo-mcp-server@latestTwo cautions. Commands can end up in your shell history, so the hosted OAuth route is cleaner. And never use --scope project here: project servers are saved to a .mcp.json file that teams commit, credentials included.
To test it, ask Claude to “list the DataForSEO Backlinks API endpoints”; it should call docs_index. If your app differs from what I describe, the official README is the source of truth.
The session: five prompts on mlforseo.com
For each prompt: the endpoint and request body Claude sent, what came back, and what Claude added. DataForSEO data from 7 November 2026, plus two status checks.
1. “Give me a backlink overview for mlforseo.com”
POST /v3/backlinks/summary/live
{"target": "mlforseo.com", "include_subdomains": true}| Metric | Value on 7 November 2026 |
|---|---|
| Rank (DataForSEO’s 0 to 1,000 PageRank-like score) | 219 |
| Backlinks | 2,611 |
| Referring domains (main domains) | 611 (288) |
| Referring domains with nofollow links | 498 |
| Profile spam score (backlinks_spam_score) | 34 |
| Site’s own spam score (target_spam_score) | 3 |
| Broken backlinks / broken target pages | 33 / 11 |
| Top TLDs of referring links | .com 906, .xyz 743, .website 97, .space 95, .online 93, .site 89 |
Claude’s first read: 1,117 of the referring links come from cheap TLDs (.xyz, .website, .space, .online, .site). And the two spam scores tell different stories. The site itself scores 3; the links pointing at it average 34. The spam is aimed at the site, the site isn’t producing it. Useful to know in the first two minutes.
2. “Who are my strongest referring domains?”
POST /v3/backlinks/referring_domains/live
{"target": "mlforseo.com", "limit": 20, "order_by": ["rank,desc"],
"exclude_internal_backlinks": true}In this endpoint, rank is the rank volume a referring site passes to your target, so a big site linking once can show a small number. The top of the list (288 main referring domains):
| Referring domain | Rank | Backlinks | What Claude made of it |
|---|---|---|---|
| My personal site | 199 | 983 | Owned. Sitewide navigation: 242 header links, 40 footer links, 191 image links |
| Kit (my newsletter archive) | 135 | 157 | Owned content on a newsletter host |
| A content site (unnamed) | 99 | 60 | 30 links in articles, and all 30 flagged as broken (see prompt 3) |
| ipullrank.com | 65 | 12 | Editorial, spam score 1 |
| Five course-listing and course-resale sites | 7 to 52 | 1 to 2 each | Listings of courses, not editorial mentions |
| growthmentor.com | 45 | 3 | Mentor profile |
| A community site I run | 45 | 8 | Related, not independent |
| oncrawl.com | 19 | 4 | Editorial, in the main content |
| moz.com | 2 | 1 | Editorial, in an article |
| Brand-new .xyz, .cyou and .space domains | none | 1 each | First seen 5 to 7 November 2026, spam scores 55 to 90 |
Sorted by rank, my own sites and newsletter host sit on top, because sitewide navigation produces hundreds of links. The editorial links I’m actually pleased about (iPullRank, Oncrawl, Moz) sit lower with modest numbers. Metrics carry no idea of ownership. Claude separated owned, related, editorial and junk links and flagged that a rank-sorted list buries the editorial ones, but it can only spot owned sites if it knows what you own. If you take one habit from this post, make it adding “these domains are mine: …” to your prompts.
3. “Find broken backlinks I could reclaim”
POST /v3/backlinks/backlinks/live
{"target": "mlforseo.com", "mode": "as_is",
"filters": ["is_broken", "=", true],
"order_by": ["domain_from_rank,desc"], "limit": 40}The response was about 59,000 characters for 33 rows, too big for a chat. Claude Code saved it to a file and parsed it (see the first gotcha).
All 33 broken backlinks pointed at just two URLs:
| Target URL | Links | Status DataForSEO recorded | Status on 7 November 2026 |
|---|---|---|---|
| Complete Guide to ML Clustering for Marketing & SEO | 30 | 404 | 200 |
| 30-Day Agent Search Optimization Action Plan | 3 | 404 | 200 |
Claude spotted that the 30 links all come from one content site: the same article about embeddings for marketers, translated into 30 languages, each linking to us in the article body with the anchor “www.mlforseo.com”. One editorial decision, thirty rows.
Then the most useful step of the session: before suggesting redirects, it checked both URLs live. Both returned 200. At some point DataForSEO’s crawler visited while they returned a 404, and the flag stuck. Nothing needed fixing. Had they been broken, speed would matter: John Mueller has said links to 404 pages are dropped. Acting blindly on a stale flag means pointless redirects or an awkward email.
4. “What anchor text do people use to link to me?”
POST /v3/backlinks/anchors/live
{"target": "mlforseo.com", "limit": 25, "order_by": ["backlinks,desc"]}There were 185 distinct anchors. The top, with spam paraphrased (I won’t advertise the seller):
| Anchor | Backlinks | Referring domains | Notes |
|---|---|---|---|
| (empty: image links) | 429 | 10 | Mostly followed |
| Link-seller advert #1 (“SEO backlinks, traffic boost, link indexing”) | 376 | 281 | All nofollow, spam score 61 |
| Link-seller advert #2 (“bulk link posting”) | 359 | 69 | All nofollow, all .xyz |
| Link-seller advert #3 (“best SEO links”) | 295, plus 48 in a variant | 88, plus 23 | All nofollow, all .xyz |
| MLforSEO ✨ | 248 | 1 | My own site’s header |
| www.mlforseo.com | 60 | 1 | The translated articles |
| “High Quality Dofollow Backlinks … PBN Network Service mlforseo.com …” | 26 | 26 | Followed, spam score 63 |
Unprompted, Claude grouped more than 1,100 backlinks into one bucket: link-seller adverts containing our URL, all nofollow. It also picked out 26 followed links advertising PBN backlinks with our domain in the anchor. Nobody at MLforSEO bought any of these. It is unsolicited spam, and it looks frightening in a report.
Google’s position is calm about it. Its December 2022 link spam update describes SpamBrain working to neutralise unnatural links, and the disavow help page says “Most sites will not need to use this tool“. Disavow is for links you (or your SEO) built that risk a manual action. More on that in what to do after the backlink audit.
5. “Find sites that link to two peers but not to me”
POST /v3/backlinks/domain_intersection/live
{"targets": {"1": "jcchouinard.com", "2": "practicaldatascience.co.uk"},
"exclude_targets": ["mlforseo.com"],
"limit": 15,
"filters": [["1.backlinks_spam_score", "<", 30], "and",
["2.backlinks_spam_score", "<", 30]],
"order_by": ["1.rank,desc"]}The classic link gap, and honestly the weakest result of the day: 10 overlapping domains, mostly junk: an app-download page on a free hosting subdomain, a thesis-writing service, a domain valuation site, a decoupage paper shop with 437 nofollow links (205 of them broken), a tech Q&A site and a stray blogspot site. The real prospects were seodepths.com (an SEO blog with a spam score of 1 and links in the main content), platzi.com (an education platform) and habr.com (a developer community, nofollow).
Two lessons. Two niche peers is too few; use three to five. And a raw link-gap list needs a relevance pass before outreach: ask Claude to read titles and judge topical fit, or use embeddings as in the Python post. Spam filters remove the worst rows; they say nothing about relevance.
A prompt library you can copy
Swap in your domains. Each asks for small limits and a summary, which keeps responses and costs small.
| Job | Prompt |
|---|---|
| Overview | “Give me a DataForSEO backlink overview for example.com: rank, backlinks, referring domains, spam scores, broken links, top TLDs. Then the three things that stand out.” |
| Strongest referring domains | “Top 20 referring domains for example.com by rank. These domains are mine: mysite.com, mynewsletter.com. Group the rest into editorial, listings and spam, editorial first.” |
| Spam triage | “Summarise referring domains for example.com with spam score above 50 by pattern (TLD, anchor wording, first seen) and say whether any are followed. Don’t suggest a disavow unless someone clearly built them.” |
| Anchor text distribution | “Top 25 anchors for example.com, grouped into branded, URL, generic, keyword-rich and spam with counts. Flag keyword-rich anchors that look placed.” |
| Broken backlinks | “Broken backlinks to example.com, one per domain, limit 20, grouped by target URL. Check each target’s live status code before suggesting redirects.” |
| Lost links | “Backlinks to example.com lost in the last 90 days, one per domain, limit 20. Is the page gone or the link removed, and which are worth asking about?” |
| Link gap | “Domains linking to at least two of peer1.com, peer2.com, peer3.com, peer4.com but not example.com, spam score under 30. Read the titles and keep only sites relevant to [topic], with a one-line reason each.” |
| Summary for a client or boss | “Write a one-page summary of this analysis for my client: what’s healthy, what’s noise, and three actions for this month. Plain English; say which numbers are third-party estimates.” |
For prompts I didn’t run here (lost links, for example), Claude looks up the endpoint with the docs tools first. Read the request it sends before trusting the answer.
Gotchas and limits
- Oversized responses. 33 backlinks came back as about 59,000 characters. Keep
limitat 10 to 20, usemode: one_per_domainon the backlinks endpoint, and ask Claude for a summary by target URL or by domain. The README also documents a field configuration file that trims responses to the fields you name. - No cost in the response. The server uses DataForSEO’s AI-optimised response format by default, and those responses didn’t include the cost field. Watch spend in your DataForSEO dashboard, or ask Claude to set
noAiModeto true, which uses the standard format (with a cost field) at the price of a bigger response. - Third-party scores. DataForSEO’s rank follows the original PageRank formula on DataForSEO’s own crawl; it is related to PageRank as an idea and is not Google’s number. Its spam score is a heuristic built from 18 on-page and domain signals. Both are estimates.
- Broken and lost flags lag. My 33 “broken” links pointed at pages that were live. Always re-check the status code yourself.
- Metadata isn’t the page. Claude judged sites from anchors, titles, TLDs and scores. It didn’t read the linking pages and can misjudge a good site with an odd name; AI hallucination is still a risk when the data underneath is real.
- Verify before acting. Before you disavow or email anyone, open the linking page and look.
When to move from chat to a notebook
MCP is the fastest way to question one site. It gets clumsy when you want to score hundreds of links the same way every month or track exact costs. Then I switch to the Python notebook, which adds embeddings for relevance. New to the API in code? My DataForSEO API in Python tutorial is a gentler start. For the bigger picture, including why brand mentions now sit alongside links (in Ahrefs’ 75,000-brand study, branded web mentions correlated far more strongly with AI visibility than backlinks did, which is correlation, not proof), head back to the backlink strategy hub or to our course AI Search & LLMs: Entity SEO and Knowledge Graph Strategies for Brands.
FAQ
What is the DataForSEO MCP server?
DataForSEO’s official MCP server. It lets Claude and other MCP apps read DataForSEO’s docs and call any v3 API, including Backlinks. The current v3 has four tools; run it with npx dataforseo-mcp-server@latest or use the hosted OAuth server.
How much does backlink analysis with the DataForSEO MCP server cost?
You pay DataForSEO per request plus per returned row; on 7 November 2026 that was $0.024 per request plus $0.000036 per row, with no monthly minimum since 1 July 2026. Check the pricing page for current prices.
Is it safe to connect my DataForSEO credentials to Claude?
Use the hosted OAuth server if you can. Locally, keep credentials in the config’s env block or environment variables: never in the chat, a committed file or a project .mcp.json.
Can Claude tell me which backlinks to disavow?
It can triage and explain patterns. The decision stays with you: Google says most sites never need to disavow, and Claude only sees metadata. Open the linking pages first.
Is DataForSEO rank the same as Google PageRank?
No. It uses the original PageRank formula on DataForSEO’s own link index, so it is a useful comparative estimate. Google doesn’t publish PageRank values, and no third-party score is a Google metric.
MLforSEO Academy
Take your skills further — pick your path
Semantic ML-enabled Keyword Research
by Lazarina Stoy
Query understanding, search intent and semantic clustering for how people and AI really search.
View course →AI Search Optimisation & Agentic SEO
by Beatrice Gamba
How agentic systems retrieve, evaluate and select — and how to become the source they cite.
View course →AI Search, LLMs, Entity SEO & Knowledge Graph Strategies
by Beatrice Gamba
Build the entity authority and knowledge-graph presence that makes AI recognise and trust your brand.
View course →Introduction to Machine Learning for SEO
by Lazarina Stoy
Ship practical ML workflows — classification, clustering, entity extraction — no CS degree required.
View course →


