Website Backlink Checker & Audit
Pricing
from $150.00 / 1,000 domain reports
Website Backlink Checker & Audit
Check backlinks, referring domains, anchors, link status, spam score, domain rank, and live backlink verification for any website. Export clean SEO audit data for competitor research and backlink analysis.
Pricing
from $150.00 / 1,000 domain reports
Rating
0.0
(0)
Developer
SearchShark Tools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
๐ Website Backlink Checker & Audit
Website Backlink Checker & Audit lets you collect backlinks, referring domains, anchor-text distribution, backlink quality signals, and optional live link status for domains, subdomains, and URLs.
Build backlink reports, prioritize important links, inspect lost-link signals, research competitors, and export structured SEO data without manually checking referring pages one by one.
- ๐ Discover backlinks: retrieve backlink data through a managed upstream Apify backlink provider
- ๐ Audit backlink quality: add deterministic priority scores, bands, recommended actions, and reason codes
- ๐งญ Analyze referring domains: see which domains link to a target and normalize source authority to a stable 0โ100 scale
- ๐ท Analyze anchor text: inspect which anchors appear most often and their observed share
- ๐งช Verify selected links live: optionally fetch referring pages and confirm whether a matching link is currently present
- ๐งน Get cleaner output: normalize targets, remove duplicate targets, deduplicate detailed rows, and enforce per-target output caps
- โก Automate workflows: consume results through Apify Dataset, API, integrations, spreadsheets, databases, monitoring systems, or AI workflows
๐ฆ What data does Website Backlink Checker & Audit return?
The exact fields depend on the selected report type.
| ๐ฏ Target input | ๐ Normalized target |
| ๐งญ Target scope | ๐ Report type |
| ๐ Checked timestamp | ๐งฉ Data source |
| ๐ Provider request ID | โถ๏ธ Actor run ID |
| ๐ Source domain | ๐ Source URL |
| ๐ฐ Source page title | ๐ฏ Target URL |
| ๐ท Anchor text | โ Dofollow status |
| ๐ Source domain rank | โ ๏ธ Backlink spam score |
| ๐ First seen | ๐ Last seen |
| โ Lost status | ๐งช Live verification status |
| โญ Priority score | ๐ฆ Priority band |
| ๐งญ Recommended action | ๐งพ Reason codes |
Unavailable provider fields are returned as
nullor an empty array. The Actor does not invent SEO metrics that the current upstream provider does not expose.
The public dataSource value for the current adapter is:
ApifyUpstream
๐ Features
Website Backlink Checker & Audit is designed for SEO research, backlink monitoring, reclamation, and automation.
- Multiple targets: process up to 20 domains, subdomains, or absolute URLs in one run
- Five report types:
summary,backlinks,audit,anchors, andreferring_domains - Up to 1,000 persisted detail rows per target
- Target normalization: equivalent domain inputs are normalized before processing
- Duplicate-target removal: duplicate normalized targets are not processed twice
- Stable public schema: provider-specific snake_case data is mapped into predictable camelCase records
- Authority normalization: upstream 0โ1000 source-domain authority is converted to a public 0โ100 scale
- Deterministic audit scoring: audit rows receive transparent priority fields instead of a black-box recommendation
- Optional live verification: selected referring pages can be checked at run time
- SSRF-safe verification: private, loopback, link-local, metadata-service, and unsafe redirect destinations are blocked
- Partial-failure protection: one failed target does not erase successful targets from the same run
- Named storage: summaries and errors are kept separately from normal result rows
- Spending guard: the Actor reserves billable capacity before starting provider work for a target
- No customer backlink-provider API key: users do not need to create or configure a separate backlink-data account
- No browser required for live verification: selected pages are fetched with bounded HTTP requests and HTML parsing
โฌ๏ธ Input
You can configure Website Backlink Checker & Audit directly from the Apify Console or send input programmatically through the Apify API.
๐ฏ Targets
Add one or more domains, subdomains, or URLs.
Examples:
example.comblog.example.comhttps://example.org/resources/
Current limits:
Minimum: 1 targetMaximum: 20 targets
Targets are normalized before processing.
Equivalent root-domain inputs can collapse into one normalized target, preventing duplicate work and duplicate billing.
๐ Report type
Supported report types:
summarybacklinksauditanchorsreferring_domains
Default:
audit
summary
Returns a compact backlink-profile overview for each successful target.
backlinks
Returns flat backlink rows.
audit
Returns backlink rows, then adds scoring fields such as:
priorityScorepriorityBandrecommendedActionreasonCodes
Optional live verification can also be enabled for this mode.
anchors
Returns anchor-text distribution rows.
referring_domains
Returns one flat row per observed referring domain.
๐งญ Target scope
Supported values:
root_domainsubdomainexact_url
Default:
root_domain
exact_url requires an absolute HTTP or HTTPS URL.
๐ข Maximum results per target
Controls the maximum number of persisted detail rows returned for each target.
Minimum: 1Default: 100Maximum: 1000
For example:
Targets:example.comexample.orgMaximum results per target:100
can persist up to:
100 detail rows for example.com+100 detail rows for example.org=200 detail rows
The requested number is a maximum, not a guarantee.
Some upstream analysis modes can perform or return more work before the local output cap is applied. The Actor still caps persisted detail rows to
maxResultsPerTarget, but upstream cost may not be strictly proportional to the final row count.
๐ด Backlink status
Controls which backlink state is returned.
livelostall
Default:
live
liveexcludes provider-reported lost backlinks.allincludes available live and lost data.lostis supported only forbacklinksandaudit.
For lost-only backlink and audit reports, the Actor locally keeps rows where isLost = true before applying the final row limit.
lost is rejected for summary, anchors, and referring_domains because those report shapes do not expose enough per-row lost-state data to apply the filter truthfully.
๐งน Backlink grouping
Available values:
as_isone_per_domainone_per_anchor
Default:
one_per_domain
Grouping applies to detailed backlinks and audit output.
The Actor requests a larger candidate pool when necessary, applies the grouping locally, and then enforces maxResultsPerTarget.
as_iskeeps backlink rows as returned.one_per_domainkeeps one backlink per source domain.one_per_anchorkeeps one backlink per anchor text.
summary, anchors, and referring_domains are already aggregate report types, so this setting does not change their rows.
โ Dofollow only
Default: false
When enabled, the current upstream adapter asks the provider to return dofollow backlinks only.
๐ Minimum source domain rank
Public scale:
Minimum: 0Default: 0Maximum: 100
The upstream provider uses a 0โ1000 authority scale.
The Actor translates the public input before the provider call:
Public 80 -> Upstream 800
and normalizes returned authority back to the public scale:
Upstream 800 -> Public 80
This keeps your Dataset output on a predictable 0โ100 scale.
โ ๏ธ Maximum backlink spam score
Minimum: 0Default: 100Maximum: 100
Supported report types:
backlinksauditreferring_domains
The Actor applies this filter locally using backlinkSpamScore before enforcing the final row limit.
It is rejected for summary and anchors, where an equivalent per-row spam-score filter cannot be applied truthfully.
๐ First seen from
Optional format:
YYYY-MM-DD
Default:
null
Supported only for:
backlinksaudit
The Actor filters provider-reported first_seen values locally before applying the final row limit.
It is rejected for the other report types because their current upstream row shapes do not expose equivalent first-seen data.
๐ท Anchor contains
Optional case-insensitive text filter.
Default:
null
Supported report types:
backlinksauditanchors
The Actor applies the filter locally to anchorText before enforcing the final row limit.
It is rejected for summary and referring_domains.
๐งช Verify links live
Default: false
Live verification is available for:
backlinksaudit
When enabled, the Actor fetches selected referring pages and checks whether a matching destination is currently present.
Possible verification states include:
confirmedmissingblockedunreachableunsupported_contentnot_checked
A blocked or unreachable referring page is not automatically classified as a lost link.
Provider-reported state and live verification remain separate signals.
๐ข Maximum links to verify
Minimum: 0Default: 25Maximum: 100
The Actor never verifies more rows than it actually returns.
In audit mode, rows are pre-scored and the highest-priority candidates are selected for verification first.
๐งน Deduplicate results
Default: true
Detailed rows are deduplicated using stable keys appropriate to the report type.
For backlinks, identity is based on normalized link details such as source URL, target URL, anchor text, and link type when available.
โ๏ธ Provider concurrency
Minimum: 1Default: 5Maximum: 10
This controls how many target workflows may call the upstream provider concurrently.
โ๏ธ Verification concurrency
Minimum: 1Default: 3Maximum: 5
This controls concurrent live referring-page checks.
๐ Proxy configuration
An optional Apify proxy can be used for live verification.
The discovery provider call itself runs as a separate Apify Actor call.
Use a verification proxy when selected referring pages block or restrict direct requests.
๐งช Example input โ backlink audit
{"targets": ["example.com","example.org"],"reportType": "audit","scope": "root_domain","maxResultsPerTarget": 100,"backlinkStatus": "live","grouping": "one_per_domain","dofollowOnly": false,"minDomainRank": 20,"maxSpamScore": 70,"verifyLive": true,"maxLinksToVerify": 25,"deduplicateResults": true,"apiConcurrency": 5,"verificationConcurrency": 3}
Inputs that the current upstream adapter cannot faithfully forward are still parsed for compatibility but are documented above as adapter limitations.
โฌ๏ธ Output
The Actor uses structured Apify storage so each output type remains easy to consume.
๐ Default Dataset
The default Dataset contains the requested report records.
For:
summary
the summary record is available as the main result.
For detailed modes:
backlinksauditanchorsreferring_domains
the detailed rows are written to the default Dataset.
๐ Summaries Dataset
A separate summaries Dataset stores the overview row for each successful target.
This is useful because detailed report modes still perform a summary step before collecting detail rows.
Typical summary fields:
recordTypetargetInputtargetNormalizedscopereportTypecheckedAtdataSourceproviderRequestIdrunIddomainRanktotalBacklinksreferringDomainsreferringMainDomainsreferringDomainsNofollowreferringIpsbrokenBacklinksbacklinksSpamScorefirstSeenreturnedRows
Fields not exposed by the current upstream summary mode remain null.
โ ๏ธ Errors Dataset
Target-specific failures are written separately.
Example shape:
{"recordType": "error","targetInput": "invalid target","targetNormalized": null,"errorCode": "INVALID_TARGET","errorMessage": "Invalid target","retryable": false,"attempts": 1,"failedAt": "2026-09-08T05:40:00.000Z"}
Successful targets remain available even when another target fails.
If every target fails, the Actor fails instead of silently reporting a successful empty run.
๐งพ OUTPUT summary
The Actor also writes a compact run summary containing fields such as:
runIddefaultDatasetIdsummariesDatasetIderrorsDatasetIdprocessedTargetsfailedTargetsreturnedRowsverifiedPagesconfirmedLinksmissingLinksduplicateTargetsRemovedproviderCostUsd
This makes it easy for another workflow to inspect the run without reading every Dataset row.
๐ Example summary result
{"recordType": "summary","targetInput": "example.com","targetNormalized": "example.com","scope": "root_domain","reportType": "summary","checkedAt": "2026-09-08T05:40:00.000Z","dataSource": "ApifyUpstream","providerRequestId": "upstream-run-id","runId": "actor-run-id","domainRank": null,"totalBacklinks": 100,"referringDomains": 100,"referringMainDomains": null,"referringDomainsNofollow": null,"referringIps": null,"brokenBacklinks": null,"backlinksSpamScore": 2.5,"firstSeen": null,"returnedRows": 0}
domainRank is intentionally null here because the observed upstream summary exposes an average referring-domain rank, not a true target-domain rank. The Actor does not relabel that metric into something it is not.
๐ Example backlink result
{"recordType": "backlink","targetInput": "example.com","targetNormalized": "example.com","scope": "root_domain","reportType": "backlinks","checkedAt": "2026-09-08T05:40:00.000Z","dataSource": "ApifyUpstream","providerRequestId": "upstream-run-id","runId": "actor-run-id","sourceDomain": "api.druphelp.com","sourceUrl": "https://api.druphelp.com/article","sourceTitle": "Example page","sourceStatusCode": null,"sourceCountry": null,"sourceLanguage": null,"sourcePlatformTypes": [],"targetDomain": "example.com","targetUrl": "http://example.com/dir/file","targetStatusCode": null,"finalTargetUrl": null,"anchorText": "Example","textBefore": null,"textAfter": null,"dofollow": true,"attributes": [],"linkType": null,"semanticLocation": null,"imageUrl": null,"imageAlt": null,"backlinkRank": null,"sourcePageRank": null,"sourceDomainRank": 10,"backlinkSpamScore": 5,"firstSeen": "2024-02-29 07:08:28 +00:00","previousSeen": null,"lastSeen": "2026-09-03 18:03:16 +00:00","isNew": null,"isLost": false,"isBroken": null,"linksOnSourcePage": null,"linksFromSourceDomain": null,"verificationStatus": "not_checked","linkPresentNow": null,"verifiedAt": null,"redirected": null,"priorityScore": null,"priorityBand": null,"recommendedAction": null,"reasonCodes": []}
In audit mode, the priority fields are populated by the Actor's audit layer.
๐ท Example anchor result
{"recordType": "anchor","targetInput": "example.com","targetNormalized": "example.com","scope": "root_domain","reportType": "anchors","checkedAt": "2026-09-08T05:40:00.000Z","dataSource": "ApifyUpstream","providerRequestId": "upstream-run-id","runId": "actor-run-id","anchorText": "link","backlinks": 6,"referringDomains": null,"dofollowBacklinks": null,"firstSeen": null,"lastSeen": null,"sharePercent": 6}
๐ Example referring-domain result
{"recordType": "referring_domain","targetInput": "example.com","targetNormalized": "example.com","scope": "root_domain","reportType": "referring_domains","checkedAt": "2026-09-08T05:40:00.000Z","dataSource": "ApifyUpstream","providerRequestId": "upstream-run-id","runId": "actor-run-id","sourceDomain": "news.example","sourceDomainRank": 10,"backlinks": 3,"dofollowBacklinks": 2,"backlinkSpamScore": 10,"firstSeen": null,"lastSeen": null,"isNew": null,"isLost": null}
โญ Audit priority fields
Audit mode adds:
priorityScorepriorityBandrecommendedActionreasonCodes
Recommended actions can include:
reclaimprotectinvestigatemonitorignore
The audit is deterministic: the same mapped backlink signals produce the same score and recommendation.
The Actor does not automatically recommend disavowing a domain.
๐งช Live verification
When enabled, selected referring pages are fetched at run time.
The verifier:
- validates that the URL is public HTTP or HTTPS
- blocks private and unsafe destination ranges
- revalidates redirects
- caps response size and request duration
- parses link destinations from the returned HTML
- compares normalized destinations against the selected target and scope
- returns one visible verification status
Verification states:
confirmedmissingblockedunreachableunsupported_contentnot_checked
A provider-reported lost backlink and a currently missing backlink are not the same concept.
Use both:
isLostverificationStatus
when investigating reclamation opportunities.
๐งน Deduplication
Targets are normalized before processing.
Detailed records are deduplicated when deduplicateResults is enabled.
The Actor also enforces the requested per-target output cap after mapping upstream rows.
This is especially important for upstream analysis modes that can return more rows than the requested public limit.
โก Performance
Backlink discovery is performed through a managed Apify Actor call, not by launching a browser inside this Actor.
Optional live verification uses bounded HTTP requests and HTML parsing.
This keeps browser overhead out of the normal workflow while still allowing selected links to be checked against the current referring page.
The Actor currently uses:
Node.js 22+TypeScriptApify SDKCheerioundici
๐ก Reliability
The Actor is designed so one target does not destroy the results of another.
If you process:
example.comexample.orgbad-target
and one target fails, successful target results are still written.
The Actor records target-specific errors in the errors Dataset.
If all targets fail, the run fails instead of silently returning an empty success.
Before provider work begins for a target, the billing layer checks whether enough run spending capacity remains for the reserved events.
๐ Security
Customers do not provide a separate backlink-provider username, password, or API key.
The current production runtime uses Apify's Actor-to-Actor call flow for backlink discovery.
Optional live verification includes SSRF protections:
private IP ranges blockedloopback blockedlink-local blockedmetadata-service ranges blockednon-HTTP(S) schemes blockedredirect destinations revalidatedresponse size cappedrequest time capped
Secrets and raw authorization values are not intended to appear in public Dataset records or the final OUTPUT object.
๐ API & integrations
Website Backlink Checker & Audit can be started programmatically through the Apify API.
You can connect results to:
- Google Sheets
- Make
- Zapier
- Airtable
- CRMs
- SEO dashboards
- internal APIs
- data warehouses
- monitoring systems
- AI agents
- MCP workflows
Every run produces structured Dataset rows plus a compact OUTPUT summary.
๐งช CLI example
apify call YOUR_USERNAME/website-backlink-checker -i '{"targets": ["example.com"],"reportType": "audit","maxResultsPerTarget": 100,"verifyLive": false}'
When using Windows PowerShell, a JSON input file is often more reliable than large inline JSON strings.
Example:
$payload = @{targets = @("example.com")reportType = "audit"maxResultsPerTarget = 100verifyLive = $false} | ConvertTo-Json -Compress[System.IO.File]::WriteAllText("$PWD\INPUT.json",$payload,(New-Object System.Text.UTF8Encoding($false)))apify call YOUR_USERNAME/website-backlink-checker -f INPUT.json -o
๐ก Example use cases
โป๏ธ Link reclamation
Run:
reportType = auditverifyLive = true
Then focus on rows where the recommendation and verification signals indicate that a valuable link may deserve restoration work.
Useful fields:
sourceDomainsourceUrlsourceDomainRankbacklinkSpamScoreisLostverificationStatuspriorityScorerecommendedActionreasonCodes
๐ก Protect strong backlinks
Use audit output to find backlinks worth monitoring.
Useful signals:
high sourceDomainRankdofollow = trueverificationStatus = confirmedrecommendedAction = protect
๐ Backlink research
Use backlinks mode to export a flat list of referring pages and target destinations.
This works well for:
SEO auditscompetitive researchlink-profile reviewscontent promotion researchPR research
๐งญ Referring-domain analysis
Use:
reportType = referring_domains
to inspect which domains contribute backlinks.
Useful fields:
sourceDomainsourceDomainRankbacklinksdofollowBacklinksbacklinkSpamScore
๐ท Anchor-text analysis
Use:
reportType = anchors
to understand the observed anchor distribution.
Useful fields:
anchorTextbacklinkssharePercent
๐ Fast profile overview
Use:
reportType = summary
when you only need a compact backlink-profile overview.
This is a useful first pass before deciding which domains need a deeper audit.
โ ๏ธ Current limitations
The Actor intentionally avoids claiming data that the current upstream provider does not expose.
Current limitations include:
No proprietary backlink index owned by this ActorNo Ahrefs, Semrush, or Moz parity claimNo proprietary DR / DA / Authority Score brandingNo automatic Google disavow recommendationNo automatic outreach emailsNo persistent cross-run history in the MVPNo competitor backlink-gap report in the MVPNo browser-rendered verification for JavaScript-only pages
Upstream coverage
Backlink discovery depends on the current managed upstream Apify provider.
Results therefore reflect that provider's:
index coveragecrawl recencyavailable row shapemode behaviorprovider availability
The Actor adds normalization, audit scoring, storage, billing controls, and optional live verification, but it does not claim that its raw discovery coverage is larger than the upstream source.
Upstream mode behavior
Observed upstream behavior can differ by mode.
For example, during migration probes:
- detail
backlinksmode respected a one-row request summarymode used its own analysis limitanchorsmode returned a full anchor distribution even when a one-row limit was requested
The adapter enforces the public output cap locally, but upstream work and cost can occur before that cap.
Current compatibility inputs
The public schema still contains several filters from the earlier provider contract.
The current upstream adapter directly maps:
targetreportType -> upstream outputModemaxResultsPerTargetdofollowOnlyminDomainRanklive status -> exclude lost
Other compatibility fields are not all forwarded upstream yet.
Those fields remain documented in the Input section so users can distinguish the stable public contract from current adapter capabilities.
๐ณ Cost & billing notes
The Actor uses pay-per-event billing guards internally.
Configured event names include:
domain-reportresult-rowverified-page
The final Store price should be based on measured upstream Actor cost plus Apify compute and optional verification/proxy cost.
Upstream charges are not purely per persisted row.
During migration testing, even very small one-target probes had non-zero minimum upstream charges.
For that reason, do not interpret maxResultsPerTarget = 1 as meaning the provider cost will be approximately one row's price.
The price shown in the Apify Store is the customer-facing source of truth after release pricing is finalized.
โ FAQ
Where does the backlink data come from?
Backlink discovery is retrieved through a managed upstream Apify backlink provider.
The public Dataset identifies the source as:
ApifyUpstream
The Actor then maps the upstream data into its own stable output contract.
Do I need my own backlink-provider API key?
No.
Customers do not enter a separate backlink-provider username, password, or API key.
Is this the same as Ahrefs, Semrush, or Moz?
No.
The Actor does not claim equivalent crawl coverage or proprietary metrics.
It provides a commercial workflow around the current upstream backlink source:
bulk targetsnormalized outputaudit scoringoptional live verificationpartial-failure handlingApify storageAPI automation
Why is domainRank sometimes null?
The current upstream summary response exposes an average source-domain rank, not a target-domain authority metric.
The Actor deliberately leaves domainRank as:
null
instead of relabeling an average referring-domain metric as the target's own rank.
Why are many backlink fields null?
The stable public schema is broader than the current upstream row shape.
If the provider does not expose a field such as:
sourceCountrysourceLanguagelinkTypesemanticLocationimageUrlpreviousSeensourceStatusCode
the Actor returns null or an empty array rather than fabricating data.
Why is source domain rank divided by 10?
The current upstream provider uses a 0โ1000 authority scale.
The Actor's public contract uses 0โ100.
Example:
Upstream rank: 800Public sourceDomainRank: 80
Can I verify every backlink live?
You can request up to:
100 live verifications per target
but verification is intentionally limited because every referring-page fetch adds time, network work, and potential proxy cost.
For larger reports, use audit mode and verify only the highest-priority rows.
Does missing mean the backlink is definitely permanently lost?
No.
It means the verifier did not find the matching link in the fetched page at that time.
A page can change, block the request, serve different content, require JavaScript, or later restore the link.
Use verificationStatus together with the provider's isLost signal.
What happens if a referring page blocks the verifier?
The Actor reports a state such as:
blockedunreachableunsupported_content
instead of pretending the backlink is missing.
What happens if one target fails?
Other valid targets continue.
The failed target is written to the errors Dataset.
If every target fails, the Actor run fails.
Can I export the results?
Yes.
Apify Dataset results can be exported in formats supported by the platform, including common workflows such as:
JSONCSVExcelXML
Can I use it through an API?
Yes.
The Actor is designed for both interactive Console runs and programmatic Apify API workflows.
๐งญ Recommended workflow
For most backlink-audit jobs:
- Start with
summaryfor a quick profile overview. - Run
auditonly on targets that need deeper inspection. - Keep
maxResultsPerTargetmodest while validating the target. - Use
minDomainRankto reduce low-authority discovery rows when useful. - Enable
verifyLiveonly when current-page confirmation adds value. - Keep
maxLinksToVerifyfocused on the most important candidates. - Review
isLostandverificationStatusas separate signals. - Export the final Dataset into your SEO, CRM, reporting, or monitoring workflow.
For anchor research, use anchors directly.
For domain-level link-profile analysis, use referring_domains.
๐ฌ Feedback & support
Found a bug or have a feature request?
Use the Actor's Issues tab on Apify.
Useful future additions may include:
Competitor backlink-gap reportsPersistent snapshotsCross-run new/lost change detectionScheduled monitoringAlerts and webhooksMore adapter-side filtersProvider fallback supportDomain-level rollupsAdditional link-opportunity enrichment
๐ Backlink data without the manual checking
Enter your targets, choose a report type, run the Actor, and receive structured backlink data ready for SEO audits, link reclamation, competitor research, reporting, APIs, and automation.
Add live verification only where it creates real value, and use the Actor's audit fields to focus attention on the links that matter most.