> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Organic Competitors

> Find the domains competing with a domain in Google organic and paid search according to DataForSEO Labs, with shared keyword counts, average position and each competitor's traffic

Find the domains competing with a domain in Google organic and paid search according to DataForSEO Labs, with shared keyword counts, average position and each competitor's traffic. Use dataforseo\_get\_keyword\_gap for the exact keywords they share or miss.

| | |
| - | - |
| **App** | DataForSEO |
| **Operation ID** | `dataforseo_get_organic_competitors` |
| **Type** | Action |
| **Connection** | `dataforseo` (required) |
| **Credits per run** | Free |
| **Agent / MCP tool** | Yes |

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `target` | string | Yes | - | Domain to find competitors for, without scheme or www (e.g. example.com). |
| `location` | string or SelectableOption | No | `2840` | Country or location: a two-letter country code (us, gb, de...), a DataForSEO location code (2840 = United States), or a full location name such as 'London,England,United Kingdom'. Defaults to the United States. |
| `language` | string or SelectableOption | No | `en` | Language code of the search results, e.g. en, de, es, fr, nl. Defaults to en. |
| `item_types` | string or array of string | No | - | SERP element types to compare on: organic, paid, featured\_snippet, local\_pack, ai\_overview\_reference. Defaults to organic and paid. |
| `max_rank_group` | integer | No | - | Only count keywords where the target ranks within this position (e.g. 10 for page one). Leave empty for the top 100. |
| `exclude_top_domains` | boolean | No | `False` | Leave out very large sites such as Wikipedia, Amazon and YouTube that rank for almost everything. |
| `filters` | array of FilterItem | No | - | Up to 8 filters on dotted result fields, e.g. intersections GREATER\_THAN 50, full\_domain\_metrics.organic.etv GREATER\_THAN 1000, domain CONTAINS '.co.uk'. |
| `orders` | array of OrderItem | No | - | Sort by up to 3 dotted result fields, e.g. keyword\_info.search\_volume DESC. |
| `limit` | integer | No | `100` | Maximum number of rows to return (1 to 1000). Defaults to 100. Each row is billed by DataForSEO, so keep this as small as the task needs. |
| `offset` | integer | No | - | Number of rows to skip, for paging. |
| `fields` | string or array of string | No | - | Dotted result fields to keep, e.g. domain, avg\_position, sum\_position, intersections, full\_domain\_metrics.organic.etv, full\_domain\_metrics.organic.count, metrics.organic.etv, metrics.organic.count, competitor\_metrics.organic.etv, competitor\_metrics.organic.count. Leave empty for the default set (see the output description). |

### FilterItem

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `field` | string or SelectableOption | Yes | - | The field to filter on, must be one of the current selected metrics or dimensions. |
| `operator` | string | Yes | - | The operator to use for filtering. Must be one of the supported values. Use REGEXP\_MATCH to search/filter by multiple OR values like '.*(summer\|holiday).*' |
| `value` | string | Yes | - | The value to filter by, always as a string: text, a number, or a regex. For IN\_LIST and NOT\_IN\_LIST, pass the values as one comma-separated string such as 'a,b,c', not as an array. For regex values, escape backslashes once in the JSON string: write \b for a word boundary, not \b. |

### OrderItem

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `field` | string or SelectableOption | Yes | - | The field to sort by. must be one of the current selected metrics or dimensions. |
| `direction` | string | Yes | - | The order to sort by, must be one of 'ASC', 'DESC' |

### SelectableOption

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | |
| `label` | string | Yes | - | |

## Output

**Type**: `List[Dict]`

Returns one row per competitor with dotted columns: domain, avg\_position, sum\_position, intersections, full\_domain\_metrics.organic.etv, full\_domain\_metrics.organic.count, metrics.organic.etv, metrics.organic.count (on shared keywords), competitor\_metrics.organic.etv, competitor\_metrics.organic.count, and the same under paid.

**Fields**: `domain`, `avg_position`, `intersections`, `full_domain_metrics.organic.etv`, `full_domain_metrics.organic.count`, `metrics.organic.etv`

**Example**:

```json theme={"dark"}
[
  {
    "domain": "semrush.com",
    "avg_position": 14.2,
    "sum_position": 48213,
    "intersections": 3394,
    "full_domain_metrics.organic.etv": 3624906.0,
    "full_domain_metrics.organic.count": 93436,
    "metrics.organic.etv": 512300.2
  }
]
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.