Free Backlink CheckerFree Backlink Checker
Crawly
All articles
APIBacklinksDevelopers

Free Backlink API: Query Any Domain's Link Profile

Crawly's free backlink API returns referring domains, individual backlinks with quality ratings, and outbound links for any domain. No credit card required.

16 May 2026 · 6 min read

Crawly's free backlink API returns the full link profile for any domain: referring domains, individual backlinks with quality ratings, outbound links, and authority scores. Free API key, no credit card, 100 requests per day.

The backlinks endpoint is designed for developers building link analysis tools, agency dashboards, prospecting scripts, or anything that needs structured backlink data without a paid subscription to Ahrefs, Moz, or Semrush.

What the backlink API returns

A request to /api/v1/backlinks returns the complete backlink profile for a domain:

{
  "domain": "example.com",
  "summary": {
    "referring_domains": 1284,
    "total_links": 9430
  },
  "backlinks": {
    "total": 1284,
    "backlinks": [
      {
        "source_domain": "nytimes.com",
        "link_count": 14,
        "domain_rating": "High",
        "pagerank_rank": 45
      }
    ]
  },
  "outlinks": {
    "total": 312,
    "outlinks": [
      { "target_domain": "github.com", "link_count": 9 }
    ]
  },
  "score": {
    "harmonic_rank": 124500,
    "pagerank_rank": 892000,
    "host_count": 460
  }
}

The response includes:

  • summary: total referring domain count and backlink count
  • backlinks: each referring domain, how many links it sends, its quality rating, and its PageRank rank
  • outlinks: domains the target site links out to
  • score: harmonic rank and PageRank-based authority signals

Getting your free API key

Go to getcrawly.com/api, enter a project name and email address, and your API key is generated instantly. No credit card, no verification email.

Pass the key as a Bearer token in the Authorization header:

curl "https://www.getcrawly.com/api/v1/backlinks?domain=example.com" \
  -H "Authorization: Bearer crawly_live_your_key"

Or as a query parameter:

curl "https://www.getcrawly.com/api/v1/backlinks?domain=example.com&key=crawly_live_your_key"

Using the backlink API in code

JavaScript

const domain = "example.com";
const key = "crawly_live_your_key";

const res = await fetch(
  `https://www.getcrawly.com/api/v1/backlinks?domain=${domain}`,
  { headers: { Authorization: `Bearer ${key}` } }
);

const data = await res.json();

console.log(`Referring domains: ${data.summary.referring_domains}`);
console.log(`Total links: ${data.summary.total_links}`);

data.backlinks.backlinks.forEach(link => {
  console.log(`${link.source_domain}: ${link.link_count} links (${link.domain_rating})`);
});

Python

import requests

domain = "example.com"
key = "crawly_live_your_key"

res = requests.get(
    "https://www.getcrawly.com/api/v1/backlinks",
    params={"domain": domain},
    headers={"Authorization": f"Bearer {key}"},
)

data = res.json()
print(f"Referring domains: {data['summary']['referring_domains']}")

for link in data["backlinks"]["backlinks"]:
    print(f"{link['source_domain']}: {link['link_count']} links ({link['domain_rating']})")

What you can build with backlink data

Competitor backlink analysis

Pull the backlink profile for a competitor domain and identify which high-quality sites link to them but not to you. Those are your link building targets.

import requests

def get_referring_domains(domain, key):
    res = requests.get(
        "https://www.getcrawly.com/api/v1/backlinks",
        params={"domain": domain},
        headers={"Authorization": f"Bearer {key}"},
    )
    data = res.json()
    return {link["source_domain"] for link in data["backlinks"]["backlinks"]}

key = "crawly_live_your_key"

my_domains = get_referring_domains("mysite.com", key)
competitor_domains = get_referring_domains("competitor.com", key)

link_gaps = competitor_domains - my_domains
print(f"Competitor has {len(link_gaps)} domains linking to them that don't link to you:")
for d in sorted(link_gaps):
    print(f"  {d}")

Backlink quality scoring

Combine the backlinks endpoint with the domain authority endpoint and spam score endpoint to assign a quality score to each referring domain. Flag low-authority or high-spam sources for disavowal consideration.

import requests, time

def score_referring_domains(domain, key):
    backlinks_res = requests.get(
        "https://www.getcrawly.com/api/v1/backlinks",
        params={"domain": domain},
        headers={"Authorization": f"Bearer {key}"},
    ).json()

    scored = []
    for link in backlinks_res["backlinks"]["backlinks"]:
        source = link["source_domain"]
        spam_res = requests.get(
            "https://www.getcrawly.com/api/v1/spam-score",
            params={"domain": source},
            headers={"Authorization": f"Bearer {key}"},
        ).json()

        scored.append({
            "domain": source,
            "links": link["link_count"],
            "rating": link["domain_rating"],
            "spam_score": spam_res["spam_score"],
            "risk": spam_res["risk"],
        })
        time.sleep(0.3)

    return scored

Link monitoring dashboard

Query your backlink profile monthly and store the referring domain count. Track it over time and alert when the count drops significantly, which can indicate lost links worth reclaiming.

Rate limits

Tier Requests per day Reset
Free 100 Every 24 hours

The 100 daily requests cover the domain authority, backlinks, and spam score endpoints combined. For a workflow checking 30 domains across all three endpoints, that is 90 requests: within the free limit in a single run.

Combining endpoints

The same API key works across all three Crawly API endpoints. A full domain analysis in one script:

import requests

def full_domain_report(domain, key):
    headers = {"Authorization": f"Bearer {key}"}
    base = "https://www.getcrawly.com/api/v1"

    da = requests.get(f"{base}/domain-authority", params={"domain": domain}, headers=headers).json()
    bl = requests.get(f"{base}/backlinks", params={"domain": domain}, headers=headers).json()
    sp = requests.get(f"{base}/spam-score", params={"domain": domain}, headers=headers).json()

    return {
        "domain": domain,
        "referring_domains": da["summary"]["referring_domains"],
        "total_links": da["summary"]["total_links"],
        "top_linker": bl["backlinks"]["backlinks"][0]["source_domain"] if bl["backlinks"]["backlinks"] else None,
        "spam_score": sp["spam_score"],
        "spam_risk": sp["risk"],
    }

report = full_domain_report("example.com", "crawly_live_your_key")
print(report)

See the full API reference for complete endpoint documentation, error codes, and response schemas.


Get your free backlink API key at getcrawly.com/api. No credit card. 100 requests per day. No vendor lock-in.

Try it yourself with Crawly

Free to download. No page cap. Claude Code MCP built in.

Download free