Moz Domain Authority Checker & SEO Metrics Scraper avatar

Moz Domain Authority Checker & SEO Metrics Scraper

Pricing

from $6.00 / 1,000 per domain checkeds

Go to Apify Store
Moz Domain Authority Checker & SEO Metrics Scraper

Moz Domain Authority Checker & SEO Metrics Scraper

Check Domain Authority (DA), spam score, backlinks, ranking keywords, and 13 SEO metrics from Moz.com free analysis. No Moz Pro subscription needed. Analyze up to 10 domains per run.

Pricing

from $6.00 / 1,000 per domain checkeds

Rating

5.0

(2)

Developer

seo-scraper

seo-scraper

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

2 days ago

Last modified

Categories

Share

Moz Domain Authority Checker

Extract Domain Authority, spam score, backlinks, ranking keywords, competitors, and 13 total SEO metrics from Moz.com free domain analysis — without needing a Moz Pro subscription or API key.

This lightweight actor uses plain HTTP requests with TLS fingerprint impersonation (no browser), making it fast, cheap, and reliable. Analyze up to 10 domains per run.

What data can you extract?

For every domain the actor returns a structured JSON with 4 core metrics and 9 detailed data arrays:

Core metrics

MetricDescriptionExample
Domain Authority (DA)Moz's 0-100 score predicting how well a site ranks94
Spam ScorePercentage indicating likelihood of being penalized1
Linking Root DomainsUnique root domains that link to the site1,300,000
Ranking KeywordsTotal keywords the domain ranks for in Google9,000,000

Detailed analysis arrays

