{
  "openapi": "3.0.1",
  "info": {
    "title": "Search Autocomplete Scraper - Google, Bing, Pinterest, DDG",
    "description": "Keyword suggestions from Google, Bing, DuckDuckGo and Pinterest autocomplete in one run, with A-Z, 0-9 and question expansion, any language and country, engine count per suggestion, daily new-suggestion tracking and a name fixer. Error rows are free.",
    "version": "0.1",
    "x-build-id": "3Z7xjUiTEJa5wbJRN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~search-autocomplete-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-search-autocomplete-scraper",
        "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/scrapewise~search-autocomplete-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-search-autocomplete-scraper",
        "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/scrapewise~search-autocomplete-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-search-autocomplete-scraper",
        "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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Seed keywords, one per line (for example iphone 17, ai agents, protein powder). Each keyword is typed into every engine chosen below and its suggestions come back as rows with the engine, position and the exact query typed. In Canonicalize mode, put the misspelled names here instead (for example nubanc, disney plas, netflx). Leave empty to run the example keyword. Also accepts 'names', 'queries', 'searchTerms' or 'keyword'.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "suggestions",
              "canonicalize"
            ],
            "type": "string",
            "description": "Suggestions (default): every autocomplete suggestion for each keyword, charged per suggestion row. Canonicalize: each keyword is a name typed or transcribed wrong, and the Actor returns the right spelling decided by a vote between the engines (the original word wins when the engines also suggest it, so a real name is never 'fixed'), charged once per name.",
            "default": "suggestions"
          },
          "engines": {
            "title": "Search engines",
            "type": "array",
            "description": "Which autocomplete to read: Google, Bing, DuckDuckGo and Pinterest. When this field is left out (API calls), the run reads Google, Bing and DuckDuckGo; add Pinterest for the searches people type into Pinterest (Pinterest SEO, pin titles and boards). Only search suggestions are returned, never profiles. Each engine adds its own rows (or its vote in Canonicalize mode), so fewer engines means fewer rows and a lower cost. An engine that fails gets a free error row and the others are still delivered. Also accepts 'ddg' for DuckDuckGo.",
            "items": {
              "type": "string",
              "enum": [
                "google",
                "bing",
                "duckduckgo",
                "pinterest"
              ],
              "enumTitles": [
                "Google",
                "Bing",
                "DuckDuckGo",
                "Pinterest"
              ]
            },
            "default": [
              "google",
              "bing",
              "duckduckgo"
            ]
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Two-letter language code for the suggestions (default en; for example es, de, fr, it, pt, ja). A locale such as en-GB or pt-BR also sets the country. It also picks the question words used by 'Question expansion'. Also accepts 'hl'.",
            "default": "en"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code (default us; for example gb, de, fr, es, in, au). Sets Google's gl, Bing's market, DuckDuckGo's region and Pinterest's locale, so suggestions match what people in that country type. Empty means the language's main country. Also accepts 'gl'.",
            "default": "us"
          },
          "expandAlphabet": {
            "title": "A-Z expansion",
            "type": "boolean",
            "description": "Also types 'keyword a', 'keyword b' ... 'keyword z': 26 more queries per engine, usually 150 to 300 more suggestions per keyword in total. The classic long-tail keyword research method. Off by default; each extra suggestion is charged as a row, so set 'Max suggestions per keyword' to cap it.",
            "default": false
          },
          "expandNumbers": {
            "title": "0-9 expansion",
            "type": "boolean",
            "description": "Also types 'keyword 0' ... 'keyword 9': 10 more queries per engine, which surface years, sizes, versions and model numbers (for example 'iphone 17 pro max'). Off by default.",
            "default": false
          },
          "expandQuestions": {
            "title": "Question expansion",
            "type": "boolean",
            "description": "Also types the question words of the chosen language before the keyword (what, how, why, when, where, who, which, can, is, are, does, will in English; qué, cómo, por qué in Spanish; was, wie, warum in German...). Returns the questions people ask about the topic, useful for FAQ and content ideas. Off by default.",
            "default": false
          },
          "prefixes": {
            "title": "Extra words before the keyword",
            "type": "array",
            "description": "Your own context words typed before each keyword, one per line (for example best, cheap, buy). Each word is one more query per engine and keyword. Leave empty for none.",
            "items": {
              "type": "string"
            }
          },
          "suffixes": {
            "title": "Extra words after the keyword",
            "type": "array",
            "description": "Your own context words typed after each keyword, one per line (for example vs, for, near me, review, 2026). Each word is one more query per engine and keyword. Leave empty for none.",
            "items": {
              "type": "string"
            }
          },
          "dedupeAcrossEngines": {
            "title": "One row per suggestion (merge engines)",
            "type": "boolean",
            "description": "Off (default): one row per engine and suggestion, so you see each engine's own position. On: one row per keyword and suggestion, and the engines field lists every engine that suggested it, which means fewer rows and a lower cost. Either way engineCount tells in how many engines the suggestion appeared, and each engine's suggestion comes only once per keyword even when several expansions return it.",
            "default": false
          },
          "maxItems": {
            "title": "Max suggestions per keyword",
            "minimum": 0,
            "type": "integer",
            "description": "Stop delivering suggestions for a keyword after this many rows (for example 100). 0 (default) means no limit: one keyword with every expansion and three engines gives roughly 500 to 1,500 rows. Suggestions past the limit are not charged. Also accepts 'maxSuggestionsPerKeyword'.",
            "default": 0
          },
          "contextWords": {
            "title": "Context words (canonicalize mode)",
            "type": "array",
            "description": "Canonicalize mode only: topic words that help the engines guess the right name, one per line (for example bank, streaming, football). Each word is typed together with the name, and a vote with context counts double. Leave empty to vote on the name alone.",
            "items": {
              "type": "string"
            }
          },
          "compareWithPreviousRun": {
            "title": "Mark new suggestions (compare with earlier runs)",
            "type": "boolean",
            "description": "For scheduled runs. Remembers every suggestion delivered for each keyword (with the same language, country and engines) in a named key-value store in your account ('search-autocomplete-scraper-state') and adds isNew and firstSeenAt to every row: isNew true means the suggestion was not there in earlier runs, a sign of a new trend. The first run of a keyword only saves the baseline (isNew empty). Suggestions not seen for 60 days are forgotten. Same price per row.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new suggestions",
            "type": "boolean",
            "description": "Delivers only suggestions that were not delivered in earlier runs of the same keyword, and turns on the comparison above by itself. The first run delivers everything as the baseline. Seen suggestions are skipped and not charged, so a quiet day costs nothing. Off by default.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The default Apify Proxy (datacenter) works for all four engines. A failing IP is dropped and another is tried; if an engine keeps failing on datacenter IPs, that engine moves to the residential group by itself when your account has it. Keep the default.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}