{
  "openapi": "3.0.1",
  "info": {
    "title": "Keyword Rank Tracker — AccuRanker Alternative",
    "description": "Track Google organic keyword ranks for a target domain. Export positions, matching URLs, SERP evidence, and search context; supply baseline ranks to calculate movement against an earlier snapshot.",
    "version": "1.0",
    "x-build-id": "8SG833z0aJey3jjKS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~accuranker-alternative/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-accuranker-alternative",
        "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/khadinakbar~accuranker-alternative/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-accuranker-alternative",
        "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/khadinakbar~accuranker-alternative/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-accuranker-alternative",
        "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": [
          "targetDomain",
          "keywords"
        ],
        "properties": {
          "targetDomain": {
            "title": "Target domain",
            "minLength": 1,
            "maxLength": 253,
            "type": "string",
            "description": "Domain to find in Google organic results, for example apify.com. A full URL is accepted and normalized to its hostname, and subdomains count as matches. This is not a Google Business Profile or a competitor list."
          },
          "keywords": {
            "title": "Keywords",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "Google searches to check, one phrase per item, for example 'web scraping platform'. Duplicate and blank entries are removed. The Actor accepts at most 100 selected keywords and does not discover new keywords.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 700
            }
          },
          "countryCode": {
            "title": "Country code",
            "pattern": "^[a-z]{2}$",
            "type": "string",
            "description": "Two-letter Google country code, such as us, gb, or de. Defaults to us and determines the country context for every requested SERP. It is not a city-level location setting.",
            "default": "us"
          },
          "languageCode": {
            "title": "Language code",
            "pattern": "^[a-z]{2,5}$",
            "type": "string",
            "description": "Google interface language code such as en, de, or fr. Defaults to en and is recorded on every output row. It does not translate the keyword.",
            "default": "en"
          },
          "device": {
            "title": "Device",
            "enum": [
              "desktop",
              "mobile"
            ],
            "type": "string",
            "description": "Google result device profile. Choose desktop or mobile; rankings can differ between these contexts. This is not an operating-system selector.",
            "default": "desktop"
          },
          "depth": {
            "title": "SERP depth",
            "minimum": 10,
            "maximum": 20,
            "type": "integer",
            "description": "Number of organic result positions to inspect per keyword. Use 10 for page one or 20 for a bounded page-two check; each additional page increases underlying platform usage. This is not an unlimited rank crawl.",
            "default": 10
          },
          "maxKeywords": {
            "title": "Maximum keywords",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Safety limit after blank and duplicate keyword removal. Defaults to 25 and caps the report at 100 rows so event charges remain predictable. It does not add keywords beyond the supplied list.",
            "default": 25
          },
          "baselineRanks": {
            "title": "Previous rank snapshot (optional)",
            "maxItems": 100,
            "type": "array",
            "description": "Optional prior rows keyed by keyword for movement labels. Each item needs a keyword, found boolean, targetRank when found, and optional checkedAt timestamp. Leave empty for a current-snapshot-only run; this Actor does not retain or read your prior account history.",
            "items": {
              "type": "object",
              "properties": {
                "keyword": {
                  "title": "Keyword",
                  "type": "string",
                  "description": "Exact keyword from the earlier snapshot."
                },
                "found": {
                  "title": "Previously found",
                  "type": "boolean",
                  "description": "Whether the target appeared in the earlier snapshot."
                },
                "targetRank": {
                  "title": "Previous rank",
                  "type": "integer",
                  "minimum": 1,
                  "description": "Earlier organic rank when previously found; omit it when the domain was absent."
                },
                "checkedAt": {
                  "title": "Earlier check time",
                  "type": "string",
                  "description": "Optional ISO 8601 timestamp for the earlier snapshot; omit it when unavailable."
                }
              },
              "required": [
                "keyword",
                "found"
              ]
            },
            "default": []
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}