# Moz Scraper — Domain Authority, Spam Score & Keywords (`memo23/moz-scraper`) Actor

Get Moz Domain Authority at scale — no Moz Pro subscription. DA, PA, spam score, linking root domains, ranking keywords, top linking domains, top pages & 60-day link history. One report per domain, empty lookups never charged. Export JSON, CSV, or Excel.

- **URL**: https://apify.com/memo23/moz-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** SEO tools, AI, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Moz Scraper — Domain Authority, Spam Score, Backlinks & Keywords (No Login)

Scrape **Moz's free domain-analysis SEO metrics** for any list of domains — **no Moz account, no Moz Pro subscription, no login**. Give it domains or URLs and get back **Domain Authority (DA)**, **Spam Score**, **linking root domains**, **ranking keywords**, **top linking domains**, **top pages**, and a **60-day link-acquisition history** — one clean structured record per domain. You only pay for domains that return data.

![How Moz Scraper Works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-moz.png)

### Why use this Moz Scraper?

- **No Moz account required.** Skip the sign-up, the seat limits, and the Moz Pro paywall — paste domains and pull metrics.
- **Bulk by design.** Feed one domain or thousands; each is de-duplicated and processed in parallel.
- **You never pay for empty lookups.** Domains that return no data are skipped and never billed.
- **Clean, export-ready output.** Structured JSON, CSV, or Excel — ready for dashboards, BI tools, and prospecting sheets.
- **Handles the hard part for you.** Anti-bot protection is handled internally — no captchas, no proxies to configure.

### What it does

For every domain you submit, this Actor pulls the public Moz domain-analysis report and returns:

- **Domain Authority (DA)** — Moz's 0–100 score predicting ranking strength.
- **Spam Score** — the percentage risk signal.
- **Linking Root Domains** — count of unique referring domains.
- **Ranking Keywords** — total keywords the domain ranks for.
- **Top Linking Domains** — the strongest referring domains, each with its own DA.
- **Top Pages** — the domain's strongest pages, each with a Page Authority (PA).
- **60-Day Link History** — discovered vs. lost linking domains over the last ~60 days.

### Supported inputs

| Input | Example | Notes |
|---|---|---|
| Bare domain | `apify.com` | Simplest form |
| Full URL | `https://www.stripe.com/pricing` | Scheme + path are stripped to the host |
| Subdomain | `blog.example.com` | Kept as its own target |
| Bulk list | `["a.com","b.com", …]` | De-duplicated; billed once per unique host |

### Use cases

- **Link-building & outreach** — bulk-qualify prospect domains by DA and Spam Score before you pitch.
- **SEO audits** — snapshot DA, linking root domains, and ranking-keyword counts across a portfolio or client list.
- **Lead scoring & enrichment** — append authority signals to a CRM or prospect matrix.
- **Competitive research** — compare authority and top-linking-domain profiles across competitors.
- **Content & PR planning** — spot the strongest pages and referring domains worth targeting.

### How it works

1. **You submit domains** — any mix of hosts, URLs, or a bulk list.
2. **The Actor fetches Moz's free domain-analysis page** for each (Cloudflare protection is handled automatically — no login, no captcha on your side).
3. **Metrics are parsed into one clean record per domain** and streamed to the dataset as they complete.

### Input configuration

| Field | Type | Default | Description |
|---|---|---|---|
| `domains` | array | — | Domains or URLs to analyze (required). |
| `includeTopLinkingDomains` | boolean | `true` | Include the top linking domains list (with per-domain DA). |
| `includeTopPages` | boolean | `true` | Include the top pages list (with per-page PA). |
| `includeLinkHistory` | boolean | `true` | Include the 60-day discovered/lost link history. |
| `maxItems` | integer | `10000` | Cap on domains processed (and billable results). |
| `maxConcurrency` | integer | `5` | Parallel domain lookups. |
| `requestTimeoutMs` | integer | `90000` | Per-request timeout before a retry. |
| `maxRequestRetries` | integer | `3` | Retries per domain before it's skipped (never billed). |
| `proxy` | object | off | Optional — usually unnecessary. |

### Output sample