DataWhat's inside
Top Pages by LinksHighest-authority pages with their Page Authority (PA) scores
Top Linking DomainsMost valuable domains linking to the site with their DA
Discovered & Lost LinksMonthly trend of new and lost linking domains (up to 60 days)
Keywords by Est. ClicksKeywords sorted by estimated organic click volume
Top Ranking KeywordsKeywords where the domain ranks highest
Branded KeywordsBrand-related search terms with monthly volume
Keyword Ranking DistributionBreakdown by rank position (#1-3, #4-10, #11-20, etc.)
Top Search CompetitorsCompeting domains with DA and visibility scores
Top QuestionsRelated questions from "People Also Ask" with relevance scores

Use cases

  • SEO audits — Bulk-check DA and spam scores across your portfolio or client list
  • Competitor research — Compare Domain Authority and keyword overlap with competitors
  • Link building — Find top linking domains and discover new backlink opportunities
  • Content strategy — Identify top-ranking keywords, branded terms, and FAQ questions
  • Due diligence — Evaluate domain quality and spam risk before purchasing or partnering

Input

ParameterTypeDefaultDescription
domainsstring[]required1-10 domains to check. Protocols (https://), www., and trailing slashes are stripped automatically
maxRetriesinteger10Retry attempts per domain. Higher values improve reliability but increase run time
proxyConfigurationobjectResidentialApify proxy configuration. Residential proxies are strongly recommended for bypassing Cloudflare

Example input

{
"domains": ["google.com", "apple.com", "github.com"],
"maxRetries": 10,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Tip: You don't need to clean up your domain list — the actor handles https://www.example.com/path and normalizes it to example.com. Duplicates are automatically removed.

Output

Each domain produces one dataset item with all 13 metrics. All domains are processed concurrently and results are pushed to the dataset immediately as they complete.

Example output (google.com)

{
"success": true,
"domain": "google.com",
"errorCode": null,
"error": null,
"domain_authority": 94,
"spam_score": 1,
"linking_root_domains": 1300000,
"ranking_keywords": 8300000,
"top_pages_by_links": [
{ "link": "https://google.com/", "pa": 90 },
{ "link": "https://google.com/chrome", "pa": 75 },
{ "link": "https://google.com/maps/place/", "pa": 75 },
{ "link": "https://google.com/maps", "pa": 74 }
],
"top_linking_domains": [
{ "domain": "www.google.com", "da": 100 },
{ "domain": "youtube.com", "da": 100 },
{ "domain": "linkedin.com", "da": 99 },
{ "domain": "wordpress.org", "da": 99 }
],
"discovered_and_lost_linking_domains": [
{ "date": "12/14", "discovered": 490, "lost": -142 }
],
"keywords_by_estimated_clicks": [
{ "keyword": "gmail", "visibility": 35688971 }
],
"top_ranking_keywords": [
{ "keyword": "google", "rank": 1 }
],
"branded_keywords": [
{ "keyword": "google", "volume": 50940000 }
],
"keyword_ranking_distribution": [
{ "rank_position": "#1-3", "domain": "google.com", "amount": 1340196 }
],
"top_search_competitors": [
{ "domain": "www.google.com", "da": 100, "visibility": 10.26 }
],
"top_questions": [
{ "question": "How do I access Google Play on Android?", "relevance": 156.49 }
],
"checkTime": "2026-03-27T12:00:00.000Z",
"timeMs": 3200,
"attempts": 1
}

Dataset views

The output dataset includes 5 pre-configured views for easy exploration in the Apify Console:

ViewFields shown
Main MetricsDomain, DA, Spam %, Backlinks, Keywords, Status
Keywords AnalysisTop keywords, keywords by clicks, branded keywords
Backlinks AnalysisLinking domains, top pages, link history
Competitive AnalysisCompetitors, ranking distribution, top questions
Complete DataAll fields

Error handling

When a domain fails, the result still appears in the dataset with success: false and a structured errorCode:

Error codeMeaningWhat to do
CLOUDFLARE_BLOCKEDAnti-bot protection not bypassedTry again with RESIDENTIAL proxy and higher maxRetries
NO_DATAMoz has no metrics for this domainDomain is too new or has no backlinks — this is expected
RATE_LIMITEDFree analysis limit reachedIncrease maxRetries to cycle through more proxy IPs
NETWORK_ERRORConnection timeout or DNS failureCheck domain spelling, retry later
PARSE_ERRORPage loaded but data extraction failedMoz may have changed their page layout — open an issue

How it works

  1. Validates input domains — normalizes URLs, removes duplicates, enforces the 10-domain limit
  2. Configures Apify proxy with residential or datacenter rotation (fresh IP per request)
  3. Fetches all domains concurrently using curl_cffi with Chrome TLS fingerprint impersonation
  4. Detects errors — Cloudflare challenges, rate limit redirects, and "no data" pages before parsing
  5. Parses the HTML using BeautifulSoup, extracting all 13 metric sections from cards, tables, and chart scripts
  6. Retries on failure with exponential backoff (1.5s x attempt, capped at 10s, with random jitter)
  7. Pushes each result to the dataset immediately — no waiting for all domains to finish

No browser required. This actor uses lightweight HTTP requests with ~256 MB RAM, keeping compute costs low.

Integrations

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_API_TOKEN')
run = client.actor('your-username/moz-domain-authority-checker').call(run_input={
'domains': ['example.com', 'competitor.com'],
'maxRetries': 10,
'proxyConfiguration': {
'useApifyProxy': True,
'apifyProxyGroups': ['RESIDENTIAL'],
},
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(f"{item['domain']}: DA={item['domain_authority']}, Spam={item['spam_score']}%")

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('your-username/moz-domain-authority-checker').call({
domains: ['example.com', 'competitor.com'],
maxRetries: 10,
proxyConfiguration: {
useApifyProxy: true,
apifyProxyGroups: ['RESIDENTIAL'],
},
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
console.log(`${item.domain}: DA=${item.domain_authority}, Spam=${item.spam_score}%`);
}

Webhooks and scheduling

  • Set up a webhook to send results to your app, Slack, or Google Sheets when a run completes
  • Use scheduled runs to track Domain Authority changes over time (weekly or monthly)

Cost estimate

ComponentCost
Compute~0.01 USD per domain (256 MB, ~3s per domain)
Residential proxy~0.01-0.03 USD per domain depending on retries
Typical 10-domain run~0.20-0.50 USD total

Save money: Use DATACENTER proxy groups for non-critical checks — it's 5-10x cheaper than residential, though slightly less reliable against Cloudflare.

Limitations

  • 10 domains per run — for larger batches, schedule multiple runs or use the API to chain them
  • Free Moz data only — the actor scrapes Moz's public domain analysis page, not the paid Moz Pro API
  • Rate limits — Moz may throttle requests; the actor handles this with automatic retries and proxy rotation
  • Data freshness — metrics reflect what Moz shows on their free analysis page, which may lag behind Moz Pro data

FAQ

Do I need a Moz account? No. The actor scrapes the free public analysis page at moz.com/domain-analysis.

Why did a domain return NO_DATA? Moz doesn't have metrics for very new domains or domains with no backlinks. This is a Moz limitation, not an actor issue.

Why is Domain Authority different from what I see on Moz? Make sure you're comparing the same domain format. The actor strips www. — so google.com and www.google.com may show different DA values on Moz.

Can I run more than 10 domains? Not in a single run. Use the Apify API or scheduler to chain multiple runs for larger batches.

Changelog

  • v1.0 — Initial release. Browser-based (nodriver), 13 metrics, structured error codes, 10-domain limit.

Support

Found a bug or have a feature request? Open an issue on the actor's page or contact through Apify Console.