Built-in tool

Compare Domain Keywords

Find Google keywords shared by two domains, or compare their overlapping/non-overlapping search footprints.

2 creditsNo API key needed

Endpoint

Parameters

NameTypeRequiredNote
domain1string · requiredstringrequired

First domain, normally your site.

domain2string · requiredstringrequired

Second domain, normally a competitor.

limitnumber · optionalnumberoptional

Maximum records to return (1-1000). Defaults to 100.

Default: 100

shared_onlyboolean · optionalbooleanoptional

Only keywords both domains rank for. Defaults to true.

Default: true

language_namestring · optionalstringoptional

Language for search metrics. Defaults to English.

One of: Afrikaans, Akan, Albanian, Amharic, Arabic, Armenian, Azeri, Balinese, Basque, Belarusian and 119 more

Default: English

location_namestring · optionalstringoptional

Country for search metrics. Defaults to United States.

One of: Afghanistan, Albania, Algeria, American Samoa, Andorra, Angola, Antarctica, Antigua and Barbuda, Argentina, Armenia and 203 more

Default: United States

Response schema

{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "elements"
  ],
  "properties": {
    "elements": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "cpc": {
            "type": [
              "number",
              "null"
            ]
          },
          "keyword": {
            "type": [
              "string",
              "null"
            ]
          },
          "competition": {
            "type": [
              "number",
              "null"
            ]
          },
          "target1_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "target2_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "target1_rank": {
            "type": [
              "number",
              "null"
            ],
            "description": "Organic position for this domain (1 = top organic result). Counts organic results only — ads and other SERP blocks are excluded, so this can be a few places higher than the absolute position shown in a browser."
          },
          "target2_rank": {
            "type": [
              "number",
              "null"
            ],
            "description": "Organic position for this domain (1 = top organic result). Counts organic results only — ads and other SERP blocks are excluded, so this can be a few places higher than the absolute position shown in a browser."
          },
          "search_intent": {
            "type": [
              "string",
              "null"
            ]
          },
          "search_volume": {
            "type": [
              "number",
              "null"
            ]
          },
          "target1_traffic": {
            "type": [
              "number",
              "null"
            ],
            "description": "Estimated monthly organic traffic for this domain, modelled from its own rank × the keyword’s search volume. Null when there is nothing to model from — the domain does not rank for the keyword, or the keyword has no volume data."
          },
          "target2_traffic": {
            "type": [
              "number",
              "null"
            ],
            "description": "Estimated monthly organic traffic for this domain, modelled from its own rank × the keyword’s search volume. Null when there is nothing to model from — the domain does not rank for the keyword, or the keyword has no volume data."
          },
          "competition_level": {
            "type": [
              "string",
              "null"
            ]
          },
          "keyword_difficulty": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": true
      }
    },
    "returned": {
      "type": "number",
      "description": "How many rows this run returned, after any Limit was applied."
    },
    "truncated": {
      "type": "boolean"
    },
    "suggestion": {
      "type": "string"
    },
    "totalCount": {
      "type": "number",
      "description": "How many records the provider says MATCH in total, independent of Limit — routinely in the millions (spotify.com has 2,583,327 ranking pages). It is a match count, NOT how many this endpoint will serve: Limit caps what one call returns, so do not compare it against the row count to judge completeness and do not paginate towards it. Absent when the provider sent no count."
    },
    "totalElements": {
      "type": "number",
      "description": "DEPRECATED — despite the name this is the count RETURNED by this run, not a grand total, so it equals your Limit on a limited run. Kept at that value deliberately: ENG-17058 asked for depth 5 to report 5, and it is a live number in existing flows. Use `returned` for this number or `totalCount` for how many records match."
    }
  },
  "additionalProperties": true
}

Get started

How to use this tool

  1. Connect your AI

    Add Connie to ChatGPT, Claude or Slack once, and this tool comes with it. There’s no API key or account to set up.

  2. Ask for the outcome

    Describe what you need in plain words. Your AI runs this tool when the job calls for it, along with any others it needs.

  3. Make it a workflow

    Add it as a step in a workflow that runs the same way every time, on a schedule or when something happens.

  4. Stay in control

    Choose whether it runs on its own or asks first. When it asks, you see an Allow or Deny card before any credits are spent.