```json
{
  "input": "apify.com",
  "domain": "apify.com",
  "domainAuthority": 50,
  "pageAuthority": null,
  "spamScore": 3,
  "linkingRootDomains": 9900,
  "rankingKeywords": 30900,
  "topLinkingDomains": [
    { "domain": "youtube.com", "da": 100 },
    { "domain": "wordpress.org", "da": 98 }
  ],
  "topPages": [
    { "url": "apify.com/", "pa": 57 },
    { "url": "www.apify.com/", "pa": 52 }
  ],
  "linkHistory": [
    { "date": "05/12", "discovered": 15, "lost": -3 },
    { "date": "05/13", "discovered": 38, "lost": -5 }
  ],
  "checkedAt": "2026-07-13T00:00:00.000Z",
  "source": "moz"
}
````

### Key output fields

| Field | Description |
|---|---|
| `domainAuthority` | Moz Domain Authority, 0–100. |
| `spamScore` | Moz Spam Score (percentage risk signal). |
| `linkingRootDomains` | Count of unique referring domains. |
| `rankingKeywords` | Count of ranking keywords. |
| `topLinkingDomains[]` | Strongest referring domains, each with `da`. |
| `topPages[]` | Strongest pages, each with `pa`. |
| `linkHistory[]` | 60-day `discovered` / `lost` linking-domain trend. |
| `checkedAt` | ISO timestamp of the lookup. |

### FAQ

**Do I need a Moz account or API key?** No. This Actor reads Moz's public free domain-analysis tool — no account, key, or subscription.

**Is `pageAuthority` always filled?** Moz shows a single scalar Domain Authority but exposes Page Authority per page — so top-level `pageAuthority` is often `null`, while each entry in `topPages[]` carries its own `pa`.

**What happens for a domain Moz has no data on?** You get a low/empty result, and if Moz returns nothing usable the domain is skipped and **not billed**.

**How fast is it?** Roughly a few seconds per domain, run in parallel up to your `maxConcurrency`.

**Can I get competitors and full keyword lists?** Moz gates those behind a login on its own site, so this Actor returns the rich free-view field set (DA, Spam, linking domains, ranking-keyword counts, top linking domains, top pages, link history).

### Support

Found a bug or need a field added? Open an issue on the Actor's **Issues** tab and we'll take a look.

### ⚠️ Disclaimer

This Actor collects **publicly available** information from Moz's free domain-analysis tool. It does not log in, bypass authentication, or access any private, paid, or account-gated Moz data. "Moz", "Domain Authority", "Page Authority", and "Spam Score" are trademarks of Moz, Inc.; this Actor is independent and not affiliated with, endorsed by, or sponsored by Moz. Metrics are Moz's estimates. Use the data in compliance with Moz's terms and all applicable laws; you are responsible for how you use it.

### SEO Keywords

Moz scraper, Moz API alternative, Domain Authority checker, bulk DA checker, Moz DA PA scraper, spam score checker, linking root domains, ranking keywords scraper, Moz domain analysis, free SEO metrics, backlink authority checker, bulk domain authority, Moz Link Explorer scraper, SEO data extraction, domain authority API, page authority checker.

# Actor input Schema

## `domains` (type: `array`):

One or more domains or URLs to analyze on Moz. Any format works — 'apify.com', 'https://www.apify.com/blog', or 'sub.example.com' — each is normalized to its host. Duplicates that resolve to the same host are looked up (and billed) once.

## `includeTopLinkingDomains` (type: `boolean`):

Include the list of top linking domains, each with its own Domain Authority.

## `includeTopPages` (type: `boolean`):

Include the top pages of the domain, each with its Page Authority.

## `includeLinkHistory` (type: `boolean`):

Include the 60-day discovered vs lost linking-domains history.

## `maxItems` (type: `integer`):

Maximum number of domains to process (also caps billable results).

## `maxConcurrency` (type: `integer`):

How many domain lookups to run in parallel.

## `requestTimeoutMs` (type: `integer`):

Per-request timeout in milliseconds before a lookup is retried.

## `maxRequestRetries` (type: `integer`):

How many times to retry a single domain on a network or unlocker failure before skipping it (skipped domains are never billed).

## `proxy` (type: `object`):

Optional. Usually unnecessary — egress and the Cloudflare challenge are handled internally.

## Actor input object example

```json
{
  "domains": [
    "apify.com",
    "stripe.com"
  ],
  "includeTopLinkingDomains": true,
  "includeTopPages": true,
  "includeLinkHistory": true,
  "maxItems": 10000,
  "maxConcurrency": 5,
  "requestTimeoutMs": 90000,
  "maxRequestRetries": 3,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "domains": [
        "apify.com",
        "stripe.com"
    ],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/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 = {
    "domains": [
        "apify.com",
        "stripe.com",
    ],
    "proxy": { "useApifyProxy": False },
}

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

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

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

```

## CLI example

```bash
echo '{
  "domains": [
    "apify.com",
    "stripe.com"
  ],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call memo23/moz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/moz-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Moz Scraper — Domain Authority, Spam Score & Keywords",
        "description": "Get Moz Domain Authority at scale — no Moz Pro subscription. DA, PA, spam score, linking root domains, ranking keywords, top linking domains, top pages & 60-day link history. One report per domain, empty lookups never charged. Export JSON, CSV, or Excel.",
        "version": "0.0",
        "x-build-id": "lYFw1fGGACyB4doEd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~moz-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-moz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/memo23~moz-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-moz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/memo23~moz-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-moz-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "domains"
                ],
                "properties": {
                    "domains": {
                        "title": "Domains or URLs",
                        "type": "array",
                        "description": "One or more domains or URLs to analyze on Moz. Any format works — 'apify.com', 'https://www.apify.com/blog', or 'sub.example.com' — each is normalized to its host. Duplicates that resolve to the same host are looked up (and billed) once.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeTopLinkingDomains": {
                        "title": "Top linking domains",
                        "type": "boolean",
                        "description": "Include the list of top linking domains, each with its own Domain Authority.",
                        "default": true
                    },
                    "includeTopPages": {
                        "title": "Top pages",
                        "type": "boolean",
                        "description": "Include the top pages of the domain, each with its Page Authority.",
                        "default": true
                    },
                    "includeLinkHistory": {
                        "title": "Link history (60 days)",
                        "type": "boolean",
                        "description": "Include the 60-day discovered vs lost linking-domains history.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of domains to process (also caps billable results).",
                        "default": 10000
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many domain lookups to run in parallel.",
                        "default": 5
                    },
                    "requestTimeoutMs": {
                        "title": "Request timeout (ms)",
                        "minimum": 10000,
                        "type": "integer",
                        "description": "Per-request timeout in milliseconds before a lookup is retried.",
                        "default": 90000
                    },
                    "maxRequestRetries": {
                        "title": "Max retries per domain",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many times to retry a single domain on a network or unlocker failure before skipping it (skipped domains are never billed).",
                        "default": 3
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. Usually unnecessary — egress and the Cloudflare challenge are handled internally."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
