Moz Domain Authority Checker
Pricing
from $6.75 / 1,000 domaininfos
Moz Domain Authority Checker
The MOZ Domain Authority API provides comprehensive domain analysis and SEO metrics through a simple REST interface. Analyze any domain to retrieve critical SEO indicators including Domain Authority (DA), Page Authority
Pricing
from $6.75 / 1,000 domaininfos
Rating
1.8
(4)
Developer

Data Collector
Actor stats
6
Bookmarked
89
Total users
13
Monthly active users
9 days ago
Last modified
Categories
Share
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 (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
| Metric | Description | Example |
|---|---|---|
| Domain Authority (DA) | Moz's 0–100 score predicting how well a site ranks | 94 |
| Spam Score | Percentage indicating likelihood of being penalized | 1 |
| Linking Root Domains | Unique root domains that link to the site | 1,300,000 |
| Ranking Keywords | Total keywords the domain ranks for in Google | 9,000,000 |
Detailed analysis arrays
| Data | What's inside |
|---|---|
| Top Pages by Links | Highest-authority pages with their Page Authority (PA) scores |
| Top Linking Domains | Most valuable domains linking to the site with their DA |
| Discovered & Lost Links | Monthly trend of new and lost linking domains (up to 61 months) |
| Keywords by Est. Clicks | Keywords sorted by estimated organic click volume |
| Top Ranking Keywords | Keywords where the domain ranks highest |
| Branded Keywords | Brand-related search terms with monthly volume |
| Keyword Ranking Distribution | Breakdown by rank position (#1-3, #4-10, #11-20, etc.) |
| Top Search Competitors | Competing domains with DA and visibility scores |
| Top Questions | Related 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
| Parameter | Type | Default | Description |
|---|---|---|---|
domains | string[] | required | 1–10 domains to check. Protocols (https://), www., and trailing slashes are stripped automatically |
maxRetries | integer | 10 | Retry attempts per domain. Higher values improve reliability but increase run time |
useProxy | boolean | true | Enable Apify proxy rotation. Strongly recommended for consistent results |
proxyType | string | RESIDENTIAL | RESIDENTIAL for best reliability, DATACENTER for lower cost |
Example input
{"domains": ["google.com", "apple.com", "github.com"],"maxRetries": 10,"useProxy": true,"proxyType": "RESIDENTIAL"}
Tip: You don't need to clean up your domain list — the actor handles
https://www.example.com/pathand normalizes it toexample.com. Duplicates are automatically removed.
Output
Each domain produces one dataset item with all 13 metrics. Results are pushed to the dataset immediately as they complete, so you can monitor progress in real time.
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": 9000000,"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-02-13T22:18:00.000Z","timeMs": 3200,"attempts": 1}
Dataset views
The output dataset includes 5 pre-configured views for easy exploration in the Apify Console:
| View | Fields shown |
|---|---|
| Main Metrics | Domain, DA, Spam %, Backlinks, Keywords, Status |
| Keywords Analysis | Top keywords, keywords by clicks, branded keywords |
| Backlinks Analysis | Linking domains, top pages, link history |
| Competitive Analysis | Competitors, ranking distribution, top questions |
| Complete Data | All fields |
Error handling
When a domain fails, the result still appears in the dataset with success: false and a structured errorCode:
| Error code | Meaning | What to do |
|---|---|---|
CLOUDFLARE_BLOCKED | Anti-bot protection not bypassed | Try again with RESIDENTIAL proxy and higher maxRetries |
NO_DATA | Moz has no metrics for this domain | Domain is too new or has no backlinks — this is expected |
RATE_LIMITED | Free analysis limit reached | Increase maxRetries to cycle through more proxy IPs |
NETWORK_ERROR | Connection timeout or DNS failure | Check domain spelling, retry later |
PARSE_ERROR | Page loaded but data extraction failed | Moz may have changed their page layout — open an issue |
How it works
- Validates input domains — normalizes URLs, removes duplicates, enforces the 10-domain limit
- Configures the Apify proxy pool with round-robin rotation (fresh IP per request)
- Fetches each domain's Moz analysis page using got-scraping with TLS fingerprint impersonation
- Detects Cloudflare challenges, rate limit redirects, and "no data" pages before parsing
- Parses the HTML using JSDOM, extracting all 13 metric sections from cards, tables, and embedded chart scripts
- Retries on failure with exponential backoff (1.5s × attempt, capped at 10s, with random jitter)
- Pushes each result to the dataset immediately — no waiting for all domains to finish
No browser required. Unlike Playwright-based scrapers, this actor uses lightweight HTTP requests with ~256 MB RAM, keeping compute costs low.
Integrations
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('jdtpnjtp/moz-domain-authority-checker').call({domains: ['example.com', 'competitor.com'],maxRetries: 10,useProxy: true,});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}%`);}
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('jdtpnjtp/moz-domain-authority-checker').call(run_input={'domains': ['example.com', 'competitor.com'],'maxRetries': 10,'useProxy': True,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(f"{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
| Component | Cost |
|---|---|
| Compute | ~0.05 USD per domain (256 MB, ~10s per domain) |
| Residential proxy | ~0.01–0.03 USD per domain depending on retries |
| Typical 10-domain run | ~0.5–1.0 USD total |
Save money: Use
DATACENTERproxy type 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
- v2.0 — Complete rewrite. HTTP-only (removed Playwright), 13 metrics, structured error codes, 10-domain limit, round-robin proxy, exponential backoff with jitter.
Support
Found a bug or have a feature request? Open an issue on the actor's page or contact me through Apify Console.