# Ubersuggest Scraper (`memo23/ubersuggest-scraper`) Actor

Scrape Ubersuggest SEO data — keyword volume, CPC, difficulty, intent & global breakdown, SERP results, keyword suggestions, domain ranking keywords, backlinks (overview + full list), top pages, and organic traffic history. Bulk keywords & domains, any country. No account needed. JSON/CSV.

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

## Pricing

from $2.99 / 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.

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

## Ubersuggest Scraper

**Pull Ubersuggest's SEO data into a clean dataset — keywords *and* domains, no Ubersuggest account required.** Give it seed keywords and/or target domains and get back keyword metrics (search volume, CPC, SEO & paid difficulty, search intent, 12-month trend, worldwide volume breakdown), an optional per-keyword **SERP breakdown**, a domain's organic ranking keywords, its backlinks & Domain Authority, and its top traffic pages. Optionally add the premium **traffic overview** (estimated organic traffic, ranking buckets, 12-month history) — no account or cookie needed. JSON or CSV out, billed per result.

#### How it works

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

#### ✨ Why use this scraper?

Doing keyword research at scale? Building SEO dashboards? Sizing up competitors' organic footprint and backlinks? Ubersuggest has the data — this actor turns it into structured rows you can pipe anywhere.

- 🔑 **Keyword metrics** — volume, CPC, competition, **SEO difficulty**, paid difficulty, search intent, a 12-month volume trend, plus **worldwide volume** with a per-country breakdown and a desktop/mobile split, for every seed keyword.
- 🔎 **SERP breakdown (optional)** — for each keyword, every ranking result with its position, result type (organic / AI overview / people-also-ask / …), estimated monthly clicks, Domain Authority, and social shares.
- 💡 **Keyword suggestions (optional)** — related/expansion keywords for each seed, each with its own volume, CPC, competition, SEO/paid difficulty, and intent — keyword-research at scale.
- 🌐 **Domain SEO** — a domain's organic **ranking keywords** (position, type, CPC, volume, landing URL).
- 🔗 **Backlinks & Authority** — Domain Authority, total backlinks, referring domains, follow/nofollow split — plus the **individual backlinks list** (source URL, anchor text, page & domain authority, spam score, first-seen / last-visited dates).
- 📄 **Top pages** — a domain's highest-traffic pages with estimated traffic and social shares.
- 📈 **Traffic overview (premium, on-demand)** — estimated organic traffic, organic/paid keyword counts, ranking buckets (top 1-3 / 4-10 / 11-50 / 51-100), and 12-month traffic history. No account or cookie needed — just enable the option.
- 🪪 **No account needed for the core data** — the keyword/domain/backlink/top-page datasets work with zero credentials.
- 🌍 **Any country & language** — two-letter `country` / `language`, plus Ubersuggest's `locId`.

#### 🎯 Use cases

| Team | What they build |
|------|-----------------|
| **SEO agencies** | Bulk keyword research + competitor domain audits across client portfolios |
| **Content teams** | Keyword-opportunity lists by volume × difficulty × intent |
| **Growth / marketing** | Track a competitor's organic footprint, top pages, and backlink growth |
| **Data teams** | A structured Ubersuggest feed for dashboards and models |
| **Affiliates / publishers** | Find low-difficulty, high-volume keywords at scale |

#### 📥 Inputs

Provide **keywords**, **domains**, or both.

| Input | What you get |
|---|---|
| `keywords` (e.g. `"seo tools"`) | one `keyword` row each — volume, CPC, difficulty, intent, trend, worldwide breakdown — plus `serp_result` rows (`includeSerp`) and `keyword_suggestion` rows (`includeKeywordSuggestions`) |
| `domains` (e.g. `apify.com`) | `domain_keyword` + `backlinks_overview` + `top_page` + `domain_overview` rows, plus the individual `backlink` list when `includeBacklinksList` is on |

Locale via `country` / `language` / `locId`. Toggle the per-keyword SERP dataset with `includeSerp`, and domain datasets with `includeDomainKeywords`, `includeBacklinks`, `includeTopPages`, `includeTrafficOverview`.

