{
  "openapi": "3.0.1",
  "info": {
    "title": "Keyword Ideas: Google, YouTube & Bing Autocomplete",
    "description": "Long-tail keyword ideas from Google, YouTube, Shopping and Bing autocomplete, ranked by cross-engine consensus, with Google Trends direction. HTTP only.",
    "version": "1.0",
    "x-build-id": "AEqUkVgjLtrqkXkPP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khalilbenali~keyword-ideas-autocomplete/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khalilbenali-keyword-ideas-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/khalilbenali~keyword-ideas-autocomplete/runs": {
      "post": {
        "operationId": "runs-sync-khalilbenali-keyword-ideas-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/khalilbenali~keyword-ideas-autocomplete/run-sync": {
      "post": {
        "operationId": "run-sync-khalilbenali-keyword-ideas-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",
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "description": "The topics to find ideas for, for example \"coffee grinder\". 1 to 50 seeds. Whitespace is trimmed, and duplicates and empty lines are ignored. Every seed is expanded separately. If the same idea turns up under more than one seed it is saved under each of them, but it is charged only once per run: the later copies carry duplicateOf (the seed where it was first saved) and are free.",
            "default": [
              "coffee grinder"
            ],
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "Engines",
            "type": "array",
            "description": "Whose suggestion box to read. Ideas that several engines suggest rank higher. Google, YouTube and Google Shopping share one host, so they are queried one after the other.",
            "items": {
              "type": "string",
              "enum": [
                "google",
                "youtube",
                "shopping",
                "bing"
              ],
              "enumTitles": [
                "Google",
                "YouTube",
                "Google Shopping",
                "Bing"
              ]
            },
            "default": [
              "google",
              "bing"
            ]
          },
          "country": {
            "title": "Country",
            "minLength": 2,
            "maxLength": 2,
            "type": "string",
            "description": "Two-letter country code that localises the suggestions, for example US, GB, FR or DE.",
            "default": "US"
          },
          "language": {
            "title": "Language",
            "minLength": 2,
            "maxLength": 10,
            "type": "string",
            "description": "Language code of the suggestions, for example en, fr, de or pt-BR. Use the language your seeds are written in.",
            "default": "en"
          },
          "expansions": {
            "title": "Expansions",
            "type": "array",
            "description": "How each seed is multiplied into queries. The seed itself is always queried. Alphabet adds \"seed a\" to \"seed z\" (26 queries per engine), Digits \"seed 0\" to \"seed 9\" (10), Questions \"how seed\", \"what seed\" and ten more question words (12), Prepositions \"seed for\", \"seed with\" and five more (7), and Custom your own modifiers as prefix and suffix. More expansions mean more ideas and a longer run.",
            "items": {
              "type": "string",
              "enum": [
                "alphabet",
                "digits",
                "questions",
                "prepositions",
                "custom"
              ],
              "enumTitles": [
                "Alphabet (a-z)",
                "Digits (0-9)",
                "Questions (how, what, why...)",
                "Prepositions (for, with, near...)",
                "Custom modifiers"
              ]
            },
            "default": [
              "alphabet",
              "questions"
            ]
          },
          "customModifiers": {
            "title": "Custom modifiers",
            "maxItems": 50,
            "type": "array",
            "description": "Words to add before and after each seed, for example best, cheap or 2026. Used when Custom is selected in Expansions. Up to 50 modifiers, each at most 40 characters.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "depth": {
            "title": "Depth",
            "minimum": 1,
            "maximum": 2,
            "type": "integer",
            "description": "1 expands each seed once. 2 also re-expands the best ideas of depth 1 with plain queries (one query per idea and engine), which finds ideas two steps away from the seed.",
            "default": 1
          },
          "recursionTopN": {
            "title": "Ideas to re-expand (depth 2)",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "With depth 2: how many of the best-ranked ideas per seed are expanded again. 1 to 50.",
            "default": 10
          },
          "maxIdeasPerSeed": {
            "title": "Maximum ideas per seed",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Keeps the best-ranked ideas of each seed (most engines first, then best position) and stops asking an engine once enough ideas are collected. Also caps what you can be charged per seed. 1 to 5000.",
            "default": 500
          },
          "includeTrend": {
            "title": "Add Google Trends direction",
            "type": "boolean",
            "description": "Adds a trend object to the best-ranked ideas of every seed: rising, flat or falling, from 12 months of weekly Google Trends interest. Ideas that Google Trends has data for are charged one extra trend-signal event. It adds about 5 seconds per idea.",
            "default": false
          },
          "trendTopN": {
            "title": "Ideas to look up per seed",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many of the best-ranked ideas per seed get a trend lookup. 1 to 100. Used when Add Google Trends direction is on.",
            "default": 20
          },
          "trendGeo": {
            "title": "Trends region",
            "type": "string",
            "description": "Google Trends region for the trend lookup, for example US, FR or US-CA. Leave empty to use the country above.",
            "default": ""
          },
          "maxConcurrency": {
            "title": "Engines in parallel",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many engines are queried at the same time. Each host still gets one request at a time, with a pause of 1.6 to 2.5 seconds between requests. 1 to 4.",
            "default": 4
          },
          "maxQueriesPerSeed": {
            "title": "Maximum queries per seed and engine",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "A hard cap on the first-level queries sent per seed and engine, in priority order: seed, custom, questions, prepositions, alphabet, digits. 0 means no cap. Useful for quick tests.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}