Docs — Backlinks API
DomDetailer Logo DomDetailer

Backlinks API [beta]

Returns a backlink sample (up to 5,000 rows) for a domain with anchor text, NF/DF status, source URL, target URL, and a handy metrics summary.

At a glance
  • Backlink rows include: anchor, title, nf (nofollow=1, dofollow=0), source, target.
  • Top-level metrics summarize the domain’s link profile (links in/out, page count, DF/NF split, ref domains, EDU/GOV).
  • Up to 5,000 rows per call (order is not guaranteed).
  • 3 credits per request; balance can be checked via the v2 balance endpoint.

What you get

Each API call for backlinks will consume 3 credits and return all of the data below.

Backlinks array
  • anchor — visible link text (falls back to title if empty).
  • nf1 for nofollow, 0 for dofollow.
  • source — page where the link lives.
  • target — destination URL on your domain.
Metrics summary
  • links_in, links_out, page_count
  • backlinks_follow, backlinks_nofollow, nofollow_ratio
  • ref_domains, links_from_edu, links_from_gov

Endpoint

GET /api2/backlinks.php?apikey=YOUR_KEY&app=YourApp&domain=example.com

Replace the base with your environment (e.g., https://your-website-link-here.com in staging, https://domdetailer.com in production).

Parameters

  • apikey (required) — Your account API key.
  • app (required) — Identifier for your integration (e.g., YourApp).
  • domain (required) — Target domain (no protocol). We normalize common prefixes (e.g., strip www.).
  • onePerDomain (optional)1 to return at most one backlink per referring domain (de-dupe); omit or 0 for full sample.

Example response

{
  "domain": "domdetailer.com",
  "metrics": {
    "page_count": 364,
    "links_in": 504,
    "links_out": 2114,
    "backlinks_follow": 469,
    "backlinks_nofollow": 35,
    "nofollow_ratio": 6.9,
    "ref_domains": 215,
    "links_from_gov": 0,
    "links_from_edu": 0
  },
  "backlinks": [
    {
      "anchor": "Domdetailer.com",
      "title": "Domdetailer.com",
      "nf": 1,
      "source": "https://bestfew.com/elementor-test/",
      "target": "https://domdetailer.com/"
    },
    {
      "anchor": "DomDetailer Homepage",
      "title": "https://domdetailer.com/",
      "nf": 0,
      "source": "https://docu.gsa-online.de/proxy_scraper/url_metrics?bootswatch-theme=paper",
      "target": "https://domdetailer.com/"
    }
  ]
}

Response schema (summary)

{
  "domain": string,
  "metrics": {
    "page_count": number,
    "links_in": number,
    "links_out": number,
    "backlinks_follow": number,
    "backlinks_nofollow": number,
    "nofollow_ratio": number,   // percentage (0–100)
    "ref_domains": number,
    "links_from_gov": number,
    "links_from_edu": number
  },
  "backlinks": [
    {
      "anchor": string,         // may be empty; fall back to title
      "title": string,          // page title of source
      "nf": 0|1,                // 1 = nofollow, 0 = dofollow
      "source": string,         // URL of page that links to you
      "target": string          // destination URL on your domain
    }
  ]
}

Code examples

// curl
curl -G https://your-website-link-here.com/api2/backlinks.php \
  --data-urlencode "apikey=YOUR_KEY" \
  --data-urlencode "app=YourApp" \
  --data-urlencode "domain=example.com" \
  --data-urlencode "onePerDomain=1"
// PHP
$params = [
  'apikey' => 'YOUR_KEY',
  'app'    => 'YourApp',
  'domain' => 'example.com',
  'onePerDomain' => 1,
];
$resp = file_get_contents('https://your-website-link-here.com/api2/backlinks.php?'.http_build_query($params));
$data = json_decode($resp, true);
// Python (requests)
import requests
params = dict(apikey='YOUR_KEY', app='YourApp', domain='example.com', onePerDomain=1)
r = requests.get('https://your-website-link-here.com/api2/backlinks.php', params=params, timeout=60)
data = r.json()
// Node.js (fetch)
const u = new URL('https://your-website-link-here.com/api2/backlinks.php');
Object.entries({apikey:'YOUR_KEY',app:'YourApp',domain:'example.com',onePerDomain:1})
  .forEach(([k,v])=>u.searchParams.set(k,v));
const res = await fetch(u);
const data = await res.json();
// jQuery
$.getJSON('/api2/backlinks.php', {
  apikey:'YOUR_KEY',
  app:'YourApp',
  domain:'example.com',
  onePerDomain:1
}).done(function(data){ console.log(data); });

Errors

Uses standard HTTP codes; body contains a small JSON error object.

HTTP/1.1 400 Bad Request
{"error":"missing_parameter","message":"domain is required"}
HTTP/1.1 401 Unauthorized
{"error":"invalid_api_key","message":"API key not found or inactive"}
  • 400 — invalid/missing parameter
  • 401 — API key missing/invalid
  • 402 — out of credits
  • 429 — too many requests
  • 5xx — transient server error

Usage tips & best practices

  • Normalize inputs: send bare domains (e.g., example.com), not full URLs.
  • De-dup quickly: use onePerDomain=1 when you just need one backlink per referring domain.
  • Cache & throttle: respect 429s and cache recent pulls to save credits.
  • Pair with v2 domain stats: call API v2 for Moz/Majestic/Pretty summaries alongside backlink rows.
Web tools

Prefer a UI? Use the online tools (same data under the hood): Backlinks Tool · Domain Stats Tool.