{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Autocomplete Scraper",
    "description": "Google Autocomplete keyword scraper for long-tail SEO research. Expand seeds with A–Z, numbers, questions, prepositions, comparisons and custom modifiers, recurse through suggestions, run country/language matrices, cap requests/results. From $0.50 per 1,000 keywords, platform usage included.",
    "version": "0.1",
    "x-build-id": "YGTZH1W6ahuGXQdND"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zenomastro~google-autocomplete-keywords/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zenomastro-google-autocomplete-keywords",
        "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/zenomastro~google-autocomplete-keywords/runs": {
      "post": {
        "operationId": "runs-sync-zenomastro-google-autocomplete-keywords",
        "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/zenomastro~google-autocomplete-keywords/run-sync": {
      "post": {
        "operationId": "run-sync-zenomastro-google-autocomplete-keywords",
        "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": [
          "seeds"
        ],
        "properties": {
          "seeds": {
            "title": "Seed keywords",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "Seed keywords to expand with Google Autocomplete, one per line, e.g. running shoes or project management software. Up to 100 seeds; each seed is expanded with the patterns below.",
            "default": [
              "artificial intelligence"
            ],
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Google hl language code, e.g. en, it, de, fr, es, pt-BR. Language names such as Italian also work. For several languages at once use the Language matrix below.",
            "default": "en"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Google gl country code, e.g. US, GB, IT, DE. Country names such as Germany also work. For several countries at once use the Country matrix below.",
            "default": "US"
          },
          "sources": {
            "title": "Suggestion sources",
            "uniqueItems": true,
            "type": "array",
            "description": "Which Google autocomplete to read. Web is the classic Google search box; YouTube returns video-search suggestions; Shopping returns product-search suggestions (often fewer). Each extra source repeats every query, so requests and results scale with the number of sources. A suggestion found in two sources is a separate result in each.",
            "items": {
              "type": "string",
              "enum": [
                "web",
                "youtube",
                "shopping"
              ],
              "enumTitles": [
                "Google web search",
                "YouTube search",
                "Google Shopping"
              ]
            },
            "default": [
              "web"
            ]
          },
          "suggestClient": {
            "title": "Suggestion endpoint",
            "enum": [
              "firefox",
              "chrome"
            ],
            "type": "string",
            "description": "Extended returns up to 50% more suggestions for the same number of requests, plus Google's relevance score (relevance) and suggestion type (suggestType, for example QUERY or ENTITY). Website-link suggestions it returns are skipped and never billed. Standard keeps the exact behaviour of earlier runs.",
            "default": "firefox"
          },
          "expandAlphabet": {
            "title": "Append A-Z",
            "type": "boolean",
            "description": "Query seed + each letter a-z, e.g. \"running shoes a\", \"running shoes b\" (26 requests per seed).",
            "default": true
          },
          "prependAlphabet": {
            "title": "Prepend A-Z",
            "type": "boolean",
            "description": "Query each letter a-z + seed, e.g. \"a running shoes\" (26 extra requests per seed).",
            "default": false
          },
          "expandNumbers": {
            "title": "Append 0-9",
            "type": "boolean",
            "description": "Also query seed + digits 0-9 for numeric long-tail variations, e.g. sizes, years or models.",
            "default": false
          },
          "expandQuestions": {
            "title": "Question prefixes",
            "type": "boolean",
            "description": "Add question prefixes: how/what/why/when/where/who/which/can/does/is/best + seed (or their translations when \"Localized modifiers\" is on).",
            "default": true
          },
          "expandPrepositions": {
            "title": "Preposition expansions",
            "type": "boolean",
            "description": "Expand seed + for/with/without/near/vs/like/to/from/in (or their translations when \"Localized modifiers\" is on).",
            "default": true
          },
          "expandComparisons": {
            "title": "Comparison & alternatives",
            "type": "boolean",
            "description": "Expand seed + vs/alternative/alternatives/competitors to find comparison and competitor keywords.",
            "default": false
          },
          "customPrefixes": {
            "title": "Custom prefixes",
            "maxItems": 100,
            "type": "array",
            "description": "Optional custom words or phrases queried before each seed, e.g. how to, best, free.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "customSuffixes": {
            "title": "Custom suffixes",
            "maxItems": 100,
            "type": "array",
            "description": "Optional custom words or phrases queried after each seed, e.g. software, near me, for beginners.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "localizeModifiers": {
            "title": "Localized modifiers",
            "type": "boolean",
            "description": "Use question, preposition and comparison words in the run's language (Italian, German, Spanish, French, Portuguese, Dutch; other languages keep English), and classify searchIntent with that language's keywords too. For example with language it: \"come <seed>\", \"<seed> per\", \"<seed> alternativa\". Off keeps the English words for every language, as before.",
            "default": false
          },
          "recursiveDepth": {
            "title": "Recursive depth",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "1 = only the patterns above. 2 or 3 = also use the returned suggestions as new queries for deeper long-tail discovery (many more requests; the request and result caps still apply).",
            "default": 1
          },
          "maxSuggestions": {
            "title": "Maximum unique suggestions",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on unique suggestion rows saved (and charged) across all seeds.",
            "default": 5000
          },
          "maxSuggestionsPerSeed": {
            "title": "Maximum suggestions per seed",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Per-seed cap on saved suggestions before moving to the next seed.",
            "default": 2000
          },
          "maxRequests": {
            "title": "Maximum Google requests",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on Google Suggest requests for predictable runtime and request volume.",
            "default": 500
          },
          "dedupeAcrossSeeds": {
            "title": "Deliver each suggestion once across seeds",
            "type": "boolean",
            "description": "When several seeds return the same suggestion (same language, country and source), save and charge it only for the first seed. Off keeps one row per seed, as before.",
            "default": false
          },
          "excludeTerms": {
            "title": "Exclude suggestions containing",
            "maxItems": 200,
            "type": "array",
            "description": "Skip suggestions that contain any of these words or phrases (whole words, case- and accent-insensitive), e.g. free, jobs, login or a competitor's brand. Skipped suggestions are not saved, not charged and not expanded further.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minWordCount": {
            "title": "Minimum words per suggestion",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Save only suggestions with at least this many words, e.g. 3 for long-tail keywords only. 1 keeps everything. Shorter suggestions are not charged.",
            "default": 1
          },
          "onlyTags": {
            "title": "Only suggestions with these tags",
            "uniqueItems": true,
            "type": "array",
            "description": "Save only suggestions that carry at least one of these tags, e.g. Questions for FAQ content or Comparisons for 'vs' pages. Empty saves every suggestion. Other suggestions are not charged.",
            "items": {
              "type": "string",
              "enum": [
                "question",
                "comparison",
                "local",
                "price",
                "free",
                "best",
                "review",
                "how_to",
                "year",
                "long_tail"
              ],
              "enumTitles": [
                "Questions (how, what, why, is...)",
                "Comparisons (vs, alternative, competitors)",
                "Local (near me, nearby)",
                "Price (price, cost, cheap, discount)",
                "Free",
                "Best / top N",
                "Reviews (review, rating, legit)",
                "How-to (how to, guide, tutorial)",
                "Contains a year (e.g. 2026)",
                "Long tail (4+ words)"
              ]
            },
            "default": []
          },
          "languages": {
            "title": "Language matrix",
            "maxItems": 20,
            "type": "array",
            "description": "Optional Google hl language codes, e.g. en, it, de. When set, every language × country combination is queried; otherwise the single Language field is used.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Country matrix",
            "maxItems": 20,
            "type": "array",
            "description": "Optional Google gl country codes, e.g. US, GB, IT. When set, every language × country combination is queried (maximum 100 combinations).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "monitorName": {
            "title": "Keyword monitor name",
            "type": "string",
            "description": "Reuse a stable name on scheduled runs, e.g. running-shoes-us, to detect newly appeared and disappeared suggestions and rank changes.",
            "default": ""
          },
          "onlyNew": {
            "title": "Emit only new suggestions",
            "type": "boolean",
            "description": "With a monitor name, save and charge only suggestions not seen in the previous snapshot of the same seed, language, country and source.",
            "default": false
          },
          "delayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "Delay between Google Suggest requests, e.g. 120. The Actor also slows down automatically (up to 2 s) when Google answers HTTP 429/503 and speeds up again afterwards.",
            "default": 120
          },
          "requestTimeoutSecs": {
            "title": "Request timeout",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Maximum seconds allowed for each Google Suggest HTTP request.",
            "default": 15
          },
          "retries": {
            "title": "Retries",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Retries each failed Suggest request after transient network or HTTP errors, with backoff; rate limits wait longer and honour Retry-After, and HTTP 400/404 are not retried.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}