SEOpost/competitors

Find a domain's organic competitors

Competitors
Cost / request

$0.01

Response format

JSON

Protocol

REST

Description

Returns the domains that compete with the target in organic search, ranked by keyword overlap (the `intersections` field), with visibility and traffic estimates for each. Note: the first row is the target itself, and generic high-overlap mega-domains (youtube.com, linkedin.com) dominate the default output — skip the self row and filter, e.g. filters: [["intersections",">",50]], or sort with order_by: ["metrics.organic.count,desc"] and judge overlap yourself. Feed the survivors into keyword_gap or backlink_gap.

Parameters

bodyRequest Bodyrequired

Content type: application/json

{
  "type": "object",
  "required": [
    "target"
  ],
  "properties": {
    "target": {
      "type": "string",
      "description": "Domain to find competitors for, no protocol."
    },
    "location_code": {
      "type": "integer",
      "description": "Geo target as a location code. Default 2840 (United States).",
      "default": 2840
    },
    "language_code": {
      "type": "string",
      "description": "Two-letter language code. Default 'en'.",
      "default": "en"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "default": 100,
      "description": "Max competitor domains to return. Default 100."
    },
    "filters": {
      "type": "array",
      "items": {},
      "description": "Optional filter expression as [field, operator, value] triples. Recipe: [[\"intersections\",\">\",50]] keeps only domains sharing 50+ keywords with the target."
    },
    "order_by": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Sort rules, e.g. [\"intersections,desc\"]."
    }
  }
}

Responses

Competitor domains with overlap and visibility metrics in `result[0].items`.

{
  "type": "object"
}

Agent / Developer Schema

Machine-readable formats for integrating this endpoint into AI agents and toolchains.

{
  "operationId": "competitors",
  "method": "post",
  "path": "/competitors",
  "summary": "Find a domain's organic competitors",
  "description": "Returns the domains that compete with the target in organic search, ranked by keyword overlap (the `intersections` field), with visibility and traffic estimates for each. Note: the first row is the target itself, and generic high-overlap mega-domains (youtube.com, linkedin.com) dominate the default output — skip the self row and filter, e.g. filters: [[\"intersections\",\">\",50]], or sort with order_by: [\"metrics.organic.count,desc\"] and judge overlap yourself. Feed the survivors into keyword_gap or backlink_gap.",
  "parameters": [],
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "required": [
            "target"
          ],
          "properties": {
            "target": {
              "type": "string",
              "description": "Domain to find competitors for, no protocol."
            },
            "location_code": {
              "type": "integer",
              "description": "Geo target as a location code. Default 2840 (United States).",
              "default": 2840
            },
            "language_code": {
              "type": "string",
              "description": "Two-letter language code. Default 'en'.",
              "default": "en"
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000,
              "default": 100,
              "description": "Max competitor domains to return. Default 100."
            },
            "filters": {
              "type": "array",
              "items": {},
              "description": "Optional filter expression as [field, operator, value] triples. Recipe: [[\"intersections\",\">\",50]] keeps only domains sharing 50+ keywords with the target."
            },
            "order_by": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Sort rules, e.g. [\"intersections,desc\"]."
            }
          }
        },
        "example": {
          "target": "close.com",
          "limit": 50
        }
      }
    }
  },
  "responses": [
    {
      "statusCode": "200",
      "description": "Competitor domains with overlap and visibility metrics in `result[0].items`.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object"
          }
        }
      }
    },
    {
      "statusCode": "400",
      "description": "Bad request or upstream task error."
    },
    {
      "statusCode": "401",
      "description": "Unauthorized."
    },
    {
      "statusCode": "429",
      "description": "Too many requests."
    },
    {
      "statusCode": "5XX",
      "description": "Upstream error."
    }
  ]
}

Pricing

$0.01per successful request

Credits are deducted from your agntdata balance on each successful API call. Failed requests (4xx/5xx) are not charged.

Start using this endpoint

Generate your API key and make your first call in under a minute. Free tier available with transparent pricing.