#### ⚙️ Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `keywords` | array | `["seo tools","keyword research"]` | Seed keywords for keyword metrics. |
| `domains` | array | `["apify.com"]` | Domains/URLs for ranking keywords, backlinks, top pages. |
| `country` / `language` | string | `US` / `en` | Locale for keyword metrics. |
| `locId` | integer | `2840` | Ubersuggest location id (2840 = US). |
| `includeSerp` | boolean | `false` | Per-keyword SERP results (ranking URLs, position, clicks, DA, social shares). Adds 1 request per keyword. |
| `includeKeywordSuggestions` | boolean | `false` | Per-keyword related/expansion keyword suggestions, each with full metrics. Adds 1 request per keyword. |
| `maxKeywordSuggestions` | integer | `100` | Cap on keyword-suggestion rows per seed keyword. |
| `includeDomainKeywords` / `includeBacklinks` / `includeTopPages` | boolean | `true` | Which domain datasets to pull. |
| `includeBacklinksList` | boolean | `false` | Pull the domain's individual backlinks (source URL, anchor, page/domain authority, spam score, dates). |
| `maxBacklinks` | integer | `100` | Cap on individual backlink rows per domain. |
| `includeTrafficOverview` | boolean | `false` | Premium traffic overview (organic traffic + 25-month history). On-demand; billed as a separate event; fair-use daily limit. |
| `maxDomainKeywords` | integer | `100` | Cap on ranking-keyword rows per domain. |
| `maxItems` | integer | `10000` | Hard cap on total rows. |
| `maxConcurrency` | integer | `3` | Parallel residential sessions. |

#### 📦 Output samples

