# SEO Suite — DR, Traffic, AI Visibility & Google (`memo23/seo-intelligence-suite`) Actor

One row per domain with what an SEO audit needs: Ahrefs Domain Rating, backlinks and referring domains, organic traffic and its value, AI-search citations across ChatGPT, Gemini, Perplexity and Google AI, plus Google presence. One flat price per domain, no per-lookup billing. JSON, CSV, Excel.

- **URL**: https://apify.com/memo23/seo-intelligence-suite.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** SEO tools, AI, Agents
- **Features:** Limited permissions
- **Stats:** 30 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $25.00 / 1,000 domain reports

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

## SEO & AI-Search Intelligence Suite

Profile any domain across **every source in one call** — Ahrefs **Domain Rating & backlinks**, **organic traffic**, **AI-search visibility** (ChatGPT, Gemini, Perplexity, Copilot, Grok, Google AI), and **Google presence** — fused into a single intelligence report per domain. No accounts, no keys. Built for agencies and dashboards.

![How the SEO Intelligence Suite works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-seo-suite.png)

### Why use the Suite?

- **One call, four sources.** Ahrefs authority + traffic, AI-search visibility, and Google presence — fused into a single row per domain. No stitching six tools together.
- **Built for agencies.** Audit or benchmark a portfolio of domains in one run and pipe the unified report straight into a dashboard or sheet.
- **No accounts, no keys.** Every source runs account-free, with nothing to set up.
- **Modular.** Turn any source off to cut cost and time — you only pay per domain, not per source.
- **Graceful.** If one source is momentarily unavailable, the report still returns with the others (a `sources` field records what landed).

### What you get per domain

| Dimension | Fields |
|---|---|
| **Ahrefs authority** | Domain Rating, total backlinks, referring domains |
| **Organic traffic** | Estimated monthly organic traffic and its value |
| **AI-search visibility** | Total AI citations + the top AI engine citing the brand |
| **Google presence** | The domain's top-ranking page (`site:` search) |

Optional detail rows expand each dimension (per-AI-model citations, Google top pages, Ahrefs top traffic pages).

### Supported inputs

- **Domains** — e.g. `apify.com`, `notion.so`. Add several to profile a whole portfolio in one run.

### Use cases

- **Agency audits** — one unified snapshot of a client's or prospect's whole search footprint.
- **Competitive benchmarking** — profile a set of rivals and compare authority, traffic, and AI visibility side by side.
- **Lead qualification** — score a list of domains by DR + traffic + AI presence before outreach.
- **Dashboards** — a single clean per-domain record to feed a BI tool or Google Sheet.
- **GEO + SEO in one** — track traditional search strength *and* AI-search visibility together.

### How it works

1. **Input** — provide one or more domains and choose which sources to include.
2. **Processing** — for each domain the Suite collects every source you turned on: Ahrefs (Domain Rating, backlinks, traffic), AI-search visibility, and Google `site:` presence. Failed lookups are retried automatically, and a slow source never holds up the rest of the report.
3. **Output** — everything is fused into one `domain_intelligence` row (plus optional detail rows), ready to export.

### Input configuration

| Field | Type | Description |
|---|---|---|
| `domains` | array | Domains to profile. |
| `country` | string | Two-letter country for traffic & Google (default `us`). |
| `language` | string | Two-letter language for Google (default `en`). |
| `includeAhrefs` | boolean | Ahrefs authority (DR + backlinks). Default on. |
| `includeTraffic` | boolean | Organic-traffic overview. Default on. |
| `includeAiVisibility` | boolean | AI-search visibility. Default on. |
| `includeGoogle` | boolean | Google `site:` presence. Default on. |
| `includeDetails` | boolean | Also emit per-module detail rows. Default off. |
| `maxItems` | integer | Hard cap on total output rows. |
| `maxConcurrency` | integer | Parallel domains (default 2). |
| `proxy` | object | Proxy for the Ahrefs and AI-visibility sources. Residential proxies recommended; the default works out of the box. |
| `serpProxy` | object | Proxy for the Google source. The default works out of the box. |

#### Example input

```json
{
  "domains": ["apify.com", "notion.so"],
  "country": "us",
  "includeAhrefs": true,
  "includeTraffic": true,
  "includeAiVisibility": true,
  "includeGoogle": true
}
```

### Output sample

**Domain intelligence** (`rowType: "domain_intelligence"`)

```json
{
  "rowType": "domain_intelligence",
  "domain": "apify.com",
  "domainRating": 81,
  "backlinks": 3506789,
  "refDomains": 12425,
  "monthlyOrganicTraffic": 426752,
  "monthlyTrafficValue": 17006538,
  "totalAiCitations": 17223,
  "topAiModel": "Copilot",
  "topAiModelCitations": 311,
  "googleTopPageUrl": "https://status.apify.com/",
  "sources": ["ahrefs", "traffic", "ai_visibility", "google"]
}
```

### Key output fields

| Field | Meaning |
|---|---|
| `domainRating` / `backlinks` / `refDomains` | Ahrefs authority for the domain. |
| `monthlyOrganicTraffic` / `monthlyTrafficValue` | Estimated organic traffic and its value. |
| `totalAiCitations` / `topAiModel` | AI-search visibility: total citations and the leading AI engine. |
| `googleTopPageUrl` | The domain's top-ranking page in Google (`site:` search). |
| `sources` | Which modules returned data for this domain. |

### FAQ

**Do I need any accounts or API keys?** No. Every source runs account-free.

**Where does the data come from?** Ahrefs' free tools (authority, traffic, AI-visibility) and Google Search. It reflects those sources' public coverage.

**How is it billed?** Per domain report — one flat charge per domain, regardless of how many sources you enable. A domain where no source returns any data is not charged. See the Pricing tab.

