{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Rank Checker - Bulk SERP Position Tracker API & MCP",
    "description": "Bulk Google rank checker / SERP position tracker: today's position, ranking URL, top-3 competitors above you, SERP features (AI Overview, snippet, PAA) + search volume + MCP - one decisional row per keyword. Pay-per-use rank tracker API, no subscription. Free preview.",
    "version": "0.1",
    "x-build-id": "nAMQ7rdjMcqi7Sp4w"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/doesaiknow~google-rank-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-doesaiknow-google-rank-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/doesaiknow~google-rank-checker/runs": {
      "post": {
        "operationId": "runs-sync-doesaiknow-google-rank-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/doesaiknow~google-rank-checker/run-sync": {
      "post": {
        "operationId": "run-sync-doesaiknow-google-rank-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": "Your domain",
            "minLength": 1,
            "maxLength": 250,
            "type": "string",
            "description": "The domain whose Google rankings you want to check, e.g. 'yourdomain.com'. Full URLs work too — protocol / www. / path are stripped automatically. Subdomains count as ranking (blog.yourdomain.com counts for yourdomain.com)."
          },
          "keywords": {
            "title": "Keywords",
            "maxItems": 2000,
            "type": "array",
            "description": "Up to 2000 keywords (paid Apify plans) to check positions for. Each keyword is normalized (lowercased, whitespace collapsed) and deduplicated before any paid call. FREE PLAN: 25-keyword preview per run, desktop only; the actor exits early with an upgrade prompt above the limit. Leave empty and enable 'Seed from domain' to auto-populate the list (paid plans).",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 250
            }
          },
          "location": {
            "title": "Country / location",
            "enum": [
              "Afghanistan",
              "Albania",
              "Algeria",
              "American Samoa",
              "Andorra",
              "Angola",
              "Antarctica",
              "Antigua and Barbuda",
              "Argentina",
              "Armenia",
              "Australia",
              "Austria",
              "Azerbaijan",
              "Bahrain",
              "Bangladesh",
              "Barbados",
              "Belgium",
              "Belize",
              "Benin",
              "Bhutan",
              "Bolivia",
              "Bosnia and Herzegovina",
              "Botswana",
              "Brazil",
              "Brunei",
              "Bulgaria",
              "Burkina Faso",
              "Burundi",
              "Cabo Verde",
              "Cambodia",
              "Cameroon",
              "Canada",
              "Caribbean Netherlands",
              "Central African Republic",
              "Chad",
              "Chile",
              "China",
              "Christmas Island",
              "Cocos (Keeling) Islands",
              "Colombia",
              "Comoros",
              "Cook Islands",
              "Costa Rica",
              "Cote d'Ivoire",
              "Croatia",
              "Curacao",
              "Cyprus",
              "Czechia",
              "Democratic Republic of the Congo",
              "Denmark",
              "Djibouti",
              "Dominica",
              "Dominican Republic",
              "Ecuador",
              "Egypt",
              "El Salvador",
              "Equatorial Guinea",
              "Eritrea",
              "Estonia",
              "Eswatini",
              "Ethiopia",
              "Fiji",
              "Finland",
              "France",
              "French Polynesia",
              "French Southern and Antarctic Lands",
              "Gabon",
              "Georgia",
              "Germany",
              "Ghana",
              "Greece",
              "Grenada",
              "Guam",
              "Guatemala",
              "Guernsey",
              "Guinea",
              "Guinea-Bissau",
              "Guyana",
              "Haiti",
              "Heard Island and McDonald Islands",
              "Honduras",
              "Hungary",
              "Iceland",
              "India",
              "Indonesia",
              "Iraq",
              "Ireland",
              "Isle of Man",
              "Israel",
              "Italy",
              "Jamaica",
              "Japan",
              "Jersey",
              "Jordan",
              "Kazakhstan",
              "Kenya",
              "Kiribati",
              "Kuwait",
              "Kyrgyzstan",
              "Laos",
              "Latvia",
              "Lebanon",
              "Lesotho",
              "Liberia",
              "Libya",
              "Liechtenstein",
              "Lithuania",
              "Luxembourg",
              "Madagascar",
              "Malawi",
              "Malaysia",
              "Maldives",
              "Mali",
              "Malta",
              "Marshall Islands",
              "Mauritania",
              "Mauritius",
              "Mexico",
              "Micronesia",
              "Moldova",
              "Monaco",
              "Mongolia",
              "Montenegro",
              "Morocco",
              "Mozambique",
              "Myanmar (Burma)",
              "Namibia",
              "Nauru",
              "Nepal",
              "Netherlands",
              "New Caledonia",
              "New Zealand",
              "Nicaragua",
              "Niger",
              "Nigeria",
              "Niue",
              "Norfolk Island",
              "North Macedonia",
              "Northern Mariana Islands",
              "Norway",
              "Oman",
              "Pakistan",
              "Palau",
              "Panama",
              "Papua New Guinea",
              "Paraguay",
              "Peru",
              "Philippines",
              "Pitcairn Islands",
              "Poland",
              "Portugal",
              "Qatar",
              "Republic of the Congo",
              "Romania",
              "Rwanda",
              "Saint Helena, Ascension and Tristan da Cunha",
              "Saint Kitts and Nevis",
              "Saint Lucia",
              "Saint Martin",
              "Saint Pierre and Miquelon",
              "Saint Vincent and the Grenadines",
              "Samoa",
              "San Marino",
              "Sao Tome and Principe",
              "Saudi Arabia",
              "Senegal",
              "Serbia",
              "Seychelles",
              "Sierra Leone",
              "Singapore",
              "Sint Maarten",
              "Slovakia",
              "Slovenia",
              "Solomon Islands",
              "Somalia",
              "South Africa",
              "South Georgia and the South Sandwich Islands",
              "South Korea",
              "Spain",
              "Sri Lanka",
              "Suriname",
              "Sweden",
              "Switzerland",
              "Tajikistan",
              "Tanzania",
              "Thailand",
              "The Bahamas",
              "The Gambia",
              "Timor-Leste",
              "Togo",
              "Tokelau",
              "Tonga",
              "Trinidad and Tobago",
              "Tunisia",
              "Turkiye",
              "Turkmenistan",
              "Tuvalu",
              "Uganda",
              "Ukraine",
              "United Arab Emirates",
              "United Kingdom",
              "United States",
              "United States Minor Outlying Islands",
              "Uruguay",
              "Uzbekistan",
              "Vanuatu",
              "Vatican City",
              "Venezuela",
              "Vietnam",
              "Wallis and Futuna",
              "Yemen",
              "Zambia",
              "Zimbabwe"
            ],
            "type": "string",
            "description": "Google market (country) the positions are checked in — pick from the list. One market per run — run again for another market. Default 'United States'.",
            "default": "United States"
          },
          "city": {
            "title": "City (optional)",
            "maxLength": 100,
            "type": "string",
            "description": "Check positions as seen in a specific city instead of country-wide. Type the city name (e.g. 'Baltimore', 'Warsaw') — it is matched against the ~64,000 supported cities in the selected country before any paid call; if the name is ambiguous (e.g. 'Springfield') the run stops free of charge and lists the matching regions to pick from. Same price as a country-wide check. Leave empty for the whole country."
          },
          "language": {
            "title": "Language",
            "enum": [
              "Afrikaans",
              "Akan",
              "Albanian",
              "Amharic",
              "Arabic",
              "Armenian",
              "Azeri",
              "Balinese",
              "Basque",
              "Belarusian",
              "Bengali",
              "Bosnian",
              "Bulgarian",
              "Burmese",
              "Catalan",
              "Cebuano",
              "Chichewa",
              "Chinese (Simplified)",
              "Chinese (Traditional)",
              "Croatian",
              "Czech",
              "Danish",
              "Dutch",
              "English",
              "Espanol (Latinoamerica)",
              "Estonian",
              "Ewe",
              "Faroese",
              "Farsi",
              "Filipino",
              "Finnish",
              "French",
              "Frisian",
              "Ga",
              "Galician",
              "Ganda",
              "Georgian",
              "German",
              "Greek",
              "Gujarati",
              "Haitian",
              "Hausa",
              "Hebrew",
              "Hebrew (old)",
              "Hindi",
              "Hungarian",
              "Icelandic",
              "IciBemba",
              "Igbo",
              "Indonesian",
              "Irish",
              "Italian",
              "Japanese",
              "Kannada",
              "Kazakh",
              "Khmer",
              "Kinyarwanda",
              "Kirundi",
              "Kongo",
              "Korean",
              "Kreol Seselwa",
              "Kreol morisien",
              "Krio",
              "Kurdish",
              "Kyrgyz",
              "Lao",
              "Latvian",
              "Lingala",
              "Lithuanian",
              "Luo",
              "Macedonian",
              "Malagasy",
              "Malay",
              "Malayam",
              "Maltese",
              "Maori",
              "Marathi",
              "Mongolian",
              "Montenegro",
              "Nepali",
              "Northern Sotho",
              "Norwegian",
              "Nyankole",
              "Oromo",
              "Pashto",
              "Pidgin",
              "Polish",
              "Portuguese",
              "Portuguese (Brazil)",
              "Portuguese (Portugal)",
              "Punjabi",
              "Quechua",
              "Romanian",
              "Romansh",
              "Russian",
              "Serbian",
              "Serbian (Latin)",
              "Sesotho",
              "Shona",
              "Silozi",
              "Sindhi",
              "Sinhalese",
              "Slovak",
              "Slovenian",
              "Somali",
              "Spanish",
              "Swahili",
              "Swedish",
              "Tagalog",
              "Tajik",
              "Tamil",
              "Telugu",
              "Thai",
              "Tigrinya",
              "Tonga (Tonga Islands)",
              "Tshiluba",
              "Tswana",
              "Tumbuka",
              "Turkish",
              "Turkmen",
              "Ukrainian",
              "Urdu",
              "Uzbek",
              "Vietnamese",
              "Welsh",
              "Wolof",
              "Xhosa",
              "Yoruba",
              "Zulu"
            ],
            "type": "string",
            "description": "Language of the Google results for the market — pick from the list. Default 'English'.",
            "default": "English"
          },
          "device": {
            "title": "Device",
            "enum": [
              "desktop",
              "mobile",
              "both"
            ],
            "type": "string",
            "description": "Which Google results to check: 'desktop', 'mobile', or 'both'. 'both' runs two checks per keyword (two SERPs = two rank-check fees — honestly billed, it is twice the data). FREE PLAN: desktop only. Default 'desktop'.",
            "default": "desktop"
          },
          "depth": {
            "title": "SERP depth (top-20 / top-50 / top-100)",
            "minimum": 20,
            "maximum": 100,
            "type": "integer",
            "description": "How deep to check each Google SERP: 20 (default), 50, or 100 results. Deeper SERPs cost proportionally more upstream, so they bill more rank-check events per keyword: top-20 = 1×, top-50 = 2×, top-100 = 4× (the per-event price never changes). Other values round UP to the next allowed depth (e.g. 30 → 50). FREE PLAN: fixed to top-20. If your domain is not found, the row says so relative to the depth checked (serp_depth field).",
            "default": 20
          },
          "includeVolume": {
            "title": "Volume enrichment (included in price)",
            "type": "boolean",
            "description": "Add estimated monthly search volume, CPC and competition to each keyword row so lost rankings can be prioritized by value. Included in the rank-check price — no extra fee. Paid Apify plans only (forced off on the free preview). Default true.",
            "default": true
          },
          "seedFromDomain": {
            "title": "Add-on: seed keywords from domain",
            "type": "boolean",
            "description": "Auto-populate the keyword list with the keywords your domain ALREADY ranks for (highest-volume first) — 'track what you rank on' without typing a list. Extra per-seeded-keyword fee (see README pricing); charged only for seeded keywords that actually reach the dataset. Paid Apify plans only. Default false.",
            "default": false
          },
          "seedLimit": {
            "title": "Seed limit",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of keywords to seed from the domain (only with 'Seed from domain'). Default 100, max 500. Total keywords per run stay capped at 2000.",
            "default": 100
          },
          "bypassRunCache": {
            "title": "Bypass 24h run-cache",
            "type": "boolean",
            "description": "Skip the 24h KV Store run-cache and take a fresh live SERP snapshot. You will be charged the per-check fees again. Default false.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}