# MOZ Scraper (`parsebird/moz-scraper`) Actor

Scrape Moz Domain Authority (DA), Page Authority, Spam Score, linking root domains, ranking keywords, top pages, top linking domains and new/lost links for any website in bulk. Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/moz-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.49 / 1,000 moz data

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### MOZ Scraper

MOZ Scraper checks [Moz](https://moz.com) Domain Authority (DA), Page Authority (PA), Spam Score, linking root domains and ranking keywords for any list of websites, plus Moz's top pages, top linking domains, 60-day new and lost links, and the Moz Top 500 websites list.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Paste hundreds of domains or URLs and get one clean row per site with DA, homepage PA, Spam Score and link counts, or switch on the detailed view for top pages by PA, top linking domains by DA and daily discovered and lost linking domains.
</td>
</tr></table>

<br>

<table>
<tr>
<td colspan="3" style="padding:10px 14px;background:#FFFFFF;border:1px solid #E7E5E4;border-radius:4px 4px 0 0">
<span style="color:#1C1917;font-size:14px;font-weight:700;letter-spacing:0.5px">ParseBird SEO Suite</span>
<span style="color:#78716C;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Authority, traffic, backlink &amp; keyword data</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;border-right:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/ahrefs-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Ahrefs Scraper</a><br>
<span style="color:#78716C;font-size:11px">Domain Rating, backlinks, keywords</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;border-right:none;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/similarweb-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Similarweb Scraper</a><br>
<span style="color:#78716C;font-size:11px">Traffic, ranks, similar sites</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:33%;background:#F5F5F4">
<a href="https://apify.com/parsebird/moz-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">MOZ Scraper</a><br>
<span style="color:#1C1917;font-size:11px;font-weight:600">You are here</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;border-right:none;border-radius:0 0 0 4px;vertical-align:top;width:33%;background:#FFFFFF">
<a href="https://apify.com/parsebird/ubersuggest-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Ubersuggest Scraper</a><br>
<span style="color:#78716C;font-size:11px">Keyword volume, SERP, backlinks</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;border-right:none;vertical-align:top;width:33%;background:#FFFFFF"></td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;border-radius:0 0 4px 0;vertical-align:top;width:33%;background:#FFFFFF"></td>
</tr>
</table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
MOZ Scraper (Apify actor parsebird/moz-scraper) returns Moz Domain Authority data from Moz's free Domain Analysis tool and the Moz Top 500 list. Call it with the Apify API client: client.actor("parsebird/moz-scraper").call(run_input={"urls": ["make.com", "n8n.io"], "include_overview": true, "include_authority": true}). Inputs: urls (array of strings, domains or full URLs, bulk), url (string, one more domain or URL), include_overview (boolean, default true), include_authority (boolean, default false), include_top_500 (boolean, default false), max_top_websites (integer 1-500, default 500). Output: one row per search type per domain with type ("overview", "domain_authority" or "top_500_websites"), domain, url, data_captured_at. overview fields: domain_authority, page_authority (homepage PA), spam_score (percent), linking_root_domains, linking_root_domains_display, ranking_keywords, ranking_keywords_display. domain_authority adds top_pages (page_url, page_authority), top_linking_domains (domain, domain_authority), linking_domains_discovered_lost_history (date, discovered, lost; last 60 days), linking_domains_discovered_60d, linking_domains_lost_60d. top_500_websites has websites_count and websites (rank, domain, linking_root_domains, domain_authority). Failed lookups have an error field and are not charged. API docs: https://apify.com/parsebird/moz-scraper/api. Get a token: https://console.apify.com/settings/integrations
```

### What is MOZ Scraper?

**MOZ Scraper** is a **bulk Moz Domain Authority checker**. It reads the data behind Moz's free [Domain Analysis tool](https://moz.com/domain-analysis) and the [Moz Top 500](https://moz.com/top500) list and returns it as structured JSON, CSV or Excel.

Moz's free tool lets one person check a few sites by hand before it hits a search limit. MOZ Scraper checks **DA, PA and Spam Score for hundreds of domains in one run**, with no Moz account and no API key. It's a lightweight **Moz API alternative** for link-building outreach lists, client prospecting, competitor benchmarks and domain due diligence. Add `make.com` and `n8n.io`, click **Start**, and download the Moz metrics a few seconds later.

### What can MOZ Scraper do?

- 📊 **Domain overview**: Domain Authority, homepage Page Authority, Spam Score, linking root domains and ranking keywords for every domain.
- 🔗 **Domain authority details**: the top pages by Page Authority, the top linking domains by Domain Authority, and how many linking domains Moz discovered and lost each day over the last 60 days.
- 🏆 **Moz Top 500**: Moz's list of the 500 most popular websites with rank, Domain Authority and exact linking root domain counts.
- 📦 **Bulk checks**: paste as many domains or URLs as you like. Full URLs such as `https://blog.apify.com/how-to-scrape-google-reviews/` work too; the host is used and `www.` is dropped.
- 🧾 **Clean numbers**: Moz shows counts like `397.1k`. MOZ Scraper gives you the number (`397100`) and keeps Moz's original text next to it.

As an Apify Actor, MOZ Scraper also comes with [scheduling](https://docs.apify.com/platform/schedules) for monthly DA tracking, a [REST API](https://docs.apify.com/api/v2), [integrations](https://apify.com/integrations) with Google Sheets, Zapier, Make, Slack and webhooks, and exports to JSON, CSV, Excel, XML and HTML.

### What data can you extract from Moz?

| Field | Search type | Description |
|-------|-------------|-------------|
| `domain_authority` | overview, domain_authority | Moz Domain Authority (1–100) |
| `page_authority` | overview, domain_authority | Page Authority of the homepage (1–100), when Moz lists it among the top pages |
| `spam_score` | overview, domain_authority | Moz Spam Score in percent; `null` when Moz shows `--` |
| `linking_root_domains` | overview, domain_authority | Unique domains linking to the site |
| `ranking_keywords` | overview, domain_authority | Keywords the site ranks for in Moz's data |
| `top_pages` | domain_authority | Most linked pages with their Page Authority |
| `top_linking_domains` | domain_authority | Strongest linking domains with their Domain Authority |
| `linking_domains_discovered_lost_history` | domain_authority | Daily discovered and lost linking domains, last 60 days |
| `linking_domains_discovered_60d` / `linking_domains_lost_60d` | domain_authority | 60-day totals of the daily series |
| `websites` | top_500_websites | Rank, domain, linking root domains and DA of Moz's top 500 sites |

### How to check Domain Authority in bulk with MOZ Scraper

1. Open [MOZ Scraper](https://apify.com/parsebird/moz-scraper) in Apify Console.
2. Paste your websites into **Domains or URLs**, one per line. Bare domains and full URLs both work.
3. Keep **Domain overview** on for DA, PA and Spam Score. Switch on **Domain authority details** for top pages, top linking domains and new and lost links.
4. Switch on **Moz Top 500 websites** if you also want Moz's list of the most popular sites.
5. Click **Start**.
6. Download the results from the **Output** tab as JSON, CSV, Excel, XML or HTML, or read them through the [API](https://apify.com/parsebird/moz-scraper/api).

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `urls` | array of strings | No\* | — | Domains or URLs to check, e.g. `make.com`, `https://www.n8n.io` |
| `url` | string | No\* | — | One more domain or URL |
| `include_overview` | boolean | No | `true` | DA, homepage PA, Spam Score, linking root domains, ranking keywords |
| `include_authority` | boolean | No | `false` | Overview fields plus top pages, top linking domains, 60-day new and lost links |
| `include_top_500` | boolean | No | `false` | Moz Top 500 websites as one row |
| `max_top_websites` | integer | No | `500` | How many sites from the Top 500 to include |

\* Overview and domain authority need at least one domain or URL. The Top 500 list needs neither.

```json
{
    "urls": ["zapier.com", "https://www.n8n.io", "https://blog.apify.com/how-to-scrape-google-reviews/"],
    "include_overview": true,
    "include_authority": true
}
```

### Output example

An overview row and a domain authority row (lists shortened):

```json
[
  {
    "data_captured_at": "2026-10-07T13:09:12.402871",
    "type": "overview",
    "domain": "zapier.com",
    "url": "zapier.com",
    "domain_authority": 81,
    "page_authority": 75,
    "spam_score": 2,
    "linking_root_domains": 120400,
    "linking_root_domains_display": "120.4k",
    "ranking_keywords": 247300,
    "ranking_keywords_display": "247.3k"
  },
  {
    "data_captured_at": "2026-10-07T13:09:08.137604",
    "type": "domain_authority",
    "domain": "openai.com",
    "url": "openai.com",
    "domain_authority": 92,
    "page_authority": 80,
    "spam_score": 2,
    "linking_root_domains": 397100,
    "linking_root_domains_display": "397.1k",
    "ranking_keywords": 43700,
    "ranking_keywords_display": "43.7k",
    "top_pages": [
      { "page_url": "chat.openai.com/", "page_authority": 81 },
      { "page_url": "openai.com/", "page_authority": 80 }
    ],
    "top_linking_domains": [
      { "domain": "linkedin.com", "domain_authority": 99 },
      { "domain": "apple.com", "domain_authority": 99 }
    ],
    "linking_domains_discovered_lost_history": [
      { "date": "2026-08-04T00:00:00", "discovered": 137, "lost": -51 },
      { "date": "2026-10-03T00:00:00", "discovered": 1296, "lost": -496 }
    ],
    "linking_domains_discovered_60d": 53653,
    "linking_domains_lost_60d": -14198
  }
]
```

A Moz Top 500 row (list shortened):

```json
{
  "type": "top_500_websites",
  "websites_count": 500,
  "websites": [
    { "rank": 1, "domain": "www.blogger.com", "linking_root_domains": 31708660, "domain_authority": 100 },
    { "rank": 2, "domain": "www.google.com", "linking_root_domains": 17326580, "domain_authority": 100 }
  ]
}
```

Lost linking domains are negative numbers, as Moz charts them.

### How much does it cost to check Moz Domain Authority?

MOZ Scraper uses pay-per-event pricing. You pay for each result row saved to the dataset. Compute and proxy costs are included in the price.

| Event | Free plan | Bronze | Silver | Gold |
|-------|-----------|--------|--------|------|
| `result` (one search type for one domain) | **$6.99** / 1,000 | **$6.49** / 1,000 | **$5.99** / 1,000 | **$5.49** / 1,000 |

Checking DA, PA and Spam Score for 100 domains is 100 rows, about $0.70 on the Free plan. With domain authority details on as well, it's 200 rows, about $1.40. The Moz Top 500 list counts as one row. Lookups that fail are saved with an `error` field and are not charged. You can set a maximum cost per run in the run options, and the actor stops when it's reached.

### How does MOZ Scraper work?

1. Reads your domains and URLs, takes the host from each and drops `www.`.
2. Loads Moz's public Domain Analysis page once per domain and reuses it for both search types.
3. Retries automatically when Moz's anonymous search limit or bot protection gets in the way.
4. Turns the page into clean fields (numbers instead of `397.1k`, dates on the 60-day chart) and saves one row per search type.

### FAQ

**Do I need a Moz account or Moz API key?**
No. MOZ Scraper uses Moz's free Domain Analysis tool and the public Top 500 page, which work without logging in.

**How is this different from the Moz API?**
The [Moz API](https://moz.com/products/api) needs a Moz account and a token, and its paid plans include keyword metrics and historical data. MOZ Scraper returns what Moz's free Domain Analysis shows: DA, homepage PA, Spam Score, linking root domains, ranking keywords, top 7 pages, top 7 linking domains and the 60-day new and lost links chart. It doesn't return keyword volume or difficulty, MozRank, total backlinks or long-term DA history.

**Why are linking root domains rounded?**
Moz's free tool shows them rounded (for example `397.1k`), so the numbers are only as precise as Moz displays. The original text is kept in `linking_root_domains_display`. The Top 500 list has exact counts.

**What happens with subdomains?**
The subdomain is sent to Moz as you entered it. Domain Authority is a root-domain metric, so `blog.apify.com` and `apify.com` show the same DA. `page_authority` is `null` when Moz doesn't list the subdomain's own homepage among the top pages.

**Why is `spam_score` empty for some sites?**
Moz shows `--` when it has no Spam Score for a domain, often for small or new sites. MOZ Scraper returns `null` in that case.

**How fresh is the data?**
It's what Moz shows at the moment of the run. `data_captured_at` marks when each row was saved. Run it on a [schedule](https://docs.apify.com/platform/schedules) to track DA changes month by month.

**How do I use the MOZ Scraper API in Python?**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/moz-scraper").call(run_input={
    "urls": ["make.com", "n8n.io", "zapier.com"],
    "include_authority": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["type"], item.get("domain"), item.get("domain_authority"), item.get("spam_score"))
```

**How do I use it in JavaScript?**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/moz-scraper').call({
    urls: ['make.com', 'n8n.io'],
    include_overview: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Something is missing or broken. What should I do?**
Open an issue on the [Issues tab](https://apify.com/parsebird/moz-scraper/issues). Feedback and feature requests are welcome.

### Is it legal to scrape Moz?

MOZ Scraper only collects SEO metrics that Moz shows publicly in its free Domain Analysis tool and Top 500 list, without logging in. It doesn't collect personal data. You are responsible for how you use the data, including following Moz's terms and the laws in your jurisdiction. If you're unsure, ask a lawyer. Read more in Apify's post on [whether web scraping is legal](https://blog.apify.com/is-web-scraping-legal/).

### Other ParseBird SEO scrapers

| Actor | What it does |
|-------|-------------|
| [Ahrefs Scraper](https://apify.com/parsebird/ahrefs-scraper) | Domain Rating, backlinks, organic traffic, keyword difficulty and AI visibility from Ahrefs' free tools |
| [SocialBlade Scraper](https://apify.com/parsebird/socialblade-scraper) | Creator stats and growth for YouTube, TikTok, Instagram, Twitch and Facebook |
| [Google Ads Transparency Center Scraper](https://apify.com/parsebird/google-ads-transparency-scraper) | Ads that any advertiser runs on Google |
| [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) | Emails, phones and social links from websites |
| [Pinterest Keywords Discovery Tool](https://apify.com/parsebird/pinterest-keywords-discovery-tool) | Keyword ideas from Pinterest search |

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/moz-scraper/changelog.md

# Actor input Schema

## `urls` (type: `array`):

Websites to analyze. Use a bare domain (<code>make.com</code>) or any URL (<code>https://www.n8n.io</code>, <code>https://blog.apify.com/how-to-scrape-google-reviews/</code>). The host is taken from the URL and <code>www.</code> is dropped. Add as many as you like.

## `url` (type: `string`):

Optional: one more domain or URL, e.g. <code>zapier.com</code>. Handy when you only check one site.

## `include_overview` (type: `boolean`):

Domain Authority, homepage Page Authority, Spam Score, linking root domains and ranking keywords.

## `include_authority` (type: `boolean`):

Everything in the overview plus the top pages by Page Authority, the top linking domains by Domain Authority, and daily discovered and lost linking domains for the last 60 days.

## `include_top_500` (type: `boolean`):

Moz's list of the 500 most popular websites with rank, Domain Authority and linking root domains. Returned as one dataset row. No domain needed.

## `max_top_websites` (type: `integer`):

How many sites of the Top 500 list to include.

## Actor input object example

```json
{
  "urls": [
    "make.com",
    "n8n.io"
  ],
  "include_overview": true,
  "include_authority": false,
  "include_top_500": false,
  "max_top_websites": 500
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "make.com",
        "n8n.io"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/moz-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "urls": [
        "make.com",
        "n8n.io",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("parsebird/moz-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "make.com",
    "n8n.io"
  ]
}' |
apify call parsebird/moz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/moz-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/uFdxbpKySCY3j8MgF/builds/gmEgX0DDQL7oWcf1m/openapi.json
