{
  "url": "https://telipot.com/catalog/capabilities/seo.domain.competitors",
  "id": "seo.domain.competitors",
  "description": "Domains that compete with a domain in organic search",
  "platform": "seo",
  "providers": [
    {
      "slug": "semrush",
      "name": "Semrush"
    }
  ],
  "tasks": 1,
  "taskPages": [
    {
      "id": "semrush.seo.domain.competitors",
      "name": "Organic search competitors of a domain by country",
      "provider": {
        "slug": "semrush",
        "name": "Semrush"
      },
      "capability": "seo.domain.competitors",
      "platform": "seo",
      "kind": "data",
      "tier": "core",
      "identity": "key",
      "identityLabel": "Your plan",
      "price": {
        "native": {
          "text": "40 API units per result",
          "figure": "40 API units",
          "per": "result",
          "currency": "API units"
        },
        "confidence": "documented",
        "source": "docs",
        "sourceUrl": "https://developer.semrush.com/api/v3/seo/domain-reports/#competitors-in-organic-search",
        "checked": "2026-10-05",
        "note": "40 API units per line returned. Semrush does not charge a request that returns no data. Semrush publishes no USD price per API unit.",
        "type": "per_result",
        "state": "native",
        "label": "Semrush API units",
        "detail": "40 API units / result · docs"
      },
      "providers": 1,
      "retention": "standard",
      "runsOn": "byoc",
      "live": true,
      "summary": "This report lists a domain’s competitors in organic search results.",
      "method": "GET",
      "path": "/",
      "host": "https://api.semrush.com",
      "docsUrl": "https://developer.semrush.com/api/v3/seo/domain-reports/#competitors-in-organic-search",
      "auth": {
        "scheme": "api_key",
        "label": "api_key · in query as key",
        "short": "api_key · ?key"
      },
      "scope": "any_account",
      "principal": "organization",
      "requiredScopes": [],
      "verification": {
        "state": "none",
        "label": "Not verified yet",
        "detail": "Not checked yet. We test with a real request before we mark it."
      },
      "input": [
        {
          "name": "type",
          "location": "queryParams",
          "type": "string",
          "required": true,
          "constraints": [
            "const \"domain_organic_organic\""
          ],
          "note": "Fixed. Selects the Competitors in Organic Search report."
        },
        {
          "name": "domain",
          "location": "queryParams",
          "type": "string",
          "required": true,
          "constraints": [],
          "note": "Unique name of the website to investigate."
        },
        {
          "name": "database",
          "location": "queryParams",
          "type": "string",
          "required": true,
          "constraints": [],
          "note": "Two-letter regional database code, such as us, uk, ca, de or fr. Domain reports also take the mobile- and -ext codes listed under Databases in the SEO API overview."
        },
        {
          "name": "display_limit",
          "location": "queryParams",
          "type": "integer",
          "required": true,
          "constraints": [
            "1 to 100000"
          ],
          "note": "Lines returned, which is what Semrush bills. Semrush returns up to 10,000 lines when the parameter is omitted or 0, so this task requires it. Semrush returns at most 100,000 lines per call."
        },
        {
          "name": "display_offset",
          "location": "queryParams",
          "type": "integer",
          "required": false,
          "constraints": [
            "at least 0"
          ],
          "note": "Lines to skip before the report starts. Semrush counts display_limit from the first line, so set display_limit to display_offset plus the lines wanted."
        },
        {
          "name": "display_sort",
          "location": "queryParams",
          "type": "string",
          "required": false,
          "constraints": [
            "one of \"np_desc\", \"np_asc\", \"cr_desc\", \"cr_asc\""
          ],
          "note": "Sort rule, one per call. np is Common Keywords and cr is Competitor Relevance."
        },
        {
          "name": "export_columns",
          "location": "queryParams",
          "type": "string",
          "required": false,
          "constraints": [
            "default \"Dn,Cr,Np,Or,Ot,Oc,Ad\""
          ],
          "note": "Comma-separated column codes, in the order wanted. Dn Domain, Cr Competitor Relevance, Np Common Keywords (organic keywords both domains rank for in Google's top 100), Or Organic Keywords, Ot Organic Traffic, Oc Organic Cost, Ad Adwords Keywords, Sr SERP Features Positions, St SERP Features Traffic, Sc SERP Features Traffic Cost."
        }
      ],
      "sampleInput": {
        "type": "domain_organic_organic",
        "domain": "stripe.com",
        "database": "us",
        "display_limit": 1,
        "export_columns": "Dn,Cr,Np,Or,Ot"
      },
      "inputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Fixed. Selects the Competitors in Organic Search report.",
            "const": "domain_organic_organic"
          },
          "domain": {
            "type": "string",
            "description": "Unique name of the website to investigate.",
            "examples": [
              "stripe.com"
            ]
          },
          "database": {
            "type": "string",
            "description": "Two-letter regional database code, such as us, uk, ca, de or fr. Domain reports also take the mobile- and -ext codes listed under Databases in the SEO API overview.",
            "examples": [
              "us"
            ]
          },
          "display_limit": {
            "type": "integer",
            "description": "Lines returned, which is what Semrush bills. Semrush returns up to 10,000 lines when the parameter is omitted or 0, so this task requires it. Semrush returns at most 100,000 lines per call.",
            "examples": [
              10
            ],
            "minimum": 1,
            "maximum": 100000
          },
          "display_offset": {
            "type": "integer",
            "description": "Lines to skip before the report starts. Semrush counts display_limit from the first line, so set display_limit to display_offset plus the lines wanted.",
            "minimum": 0
          },
          "display_sort": {
            "type": "string",
            "description": "Sort rule, one per call. np is Common Keywords and cr is Competitor Relevance.",
            "enum": [
              "np_desc",
              "np_asc",
              "cr_desc",
              "cr_asc"
            ]
          },
          "export_columns": {
            "type": "string",
            "description": "Comma-separated column codes, in the order wanted. Dn Domain, Cr Competitor Relevance, Np Common Keywords (organic keywords both domains rank for in Google's top 100), Or Organic Keywords, Ot Organic Traffic, Oc Organic Cost, Ad Adwords Keywords, Sr SERP Features Positions, St SERP Features Traffic, Sc SERP Features Traffic Cost.",
            "default": "Dn,Cr,Np,Or,Ot,Oc,Ad"
          }
        },
        "required": [
          "type",
          "domain",
          "database",
          "display_limit"
        ],
        "additionalProperties": false
      },
      "output": [
        {
          "name": "output",
          "type": "string",
          "description": "CSV text: a header line of column names, then one line per competitor, columns separated by semicolons, in the order of export_columns. A body that starts with ERROR is a failure, for example ERROR 50 :: NOTHING FOUND."
        }
      ],
      "outputSchema": {
        "type": "string",
        "pattern": "^(?!\\s*ERROR)",
        "description": "CSV text: a header line of column names, then one line per competitor, columns separated by semicolons, in the order of export_columns. A body that starts with ERROR is a failure, for example ERROR 50 :: NOTHING FOUND."
      },
      "commands": {
        "mode": "run",
        "cli": "telipot run semrush.seo.domain.competitors \\\n  --input-json '{\"type\":\"domain_organic_organic\",\"domain\":\"stripe.com\",\"database\":\"us\",\"display_limit\":1,\"export_columns\":\"Dn,Cr,Np,Or,Ot\"}'",
        "http": "curl https://api.telipot.com/v1/tasks/semrush.seo.domain.competitors/run \\\n  -H \"Authorization: Bearer $TELIPOT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"type\":\"domain_organic_organic\",\"domain\":\"stripe.com\",\"database\":\"us\",\"display_limit\":1,\"export_columns\":\"Dn,Cr,Np,Or,Ot\"}'",
        "quote": "telipot run semrush.seo.domain.competitors \\\n  --input-json '{\"type\":\"domain_organic_organic\",\"domain\":\"stripe.com\",\"database\":\"us\",\"display_limit\":1,\"export_columns\":\"Dn,Cr,Np,Or,Ot\"}' \\\n  --quote"
      },
      "siblings": []
    }
  ]
}