**What if one source fails?** The report still returns with the other sources; the `sources` field records which ones landed.

**Should I use this or the individual scrapers?** Use the Suite when you want one fused report per domain. Use the standalone **Ahrefs**, **AI Visibility**, or **Google Search** scrapers when you need that source's full depth.

### Support

Found a bug or want a field added? Open an issue on the actor's **Issues** tab in Apify Console.

### Explore more scrapers

- **Ahrefs Scraper** — DR, backlinks, traffic, keywords, SERP & AI visibility.
- **AI Visibility Tracker** — brand citations across ChatGPT/Gemini/Perplexity/Google AI.
- **Google Search Results Scraper** — full SERP with AI Overview, ads, and operators.
- **[Keyword Metrics](https://apify.com/memo23/keyword-metrics)** — Google + Bing volume, CPC, difficulty & intent for 1,000 keywords per run.
- **SemRush / SimilarWeb / Ubersuggest / Moz Scrapers** — the rest of the SEO-data suite.

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/seo-intelligence-suite`).

**Purpose:** Fuse Ahrefs authority + traffic, AI-search visibility, and Google `site:` presence into one intelligence row per domain, from a plain list of domains.

**Minimal input:**

```json
{
  "domains": ["apify.com"],
  "country": "us",
  "language": "en",
  "includeAhrefs": true,
  "includeTraffic": true,
  "includeAiVisibility": true,
  "includeGoogle": true,
  "includeDetails": false,
  "maxItems": 25,
  "maxConcurrency": 2,
  "proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" },
  "serpProxy": { "useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"] }
}
```

**Output:** one `domain_intelligence` row per domain — `rowType`, `domain`, `domainRating`, `backlinks`, `refDomains`, `monthlyOrganicTraffic`, `monthlyTrafficValue`, `totalAiCitations`, `topAiModel`, `topAiModelCitations`, `googleTopPageUrl`, `sources[]`. With `includeDetails: true`, extra per-module detail rows are also emitted.

**Behaviors an agent should know:**

- Set `maxItems` to cap total rows; each domain emits one summary row (plus detail rows when `includeDetails` is on).
- Turn off any of `includeAhrefs` / `includeTraffic` / `includeAiVisibility` / `includeGoogle` to cut cost and time.
- If a source is momentarily unavailable the report still returns with the others; `sources[]` records which landed.
- No accounts or API keys — every source runs account-free.
- `proxy` covers the Ahrefs and AI-visibility sources and `serpProxy` the Google source; the defaults work out of the box.
- Pay-per-event — one flat charge per domain report regardless of how many sources are enabled; a domain where no source returns data is not charged. See the Pricing tab.

### ⚠️ Disclaimer

This actor fuses data made publicly available by Ahrefs' free tools and Google Search. It does not access any account-gated or paid data, and it is not affiliated with, endorsed by, or sponsored by Ahrefs, Google, OpenAI, or any AI provider. Product and brand names are used only to describe the data sources. Use the output in compliance with each source's terms and applicable law (including GDPR/CCPA).

### SEO keywords

SEO intelligence suite, domain intelligence, SEO audit tool, Domain Rating checker, backlink checker, organic traffic checker, AI visibility, AI search visibility, GEO tracker, ChatGPT citations, Google SERP scraper, competitive analysis, domain profiling, agency SEO tool, bulk domain audit, SEO dashboard data, unified SEO report, website intelligence, Apify SEO actor.

# Actor input Schema

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

Domains to profile (e.g. `apify.com`). Each returns one unified intelligence report row (plus optional detail rows).

## `country` (type: `string`):

Two-letter country code for traffic & Google, e.g. `us`, `gb`, `de`.

## `language` (type: `string`):

Two-letter language code for Google, e.g. `en`, `de`.

## `includeAhrefs` (type: `boolean`):

Domain Rating, total backlinks, and referring domains from Ahrefs.

## `includeTraffic` (type: `boolean`):

Estimated monthly organic traffic and its value from Ahrefs.

## `includeAiVisibility` (type: `boolean`):

Total AI citations and the top AI engine (ChatGPT / Gemini / Perplexity / Grok / Google AI) for the domain's brand.

## `includeGoogle` (type: `boolean`):

site:{domain} indexed-results estimate and the domain's top-ranking pages.

## `includeDetails` (type: `boolean`):

Also emit per-module detail rows: per-AI-model citations, Google top pages, and Ahrefs top traffic pages. Off by default (the summary row is always emitted).

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

Hard cap on total rows across all domains.

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

How many domains are profiled in parallel.

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

Proxy for the Ahrefs and AI-visibility sources. Residential proxies recommended. The default works out of the box.

## `serpProxy` (type: `object`):

Proxy for the Google source. The default works out of the box.

## Actor input object example

```json
{
  "domains": [
    "apify.com"
  ],
  "country": "us",
  "language": "en",
  "includeAhrefs": true,
  "includeTraffic": true,
  "includeAiVisibility": true,
  "includeGoogle": true,
  "includeDetails": false,
  "maxItems": 10000,
  "maxConcurrency": 2,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  },
  "serpProxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "GOOGLE_SERP"
    ]
  }
}
```

# 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"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    },
    "serpProxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "GOOGLE_SERP"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/seo-intelligence-suite").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"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
    "serpProxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["GOOGLE_SERP"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/seo-intelligence-suite").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 '{
  "domains": [
    "apify.com"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  },
  "serpProxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "GOOGLE_SERP"
    ]
  }
}' |
apify call memo23/seo-intelligence-suite --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/seo-intelligence-suite"
        }
    }
}
```

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/9h0GbeGQNy6gSfCHd/builds/q4Hl6OGdrFUt0UKys/openapi.json
