{
  "openapi": "3.0.1",
  "info": {
    "title": "Domain SEO Analyzer — Keywords, Traffic & Gap",
    "description": "Get organic traffic, ranked keywords, competitors, top pages, subdomains, keyword gap, rank history and bulk traffic for any domain. No login.",
    "version": "1.0",
    "x-build-id": "8UpZheDRZQ2HuhRTM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cheapapi~domain-seo-analyzer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cheapapi-domain-seo-analyzer",
        "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/cheapapi~domain-seo-analyzer/runs": {
      "post": {
        "operationId": "runs-sync-cheapapi-domain-seo-analyzer",
        "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/cheapapi~domain-seo-analyzer/run-sync": {
      "post": {
        "operationId": "run-sync-cheapapi-domain-seo-analyzer",
        "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": [
          "report"
        ],
        "properties": {
          "report": {
            "title": "Report",
            "enum": [
              "domainOverview",
              "rankedKeywords",
              "competitors",
              "topPages",
              "subdomains",
              "keywordGap",
              "serpCompetitors",
              "rankHistory",
              "bulkTraffic"
            ],
            "type": "string",
            "description": "What you want to know about the domain(s). Domain overview is a one-row summary per domain (keywords, traffic, positions). All other reports return one row per keyword, competitor, page, subdomain, month or domain.",
            "default": "domainOverview"
          },
          "domains": {
            "title": "Domains",
            "type": "array",
            "description": "Domains to analyze, e.g. example.com (https:// and www. are removed automatically). Keyword gap: put YOUR domain first, then 1 or more competitors. Bulk traffic: up to thousands of domains or page URLs. Ranked keywords also accept a full page URL. Not needed for SERP competitors. Each report is charged even if a domain has no data, so check the spelling.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords (SERP competitors only)",
            "type": "array",
            "description": "Only for the SERP competitors report: the keywords whose Google results you want to analyze. Up to 200 keywords are analyzed together per report; more are split into groups of 200.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "enum": [
              "ALL",
              "US",
              "GB",
              "CA",
              "AU",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BR",
              "IN",
              "TR",
              "AF",
              "AX",
              "AL",
              "DZ",
              "AS",
              "AD",
              "AO",
              "AI",
              "AQ",
              "AG",
              "AR",
              "AM",
              "AW",
              "AT",
              "AZ",
              "BS",
              "BH",
              "BD",
              "BB",
              "BY",
              "BE",
              "BZ",
              "BJ",
              "BM",
              "BT",
              "BO",
              "BA",
              "BW",
              "BV",
              "IO",
              "VG",
              "BN",
              "BG",
              "BF",
              "BI",
              "KH",
              "CM",
              "CV",
              "BQ",
              "KY",
              "CF",
              "TD",
              "CL",
              "CN",
              "CX",
              "CC",
              "CO",
              "KM",
              "CG",
              "CD",
              "CK",
              "CR",
              "CI",
              "HR",
              "CU",
              "CW",
              "CY",
              "CZ",
              "DK",
              "DJ",
              "DM",
              "DO",
              "EC",
              "EG",
              "SV",
              "GQ",
              "ER",
              "EE",
              "SZ",
              "ET",
              "FK",
              "FO",
              "FJ",
              "FI",
              "GF",
              "PF",
              "TF",
              "GA",
              "GM",
              "GE",
              "GH",
              "GI",
              "GR",
              "GL",
              "GD",
              "GP",
              "GU",
              "GT",
              "GG",
              "GN",
              "GW",
              "GY",
              "HT",
              "HM",
              "HN",
              "HK",
              "HU",
              "IS",
              "ID",
              "IR",
              "IQ",
              "IE",
              "IM",
              "IL",
              "JM",
              "JP",
              "JE",
              "JO",
              "KZ",
              "KE",
              "KI",
              "KW",
              "KG",
              "LA",
              "LV",
              "LB",
              "LS",
              "LR",
              "LY",
              "LI",
              "LT",
              "LU",
              "MO",
              "MG",
              "MW",
              "MY",
              "MV",
              "ML",
              "MT",
              "MH",
              "MQ",
              "MR",
              "MU",
              "YT",
              "MX",
              "FM",
              "MD",
              "MC",
              "MN",
              "ME",
              "MS",
              "MA",
              "MZ",
              "MM",
              "NA",
              "NR",
              "NP",
              "NC",
              "NZ",
              "NI",
              "NE",
              "NG",
              "NU",
              "NF",
              "KP",
              "MK",
              "MP",
              "NO",
              "OM",
              "PK",
              "PW",
              "PS",
              "PA",
              "PG",
              "PY",
              "PE",
              "PH",
              "PN",
              "PL",
              "PT",
              "PR",
              "QA",
              "RE",
              "RO",
              "RU",
              "RW",
              "WS",
              "SM",
              "ST",
              "SA",
              "SN",
              "RS",
              "SC",
              "SL",
              "SG",
              "SX",
              "SK",
              "SI",
              "SB",
              "SO",
              "ZA",
              "GS",
              "KR",
              "SS",
              "LK",
              "BL",
              "SH",
              "KN",
              "LC",
              "MF",
              "PM",
              "VC",
              "SD",
              "SR",
              "SJ",
              "SE",
              "CH",
              "SY",
              "TW",
              "TJ",
              "TZ",
              "TH",
              "TL",
              "TG",
              "TK",
              "TO",
              "TT",
              "TN",
              "TM",
              "TC",
              "TV",
              "UM",
              "VI",
              "UG",
              "UA",
              "AE",
              "UY",
              "UZ",
              "VU",
              "VA",
              "VE",
              "VN",
              "WF",
              "EH",
              "YE",
              "ZM",
              "ZW"
            ],
            "type": "string",
            "description": "Google country database to use, e.g. United States. \"All countries\" works for Domain overview, Top pages, Subdomains and Bulk traffic.",
            "default": "US"
          },
          "maxResults": {
            "title": "Max results per domain",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum rows per report (per domain, per compared domain pair, or per group of keywords). Domain overview always returns 1 row per domain (except with \"All countries\"). Rank history returns one row per month.",
            "default": 100
          },
          "startOffset": {
            "title": "Skip first results",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Skip this many rows at the start (useful to continue a previous run, e.g. 1000 to get rows 1001+).",
            "default": 0
          },
          "language": {
            "title": "Language",
            "pattern": "^([A-Za-z]{2}(-[A-Za-z]{2})?)?$",
            "type": "string",
            "description": "2-letter language code of the search database, e.g. en, de, es, fr, tr. Leave empty to use the main language of the selected country."
          },
          "includeOrganic": {
            "title": "Count organic results",
            "type": "boolean",
            "description": "Include regular (organic) Google results.",
            "default": true
          },
          "includePaid": {
            "title": "Count ads",
            "type": "boolean",
            "description": "Include Google Ads results.",
            "default": true
          },
          "includeFeaturedSnippets": {
            "title": "Count featured snippets",
            "type": "boolean",
            "description": "Also include featured snippet positions.",
            "default": false
          },
          "includeLocalPack": {
            "title": "Count local pack",
            "type": "boolean",
            "description": "Also include local pack (map) positions.",
            "default": false
          },
          "includeAiOverviews": {
            "title": "Count AI Overview citations (Ranked keywords)",
            "type": "boolean",
            "description": "Ranked keywords only: also return keywords where the domain is cited in a Google AI Overview.",
            "default": false
          },
          "rankingStatus": {
            "title": "Ranking status",
            "enum": [
              "live",
              "lost",
              "all"
            ],
            "type": "string",
            "description": "Ranked keywords, Top pages and Subdomains: return current rankings, rankings the domain has lost, or both.",
            "default": "live"
          },
          "includeAbsolutePositions": {
            "title": "Absolute position breakdown (Ranked keywords)",
            "type": "boolean",
            "description": "Ranked keywords only: position counts are also calculated on absolute positions (counting all SERP elements).",
            "default": false
          },
          "ignoreSynonyms": {
            "title": "Ignore keyword synonyms",
            "type": "boolean",
            "description": "Skip highly similar keyword variants (e.g. plural/singular) to get a cleaner list.",
            "default": false
          },
          "includeAudienceInsights": {
            "title": "Audience insights (doubles the price)",
            "type": "boolean",
            "description": "Adds real-user click traffic estimates plus gender and age distribution. Available for Ranked keywords, Competitors, Top pages, Subdomains, Keyword gap and Rank history. Every event of the report is charged twice when enabled.",
            "default": false
          },
          "includeSerpDetails": {
            "title": "Include SERP details (Keyword gap)",
            "type": "boolean",
            "description": "Keyword gap only: add Google result page details (result types, total results) to each keyword.",
            "default": false
          },
          "minSearchVolume": {
            "title": "Min. search volume",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Ranked keywords, Keyword gap: only keywords with at least this many monthly searches."
          },
          "maxSearchVolume": {
            "title": "Max. search volume",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Ranked keywords, Keyword gap: only keywords with at most this many monthly searches."
          },
          "minPosition": {
            "title": "Best position (from)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Ranked keywords, Keyword gap: only keywords where the domain ranks at this position or lower, e.g. 4."
          },
          "maxPosition": {
            "title": "Worst position (to)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Ranked keywords, Keyword gap: only keywords where the domain ranks at this position or better, e.g. 10 for page one."
          },
          "minKeywordDifficulty": {
            "title": "Min. keyword difficulty",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Ranked keywords, Keyword gap: only keywords with at least this difficulty score (0 = easiest, 100 = hardest). Leave empty for no limit."
          },
          "maxKeywordDifficulty": {
            "title": "Max. keyword difficulty",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Ranked keywords, Keyword gap: only keywords with at most this difficulty score (0–100), e.g. 30 for easier keywords. Leave empty for no limit."
          },
          "minCpc": {
            "title": "Min. CPC (USD)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Ranked keywords, Keyword gap: only keywords with at least this cost per click in USD, e.g. 0.5. Leave empty for no limit."
          },
          "maxCpc": {
            "title": "Max. CPC (USD)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Ranked keywords, Keyword gap: only keywords with at most this cost per click in USD, e.g. 5. Leave empty for no limit."
          },
          "keywordIncludes": {
            "title": "Keyword contains",
            "type": "string",
            "description": "Ranked keywords, Keyword gap: only keywords containing this text (case-insensitive)."
          },
          "keywordExcludes": {
            "title": "Keyword does not contain",
            "type": "string",
            "description": "Ranked keywords, Keyword gap: drop keywords containing this text, e.g. your brand name."
          },
          "urlIncludes": {
            "title": "URL contains",
            "type": "string",
            "description": "Ranked keywords, Keyword gap, Top pages, Subdomains: only rows whose ranking URL / page / subdomain contains this text, e.g. /blog/."
          },
          "searchIntent": {
            "title": "Search intent",
            "enum": [
              "any",
              "informational",
              "navigational",
              "commercial",
              "transactional"
            ],
            "type": "string",
            "description": "Ranked keywords, Keyword gap: only keywords with this main search intent.",
            "default": "any"
          },
          "minTraffic": {
            "title": "Min. estimated traffic",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only rows with at least this estimated monthly organic traffic (all reports except Domain overview, Rank history and Bulk traffic)."
          },
          "minKeywordsCount": {
            "title": "Min. ranking keywords",
            "minimum": 0,
            "maximum": 100000000,
            "type": "integer",
            "description": "Competitors, Top pages, Subdomains: only rows with at least this many ranking keywords."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "default",
              "searchVolume",
              "position",
              "traffic",
              "trafficValue",
              "keywordDifficulty",
              "cpc",
              "keywordsCount",
              "sharedKeywords",
              "avgPosition",
              "visibility",
              "keyword"
            ],
            "type": "string",
            "description": "How rows are ordered before the limit is applied. Not every option applies to every report; unavailable options fall back to the default order.",
            "default": "default"
          },
          "sortOrder": {
            "title": "Sort direction",
            "enum": [
              "desc",
              "asc"
            ],
            "type": "string",
            "description": "Direction for \"Sort by\": descending (largest first) or ascending.",
            "default": "desc"
          },
          "customFilters": {
            "title": "Custom filters (expert)",
            "type": "array",
            "description": "Extra filters as a JSON list of [field, operator, value], all combined with AND. Example: [[\"searchVolume\", \">\", 1000], [\"keyword\", \"not_ilike\", \"%free%\"]]. Fields: keyword, searchVolume, cpc, competition, keywordDifficulty, searchIntent, position, absolutePosition, traffic, trafficValue, url, resultType, competitorPosition, competitorTraffic, competitorUrl, domain, avgPosition, sharedKeywords, keywordsCount, paidKeywordsCount, paidTraffic, newKeywords, lostKeywords, medianPosition, visibility, visibilityRating (depending on the report). Operators: <, <=, >, >=, =, <>, in, not_in, like, not_like, ilike, not_ilike, regex, not_regex, match, not_match."
          },
          "customSort": {
            "title": "Custom sort rules (expert)",
            "type": "array",
            "description": "Up to 3 sort rules as \"field,direction\", e.g. \"keywordDifficulty,asc\". Uses the same field names as custom filters. Combined with \"Sort by\" (max 3 rules in total).",
            "items": {
              "type": "string"
            }
          },
          "gapMode": {
            "title": "Keyword gap view",
            "enum": [
              "missing",
              "shared",
              "unique",
              "all"
            ],
            "type": "string",
            "description": "Which keywords the Keyword gap report returns for each competitor. Every row has a \"gapType\" field.",
            "default": "missing"
          },
          "excludeMajorPlatforms": {
            "title": "Exclude major platforms (Competitors)",
            "type": "boolean",
            "description": "Leave out huge sites that rank for everything (YouTube, Wikipedia, Amazon, Reddit, …).",
            "default": false
          },
          "excludeDomains": {
            "title": "Exclude domains (Competitors)",
            "type": "array",
            "description": "Competitor domains to leave out (up to 1000).",
            "items": {
              "type": "string"
            }
          },
          "focusDomains": {
            "title": "Focus domains (Competitors)",
            "type": "array",
            "description": "Up to 20 extra domains; only keywords that these domains AND your domain rank for are used to find competitors — sharpens results for a niche.",
            "items": {
              "type": "string"
            }
          },
          "maxCompetitorPosition": {
            "title": "Max. position counted (Competitors)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Only rankings up to this position are used to find competitors, e.g. 10 = only first-page overlap.",
            "default": 100
          },
          "includeSubdomains": {
            "title": "Include subdomains (SERP competitors)",
            "type": "boolean",
            "description": "SERP competitors: count subdomains (blog.example.com) as part of their main domain.",
            "default": true
          },
          "historyFrom": {
            "title": "History start",
            "pattern": "^(\\d{4}-\\d{2}(-\\d{2})?)?$",
            "type": "string",
            "description": "First month of the history as YYYY-MM, e.g. 2024-01 (earliest 2020-10). Leave empty to start 12 months ago."
          },
          "historyTo": {
            "title": "History end",
            "pattern": "^(\\d{4}-\\d{2}(-\\d{2})?)?$",
            "type": "string",
            "description": "Last month of the history as YYYY-MM, e.g. 2025-12. Leave empty to end with the current month."
          },
          "alignWithCurrentData": {
            "title": "Align history with current data",
            "type": "boolean",
            "description": "Recalculate past months with the current keyword database so months are comparable. Turn off to get the figures exactly as they were recorded.",
            "default": true
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}