{
  "openapi": "3.0.1",
  "info": {
    "title": "Backlink Checker - Backlinks, Referring Domains & Anchor Text",
    "description": "Get the full backlink profile for any domain — domain score, referring-domain count, total-link count, and per-link records (origin URL, target URL, anchor text, follow/nofollow, dates).",
    "version": "0.2",
    "x-build-id": "FZqK9F5VDrEaLHfxb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s-r~backlinks-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s-r-backlinks-checker",
        "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/s-r~backlinks-checker/runs": {
      "post": {
        "operationId": "runs-sync-s-r-backlinks-checker",
        "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/s-r~backlinks-checker/run-sync": {
      "post": {
        "operationId": "run-sync-s-r-backlinks-checker",
        "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",
        "required": [
          "domain"
        ],
        "properties": {
          "domain": {
            "title": "Domain",
            "type": "string",
            "description": "The domain to analyse, for example coolblue.nl. A scheme, a www prefix and any path or query are stripped before the lookup, so only the bare host is sent upstream. One run covers one domain."
          },
          "include_backlinks": {
            "title": "Include backlinks",
            "type": "boolean",
            "description": "Leave on to get one row per backlink. Turn off to get a single row with the domain metrics only, which is one billed result instead of hundreds. Turning it off also drops the second index's own links, because those are link rows too; the second_* metric columns are unaffected and still fill that single row.",
            "default": true
          },
          "timeout": {
            "title": "Timeout",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "How long to wait for the main backlink lookup, in seconds. It bounds that one request only: the Open PageRank and second-index calls carry their own timeouts and are unaffected. Running out here ends the run with an error rather than partial rows. On this endpoint the lookup is bounded at 20 seconds regardless, so the whole run fits the edge's limit.",
            "default": 60
          },
          "openpagerank_key": {
            "title": "Openpagerank key",
            "type": "string",
            "description": "The run works without one. Supplied, it fills three extra columns (open_page_rank, open_page_rank_integer, open_page_rank_position) with a second, independent authority score derived from the Common Crawl web graph, and sets authority_sources to 2. It returns no backlinks and changes no other figure, so the link rows and the billed row count are identical either way. The key and the domain go to openpagerank.keywordseverywhere.com, a third party, and the key is not written to the dataset or the run summary. Free for 30,000 domains a month."
          },
          "second_index": {
            "title": "Second index",
            "type": "boolean",
            "description": "Adds a second index's own backlink count, referring domains, trust scores and dofollow split as second_* columns on every row, and sets backlink_sources to 2. It adds no rows and it changes no first-index figure: nothing is merged, so you see the spread rather than an average, and the two indexes disagree by roughly a factor of two on the same domain. It does not add the second index's individual links either; that is the switch below. Costs one extra upstream call and nothing in billing. When the second index answers with nothing, the second_* columns stay empty and the run reports second_index_miss.",
            "default": true
          },
          "second_index_links": {
            "title": "Second index links",
            "type": "boolean",
            "description": "Adds up to 100 more backlink rows found by the second index, marked link_source=second_index and carrying the spam_score and source_page_score the first index does not report. That 100 is the source's own ceiling, not a setting: asking for more returns the same hundred, whatever the domain. They barely overlap the first index, on a test domain only 2 of its 100 referring domains were already present, and the rest skew toward link networks, which is what a spam audit is looking for. Rows identical on url_from, url_to and anchor text are dropped. It needs the per-link records switch above to be on, it does not raise backlink_sources because this is the same index the second_* columns came from, and every extra row is billed, so cap the total with maxBacklinks or turn this off for the first index alone.",
            "default": true
          },
          "referring_domain_trends": {
            "title": "Referring domain trends",
            "type": "boolean",
            "description": "Adds the authority spread of your referring domains, ten buckets from 0-10 to 90-100, plus a daily new and lost referring-domain series with totals. A referring-domain count says how many link to you; these say how good they are and which way the profile is moving. Adds no billed rows. Turn off for a slightly faster run.",
            "default": true
          },
          "maxBacklinks": {
            "title": "Maxbacklinks",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Caps the rows across both indexes, and with them the bill, since every row is billed. It trims the rows after both sources have answered, so it lowers the cost but not the run time and not what the sources are asked for. The cut is by position, first-index rows first, so a small cap may leave no second-index rows at all. 0 means no cap beyond what the sources return.",
            "default": 0
          },
          "max_backlinks": {
            "title": "Max backlinks",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Alias of maxBacklinks."
          },
          "third_index": {
            "title": "Third index",
            "type": "boolean",
            "description": "Adds supplementary backlinks from a third index (DataForSEO) on paid plans, when no limit is set or when the first two indices returned fewer rows than maxBacklinks. Free-plan runs always come from the first two indices only.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}