{
  "openapi": "3.0.1",
  "info": {
    "title": "Keyword Research Scraper: 8 search boxes, a-z, questions, CSV",
    "description": "One seed list, suggestions from every search box you select, one flat CSV or JSON dataset. Google, YouTube, Amazon, Bing, DuckDuckGo, TikTok, Pinterest, App Store and Play. Each row has the suggestion, rank, expansion and engine.",
    "version": "0.1",
    "x-build-id": "dXUDOsTkooifU78TK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tallyrake~keyword-research-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tallyrake-keyword-research-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/tallyrake~keyword-research-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tallyrake-keyword-research-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/tallyrake~keyword-research-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tallyrake-keyword-research-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",
        "required": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Seed keywords",
            "minItems": 1,
            "type": "array",
            "description": "One seed per line. Each seed is expanded (see Expansions) and every expanded query is sent to each selected engine.",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "Engines",
            "uniqueItems": true,
            "type": "array",
            "description": "Search boxes to query, in this order. Engines run one after another. A blocked or failed engine is recorded and the run continues. appstore queries Apple and Google Play.",
            "items": {
              "type": "string",
              "enum": [
                "google",
                "youtube",
                "amazon",
                "bing",
                "duckduckgo",
                "tiktok",
                "pinterest",
                "appstore"
              ],
              "enumTitles": [
                "Google",
                "YouTube",
                "Amazon",
                "Bing",
                "DuckDuckGo",
                "TikTok",
                "Pinterest",
                "App Store and Play"
              ]
            },
            "default": [
              "google",
              "youtube",
              "amazon"
            ]
          },
          "expansions": {
            "title": "Expansions",
            "uniqueItems": true,
            "type": "array",
            "description": "How to fan each seed out. alphabet: seed + a..z (26 queries). questions: who/what/why/how/when/where/which/is/are/can/does/do/will/should + seed (14). prepositions: seed + for/with/without/to/near/in/on/from/like/after/before (11). comparisons: seed + vs/or/versus/and (4). numbers: seed + 1..5/10/2026 (7). The plain seed is always queried. The same plan is sent to every selected engine.",
            "items": {
              "type": "string",
              "enum": [
                "alphabet",
                "questions",
                "prepositions",
                "comparisons",
                "numbers"
              ],
              "enumTitles": [
                "Alphabet (a-z)",
                "Questions",
                "Prepositions",
                "Comparisons",
                "Numbers"
              ]
            },
            "default": [
              "alphabet",
              "questions",
              "prepositions"
            ]
          },
          "depth": {
            "title": "Depth",
            "minimum": 1,
            "maximum": 2,
            "type": "integer",
            "description": "1 = expand the seeds only. 2 = also send every first-level suggestion back to that engine (capped by Max queries per keyword, same rule as the single-engine actors).",
            "default": 1
          },
          "maxQueriesPerKeyword": {
            "title": "Max queries per keyword",
            "minimum": 1,
            "type": "integer",
            "description": "Cap on suggestion requests per seed per engine, per depth. App Store and Play applies the cap once per store.",
            "default": 300
          },
          "country": {
            "title": "Country / region",
            "type": "string",
            "description": "Two-letter country code, e.g. us, gb, de. Also read from region when country is omitted. Amazon's marketplace, Bing's market, DuckDuckGo's kl, Pinterest's host and TikTok's region are derived from this. gb is sent to Amazon as UK, to Bing as GB, and to DuckDuckGo as uk.",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language code, e.g. en, de, es, fr, pt, ja. Bing's market is language-COUNTRY (en-US) unless language already looks like en-US. DuckDuckGo's kl is country-language (us-en).",
            "default": "en"
          },
          "dedupe": {
            "title": "Deduplicate suggestions per seed",
            "type": "boolean",
            "description": "Keep the first occurrence of each suggestion per seed per engine (case-insensitive). App Store and Play dedupes per store, so the same text from Apple and Play is two rows. The same text from two engines is two rows.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy, datacenter by default (leave proxy groups empty). Each engine rotates its own session on HTTP 429 or 403. A block stops that engine only. Residential is optional if datacenter is blocked.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel suggestion requests inside one engine. Engines themselves run one after another. 3 is the house default; up to 10 with Apify Proxy.",
            "default": 3
          },
          "pacingMs": {
            "title": "Pacing (ms)",
            "minimum": 0,
            "type": "integer",
            "description": "Base jittered delay between requests for each engine; 0 disables pacing. Each engine paces itself.",
            "default": 200
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}