{
  "openapi": "3.0.1",
  "info": {
    "title": "Search Autocomplete: Google, YouTube, Bing & eBay Keywords",
    "description": "Get keyword ideas from the search-box autocomplete of Google, YouTube, Bing and eBay. A-Z and question expansion, recursive long-tail discovery, many countries and languages, dedupe across engines. Clean JSON for SEO and content research. $0.20 per 1,000 suggestions.",
    "version": "1.1",
    "x-build-id": "Lob2G5fLB9GaEVdns"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fairfetch~search-autocomplete/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fairfetch-search-autocomplete",
        "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/fairfetch~search-autocomplete/runs": {
      "post": {
        "operationId": "runs-sync-fairfetch-search-autocomplete",
        "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/fairfetch~search-autocomplete/run-sync": {
      "post": {
        "operationId": "run-sync-fairfetch-search-autocomplete",
        "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",
            "type": "array",
            "description": "One keyword or phrase per line, e.g. \"coffee maker\". Each seed is typed into every selected engine's search box (plus the expanded variants if you choose an expansion below). Google and YouTube accept at most 100 characters per query; longer seeds are skipped there with a free notice row. Seeds without any letter or digit (e.g. \"???\") are skipped.",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "Engines",
            "type": "array",
            "description": "Which search boxes to read. Google: up to 15 suggestions per query. YouTube: about 14. Bing: up to 25. eBay: up to 10 (marketplace searches). Amazon and DuckDuckGo were removed on 20 Oct 2026: they are still accepted so saved inputs keep working, but they are skipped with a free notice row and cost nothing.",
            "items": {
              "type": "string",
              "enum": [
                "google",
                "youtube",
                "bing",
                "ebay",
                "amazon",
                "duckduckgo"
              ],
              "enumTitles": [
                "Google",
                "YouTube",
                "Bing",
                "eBay",
                "Amazon (removed, skipped)",
                "DuckDuckGo (removed, skipped)"
              ]
            },
            "default": [
              "google",
              "youtube",
              "bing"
            ]
          },
          "country": {
            "title": "Country",
            "pattern": "^[A-Za-z]{2}$",
            "type": "string",
            "description": "Two-letter country code, e.g. us, gb, de, fr, in, jp, br. Google and YouTube accept any country. Bing uses the country's market (34 countries; for others Bing may answer with its default suggestions). eBay has sites for us, ca, gb, au, at, be, fr, de, it, nl, es, ch, ie, pl (others use ebay.com). The country and language each engine used are in every result row and in the run summary.",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "pattern": "^([A-Za-z]{2,3}([-_]([A-Za-z]{2}|[0-9]{3}|[A-Za-z]{4}))?)?$",
            "type": "string",
            "description": "Language code such as en, de, es, pt-BR, es-419 or zh-TW. Leave empty to use the country's main language. eBay always answers in its site's language; Bing uses the country's market language when it has no market for your language."
          },
          "expansion": {
            "title": "Keyword expansion",
            "enum": [
              "none",
              "alphabet",
              "questions",
              "custom"
            ],
            "type": "string",
            "description": "Type more than just the seed to discover long-tail keywords. Alphabet: the seed, then seed + a ... z and 0 ... 9 (37 queries per seed and engine). Questions: the seed plus question words and comparisons such as how, what, why, best, vs, for, with, near me (about 29 queries; localised for de, fr, es, it, pt, nl). Custom: the seed plus your own modifiers below.",
            "default": "none"
          },
          "customModifiers": {
            "title": "Custom modifiers",
            "type": "array",
            "description": "Used with \"Custom modifiers\" expansion (ignored with the other expansions). Each modifier is added after the seed (\"for kids\" gives \"coffee maker for kids\"). Use {seed} to place the seed elsewhere: \"best {seed} 2026\".",
            "items": {
              "type": "string"
            }
          },
          "recursionDepth": {
            "title": "Recursive depth",
            "minimum": 0,
            "maximum": 2,
            "type": "integer",
            "description": "0 = off. 1 = also type every suggestion back into the same engine to get suggestions of suggestions. 2 = one more level. Grows fast (about 10x requests per level); Max requests below caps it.",
            "default": 0
          },
          "dedupe": {
            "title": "Remove duplicates",
            "enum": [
              "perEngine",
              "global",
              "none"
            ],
            "type": "string",
            "description": "Per engine (default): each suggestion once per engine, even if several queries return it. Across engines: each suggestion once in the whole run (the first engine to return it is kept). Off: every row, including repeats. You are only charged for rows in the dataset.",
            "default": "perEngine"
          },
          "maxSuggestionsTotal": {
            "title": "Max suggestions in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many suggestions have been saved (each one is a charged result). 0 = no limit (your run's maximum charge still applies).",
            "default": 5000
          },
          "maxRequests": {
            "title": "Max requests (hard cap)",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Upper limit on autocomplete requests in this run, recursion included; the run never sends more. Shared fairly between engines (an engine that needs less leaves the rest to the others). Queries beyond the cap are skipped and counted per seed in the run summary.",
            "default": 2000
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Usually not needed. If an engine starts rate-limiting (the run summary then reports HTTP 429/403 for it), enable Apify Proxy (the datacenter proxy is enough in most cases). With a proxy, every request opens a new proxy connection, so a rotating proxy can use a different IP address each time.",
            "default": {
              "useApifyProxy": false
            }
          },
          "maxConcurrencyPerEngine": {
            "title": "Parallel requests per engine",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many requests run at the same time for each engine. Kept low on purpose to stay polite; requests to one host are also spaced out.",
            "default": 2
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Timeout for a single request.",
            "default": 20
          },
          "maxRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 6,
            "type": "integer",
            "description": "Retries for network errors, HTTP 429 / 403 and 5xx responses, with exponential backoff (honours Retry-After). An engine that fails 3 queries in a row is stopped for the rest of the run; other engines continue. Queries an engine refuses (HTTP 400, e.g. too long) are not retried and don't stop the engine.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}