{
  "openapi": "3.0.1",
  "info": {
    "title": "Link Gap Finder & Backlink Gap Analysis",
    "description": "Find the sites that link to your competitors but not to you, one row per site. Up to 20 competitors, with domain rank, spam risk and the strongest link URL. Service domains and spammy sites removed.",
    "version": "0.1",
    "x-build-id": "VZr2iG5UmHosaFwk9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datapulsehq~link-gap-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datapulsehq-link-gap-finder",
        "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/datapulsehq~link-gap-finder/runs": {
      "post": {
        "operationId": "runs-sync-datapulsehq-link-gap-finder",
        "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/datapulsehq~link-gap-finder/run-sync": {
      "post": {
        "operationId": "run-sync-datapulsehq-link-gap-finder",
        "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",
        "properties": {
          "yourDomain": {
            "title": "Your domain",
            "type": "string",
            "description": "The site you want links for, such as example.com. https://, www. and paths are removed. Sites that already link to it are left out of the results."
          },
          "competitors": {
            "title": "Competitor domains",
            "type": "array",
            "description": "1 to 20 competitor domains. Invalid entries, duplicates and your own domain are dropped and listed in the run summary.",
            "items": {
              "type": "string"
            }
          },
          "minCompetitors": {
            "title": "Minimum competitors linked",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Only list sites that link to at least this many of your competitors. Default 2, or 1 with a single competitor. The run needs one lookup per combination of this many competitors (3 competitors and 2 is 3 lookups), at most 20."
          },
          "maxProspects": {
            "title": "Maximum prospects",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Most prospects to return, up to 5,000. Users on the Apify free plan get at most 20 per run. Each lookup reads this many rows at a time, at least 100 (200 after the first read) when a score filter is on.",
            "default": 100
          },
          "includeDomainRank": {
            "title": "Add domain rank and spam risk",
            "type": "boolean",
            "description": "Look up the domain rank (0 to 100) and spam risk (0 to 100) of each prospect. Needed for the two filters below.",
            "default": true
          },
          "minDomainRank": {
            "title": "Minimum domain rank",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Drop prospects with a lower domain rank. 0 keeps all.",
            "default": 0
          },
          "maxSpamRisk": {
            "title": "Maximum spam risk",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Drop prospects with a higher spam risk (0 to 100). Default 40, which removes most press release networks and link directories. 100 keeps all. Prospects without a spam risk value are kept. Needs \"Add domain rank and spam risk\".",
            "default": 40
          },
          "dofollowOnly": {
            "title": "Count dofollow links only",
            "type": "boolean",
            "description": "Count only dofollow links to the competitors, so sites that link with nofollow only are left out.",
            "default": false
          },
          "groupByRootDomain": {
            "title": "One row per root domain",
            "type": "boolean",
            "description": "Group linking hosts by their root domain (blog.example.com and example.com become one row for example.com) with the competitors, pages and subdomains added up. Hosting platforms with a public suffix, such as github.io sites, stay separate sites.",
            "default": true
          },
          "exampleLinksFor": {
            "title": "Example links for the top prospects",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "For this many prospects from the top of the list, look up the URL of their strongest link to a competitor, with anchor text, target page and link type. Sites whose strongest link comes from using a competitor's product (a hosted form, board or dashboard) or from a legal page are then listed after the others with the same competitor count. 0 turns it off. One lookup request per competitor and up to 50 prospects.",
            "default": 50
          },
          "excludeDomains": {
            "title": "Your other domains",
            "type": "array",
            "description": "Up to 9 more domains you own. Sites that link to any of them are left out too.",
            "items": {
              "type": "string"
            }
          },
          "skipProspects": {
            "title": "Sites to skip",
            "type": "array",
            "description": "Up to 10,000 sites you already contacted or do not want. A root domain such as example.org also skips its subdomains. Skipped sites are not charged.",
            "items": {
              "type": "string"
            }
          },
          "useBuiltInServiceList": {
            "title": "Remove service domains",
            "type": "boolean",
            "description": "Remove domains that only carry links as a by-product of a service: email and newsletter infrastructure, CDNs and file hosting, URL shorteners and link-in-bio pages, ad, affiliate and redirect domains, and caches, archives and feed proxies. The run summary counts them per category. Removed domains are not charged as prospects.",
            "default": true
          },
          "serviceDomains": {
            "title": "More service domains to remove",
            "type": "array",
            "description": "Up to 1,000 more domains to remove, for example a competitor's separate domains for newsletters, help center, status page or app downloads. Each entry also removes its subdomains. Counted separately in the run summary.",
            "items": {
              "type": "string"
            }
          },
          "includeSubdomains": {
            "title": "Include subdomains",
            "type": "boolean",
            "description": "Count links to the subdomains of your domain and of the competitors.",
            "default": true
          },
          "useCache": {
            "title": "Use cached results",
            "type": "boolean",
            "description": "Reuse the result of the same analysis and the prospect scores from earlier runs.",
            "default": true
          },
          "cacheTtlDays": {
            "title": "Cache age limit (days)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Maximum age of cached results.",
            "default": 7
          },
          "pushSummaryToDataset": {
            "title": "Add run summary to the dataset",
            "type": "boolean",
            "description": "Append the run summary as the last dataset row. It is always saved as SUMMARY in the key-value store.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}