```json
{ "rowType": "keyword", "keyword": "seo tools", "volume": 49500, "cpc": 22.44,
  "competition": 0.05, "seoDifficulty": 74, "paidDifficulty": 5, "searchIntent": [3],
  "monthlyTrend": { "202601": 33100, "202602": 33100 }, "globalVolume": 110000,
  "globalVolumeBreakdown": { "es:2840": 49500, "hi:2356": 33100, "other": 16600 },
  "desktopShare": 0.9533, "mobileShare": 0.0467, "country": "US", "language": "en" }

{ "rowType": "serp_result", "keyword": "seo tools", "position": 2, "type": "organic",
  "url": "http://backlinko.com/best-free-seo-tools", "title": "12 Best SEO Tools for 2026",
  "domain": "backlinko.com", "estimatedClicks": 12926, "domainAuthority": 71,
  "facebookShares": 767, "pinterestShares": 74 }

{ "rowType": "keyword_suggestion", "seedKeyword": "seo tools", "keyword": "free seo tools",
  "volume": 14800, "cpc": 12.5, "competition": 0.07, "seoDifficulty": 68,
  "paidDifficulty": 9, "searchIntent": [3], "country": "US", "language": "en" }

{ "rowType": "domain_keyword", "domain": "apify.com", "keyword": "youtube downloader",
  "type": "organic", "position": 41, "volume": 823000, "cpc": 3.1, "seoDifficulty": 40,
  "url": "http://apify.com/ssyoutube/youtube-video-downloader" }

{ "rowType": "backlinks_overview", "domain": "apify.com", "domainAuthority": 49,
  "backlinks": 305161, "refDomains": 9184, "followBacklinks": 240404, "nofollowBacklinks": 64757 }

{ "rowType": "backlink", "domain": "apify.com", "sourceUrl": "https://example.com/post",
  "targetUrl": "https://apify.com/store", "anchor": "web scraping tools", "nofollow": false,
  "pageAuthority": 60, "domainAuthority": 100, "spamScore": 2,
  "firstSeen": "2026-05-06", "lastVisited": "2026-06-17" }

{ "rowType": "top_page", "domain": "apify.com", "title": "YouTube Scraper",
  "url": "http://apify.com/streamers/youtube-scraper", "traffic": 8204 }

{ "rowType": "domain_overview", "domain": "apify.com", "organicTraffic": 208298,
  "organicKeywords": 90738, "paidKeywords": 3, "domainAuthority": 49,
  "trafficHistory": { "202407": { "searchTraffic": 88009, "searchKw": 43067,
    "topTier": 605, "secondTier": 2205, "thirdTier": 18834, "fourthTier": 21438 } } }
````

#### 🗂 Key output fields

| Row type | Fields |
|---|---|
| `keyword` | `keyword`, `volume`, `cpc`, `competition`, `seoDifficulty`, `paidDifficulty`, `searchIntent`, `monthlyTrend`, `globalVolume`, `globalVolumeBreakdown`, `desktopShare`, `mobileShare`, `country`, `language` |
| `serp_result` *(opt-in `includeSerp`)* | `keyword`, `position`, `type` (organic / ai\_overview / people\_also\_ask / …), `url`, `title`, `domain`, `estimatedClicks`, `domainAuthority`, social shares |
| `keyword_suggestion` *(opt-in `includeKeywordSuggestions`)* | `seedKeyword`, `keyword`, `volume`, `cpc`, `competition`, `seoDifficulty`, `paidDifficulty`, `searchIntent` |
| `domain_keyword` | `domain`, `keyword`, `type` (organic/paid), `position`, `volume`, `cpc`, `seoDifficulty`, `url`, `path` |
| `backlinks_overview` | `domain`, `domainAuthority`, `backlinks`, `refDomains`, `followBacklinks`, `nofollowBacklinks` |
| `backlink` *(opt-in `includeBacklinksList`)* | `domain`, `sourceUrl`, `targetUrl`, `sourceTitle`, `anchor`, `nofollow`, `pageAuthority`, `domainAuthority`, `spamScore`, `firstSeen`, `lastVisited`, `dateLost` |
| `top_page` | `domain`, `title`, `url`, `traffic`, `backlinks`, `refDomains`, social shares |
| `domain_overview` *(Pro)* | `organicTraffic`, `organicKeywords`, `paidKeywords`, `paidTraffic`, `domainAuthority`, `trafficHistory` (12-mo buckets) |

#### ❓ FAQ

**Do I need an Ubersuggest account?**
No — keyword metrics, the SERP breakdown, domain ranking keywords, backlinks, and top pages all work without any login. Only the optional **traffic overview** needs a session cookie.

**What is the SERP breakdown (`includeSerp`)?**
Turn it on and each keyword also returns its live search-results page — every ranking entry with its position, result type (organic, AI overview, people-also-ask, related searches, …), estimated monthly clicks, Domain Authority, and social shares. It's off by default because it adds one request per keyword.

**What are keyword suggestions (`includeKeywordSuggestions`)?**
Turn it on and each seed keyword also returns a batch of related/expansion keywords — every suggestion with its own search volume, CPC, competition, SEO/paid difficulty, and intent. Ideal for building keyword lists and content briefs at scale. Off by default (adds a request per keyword).

**How do I get the traffic overview?**
Just enable **Traffic overview** in the input — no account, login, or cookie required. It's premium data (billed as a separate event) with a fair-use daily limit; if that limit is reached, every other dataset still returns normally.

**Why residential proxies?**
The free tier has a per-IP daily quota, so the actor rotates residential exits to scale. Sticky residential is required (the default Apify Residential US works out of the box).

**Is this affiliated with Ubersuggest / Neil Patel?**
No — see the disclaimer below.

#### 💬 Support

- Issues / feature requests: the **Issues** tab on the actor's Apify Console page.
- Author: <https://muhamed-didovic.github.io/> · <muhamed.didovic@gmail.com>

#### 🔎 Explore more scrapers

If this was useful, see other scrapers at [memo23's Apify profile](https://apify.com/memo23) — SEO tools, classifieds, real estate, job boards, social media, and more.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Ubersuggest, Neil Patel Digital, NP Digital, or any of their subsidiaries or affiliates. All trademarks are the property of their respective owners. The scraper accesses only data available through Ubersuggest's own front-end; users are responsible for ensuring their use complies with Ubersuggest's Terms of Service and applicable law (GDPR, CCPA, etc.).

***

### SEO Keywords

ubersuggest scraper, scrape ubersuggest, ubersuggest api, neil patel scraper, ubersuggest keyword scraper, keyword research scraper, seo data scraper, keyword volume api, keyword difficulty scraper, domain keywords scraper, backlinks scraper, domain authority checker, organic traffic estimator, competitor seo analysis, serp keyword scraper, ubersuggest alternative api, semrush alternative scraper, ahrefs alternative scraper, bulk keyword research, seo metrics api

# Actor input Schema

## `keywords` (type: `array`):

Seed keywords — each returns search volume, CPC, competition, SEO & paid difficulty, search intent, and a 12-month volume trend.

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

Domains or URLs (e.g. `apify.com`) — each returns its organic ranking keywords, a backlinks/Domain-Authority overview, and top traffic pages.

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

Two-letter country code for keyword metrics, e.g. `US`, `GB`, `DE`.

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

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

## `locId` (type: `integer`):

Ubersuggest's internal location id (2840 = United States). Leave default unless you know the specific id you need.

## `includeSerp` (type: `boolean`):

For each keyword, also pull the live SERP breakdown — every ranking URL with its position, result type (organic / AI overview / people-also-ask / etc.), estimated monthly clicks, domain authority, and social shares. Adds one extra request per keyword.

## `includeKeywordSuggestions` (type: `boolean`):

For each seed keyword, also pull related keyword suggestions — each with its own search volume, CPC, competition, SEO/paid difficulty, and search intent. Great for keyword expansion. Adds one or more requests per keyword.

## `maxKeywordSuggestions` (type: `integer`):

Cap on keyword-suggestion rows collected per seed keyword (when suggestions are enabled).

## `includeDomainKeywords` (type: `boolean`):

Pull the domain's organic ranking keywords (position, CPC, volume, difficulty, landing URL).

## `includeBacklinks` (type: `boolean`):

Pull the domain's Domain Authority, total backlinks, referring domains, and follow/nofollow counts.

## `includeBacklinksList` (type: `boolean`):

Pull the domain's individual backlinks — each with its source page URL, target URL, anchor text, follow/nofollow, page & domain authority, spam score, and first-seen / last-visited dates.

## `maxBacklinks` (type: `integer`):

Cap on individual backlink rows collected per domain (when the backlinks list is enabled).

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

Pull the domain's highest-traffic pages (URL, title, estimated traffic, social shares).

## `includeTrafficOverview` (type: `boolean`):

Pull the domain's traffic overview — estimated organic traffic, organic/paid keyword counts, ranking buckets (top 1-3 / 4-10 / 11-50 / 51-100), and 12-month traffic history. Premium data billed as a separate event; off by default. Subject to a fair-use daily limit — if reached, the rest of your data still returns.

## `maxDomainKeywords` (type: `integer`):

Cap on ranking-keyword rows collected per domain.

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

Hard cap on the total number of rows across all keywords and domains.

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

How many residential sessions run in parallel. Each session has a per-IP daily report budget, so the actor rotates exits automatically.

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

Sticky residential proxies are required (the access token is bound to the exit IP). Defaults to Apify Residential, US.

## Actor input object example

```json
{
  "keywords": [
    "seo tools",
    "keyword research"
  ],
  "domains": [
    "apify.com"
  ],
  "country": "US",
  "language": "en",
  "locId": 2840,
  "includeSerp": false,
  "includeKeywordSuggestions": false,
  "maxKeywordSuggestions": 100,
  "includeDomainKeywords": true,
  "includeBacklinks": true,
  "includeBacklinksList": false,
  "maxBacklinks": 100,
  "includeTopPages": true,
  "includeTrafficOverview": false,
  "maxDomainKeywords": 100,
  "maxItems": 10000,
  "maxConcurrency": 3,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "keywords": [
        "seo tools",
        "keyword research"
    ],
    "domains": [
        "apify.com"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/ubersuggest-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 = {
    "keywords": [
        "seo tools",
        "keyword research",
    ],
    "domains": ["apify.com"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ubersuggest Scraper",
        "description": "Scrape Ubersuggest SEO data — keyword volume, CPC, difficulty, intent & global breakdown, SERP results, keyword suggestions, domain ranking keywords, backlinks (overview + full list), top pages, and organic traffic history. Bulk keywords & domains, any country. No account needed. JSON/CSV.",
        "version": "0.0",
        "x-build-id": "9bEi4fDDIWnIvmB6p"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~ubersuggest-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-ubersuggest-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~ubersuggest-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-ubersuggest-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~ubersuggest-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-ubersuggest-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",
                "properties": {
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "Seed keywords — each returns search volume, CPC, competition, SEO & paid difficulty, search intent, and a 12-month volume trend.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "domains": {
                        "title": "Domains / URLs",
                        "type": "array",
                        "description": "Domains or URLs (e.g. `apify.com`) — each returns its organic ranking keywords, a backlinks/Domain-Authority overview, and top traffic pages.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Two-letter country code for keyword metrics, e.g. `US`, `GB`, `DE`.",
                        "default": "US"
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Two-letter language code, e.g. `en`, `de`, `fr`.",
                        "default": "en"
                    },
                    "locId": {
                        "title": "Ubersuggest location id",
                        "type": "integer",
                        "description": "Ubersuggest's internal location id (2840 = United States). Leave default unless you know the specific id you need.",
                        "default": 2840
                    },
                    "includeSerp": {
                        "title": "SERP results (per keyword)",
                        "type": "boolean",
                        "description": "For each keyword, also pull the live SERP breakdown — every ranking URL with its position, result type (organic / AI overview / people-also-ask / etc.), estimated monthly clicks, domain authority, and social shares. Adds one extra request per keyword.",
                        "default": false
                    },
                    "includeKeywordSuggestions": {
                        "title": "Keyword suggestions (per keyword)",
                        "type": "boolean",
                        "description": "For each seed keyword, also pull related keyword suggestions — each with its own search volume, CPC, competition, SEO/paid difficulty, and search intent. Great for keyword expansion. Adds one or more requests per keyword.",
                        "default": false
                    },
                    "maxKeywordSuggestions": {
                        "title": "Max keyword suggestions per keyword",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Cap on keyword-suggestion rows collected per seed keyword (when suggestions are enabled).",
                        "default": 100
                    },
                    "includeDomainKeywords": {
                        "title": "Ranking keywords",
                        "type": "boolean",
                        "description": "Pull the domain's organic ranking keywords (position, CPC, volume, difficulty, landing URL).",
                        "default": true
                    },
                    "includeBacklinks": {
                        "title": "Backlinks overview",
                        "type": "boolean",
                        "description": "Pull the domain's Domain Authority, total backlinks, referring domains, and follow/nofollow counts.",
                        "default": true
                    },
                    "includeBacklinksList": {
                        "title": "Backlinks list (individual)",
                        "type": "boolean",
                        "description": "Pull the domain's individual backlinks — each with its source page URL, target URL, anchor text, follow/nofollow, page & domain authority, spam score, and first-seen / last-visited dates.",
                        "default": false
                    },
                    "maxBacklinks": {
                        "title": "Max backlinks per domain",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Cap on individual backlink rows collected per domain (when the backlinks list is enabled).",
                        "default": 100
                    },
                    "includeTopPages": {
                        "title": "Top pages",
                        "type": "boolean",
                        "description": "Pull the domain's highest-traffic pages (URL, title, estimated traffic, social shares).",
                        "default": true
                    },
                    "includeTrafficOverview": {
                        "title": "Traffic overview (premium, on-demand)",
                        "type": "boolean",
                        "description": "Pull the domain's traffic overview — estimated organic traffic, organic/paid keyword counts, ranking buckets (top 1-3 / 4-10 / 11-50 / 51-100), and 12-month traffic history. Premium data billed as a separate event; off by default. Subject to a fair-use daily limit — if reached, the rest of your data still returns.",
                        "default": false
                    },
                    "maxDomainKeywords": {
                        "title": "Max ranking keywords per domain",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Cap on ranking-keyword rows collected per domain.",
                        "default": 100
                    },
                    "maxItems": {
                        "title": "Maximum output rows",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on the total number of rows across all keywords and domains.",
                        "default": 10000
                    },
                    "maxConcurrency": {
                        "title": "Parallel sessions",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many residential sessions run in parallel. Each session has a per-IP daily report budget, so the actor rotates exits automatically.",
                        "default": 3
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Sticky residential proxies are required (the access token is bound to the exit IP). Defaults to Apify Residential, US.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
