{
  "openapi": "3.0.1",
  "info": {
    "title": "Amazon Keyword Discovery Tool",
    "description": "Amazon autocomplete across 20 markets with filters, localized queries, depth-3 recursion and monitoring. Basic packs from $0.00005; advanced workflows $0.25/1,000 rows. Startup and platform usage additional. No actual search volume.",
    "version": "0.1",
    "x-build-id": "yteoVmzejWhDJO7Mt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~amazon-keyword-discovery-tool/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-amazon-keyword-discovery-tool",
        "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/khadinakbar~amazon-keyword-discovery-tool/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-amazon-keyword-discovery-tool",
        "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/khadinakbar~amazon-keyword-discovery-tool/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-amazon-keyword-discovery-tool",
        "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,
            "maxItems": 50,
            "type": "array",
            "description": "Seed phrases to expand, such as a product type or niche (\"laptop stand\", \"yoga mat\"). 1-50 phrases, each up to 100 characters. Duplicates are removed case-insensitively. Use short head terms: the tool appends letters, digits, or buyer modifiers to them and records what Amazon's search box suggests.",
            "items": {
              "type": "string"
            }
          },
          "marketplaces": {
            "title": "Amazon marketplaces",
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "description": "Amazon markets to compare in one run. Twenty markets including India (IN) and Ireland (IE). Selecting more than one marketplace automatically selects Advanced pricing: $0.00025 per saved keyword, replacing Basic pack fees; startup and platform usage additional.",
            "items": {
              "type": "string"
            },
            "default": [
              "US"
            ]
          },
          "expansionMode": {
            "title": "Expansion mode",
            "enum": [
              "seedOnly",
              "alphabet",
              "numbers",
              "buyerModifiers",
              "full",
              "custom"
            ],
            "type": "string",
            "description": "How each seed is expanded into autocomplete prefixes. seedOnly = 1 lookup (the seed itself, ~10 keywords). alphabet = seed + a..z (27 lookups, broadest long-tail). numbers = seed + 0..9 (sizes, counts, models). buyerModifiers = 23 buyer-intent patterns such as \"best {seed}\", \"{seed} for women\", \"{seed} under 50\". full = alphabet + numbers + buyerModifiers (+ customModifiers). custom = only your customModifiers.",
            "default": "alphabet"
          },
          "customModifiers": {
            "title": "Custom modifiers",
            "maxItems": 50,
            "type": "array",
            "description": "Extra expansion patterns. Put {seed} where the seed phrase goes (\"best {seed} for\", \"{seed} with\"); patterns without {seed} are appended after it (\"for small spaces\" -> \"laptop stand for small spaces\"). Used by the custom mode and added to full mode. Up to 50 entries.",
            "items": {
              "type": "string"
            }
          },
          "department": {
            "title": "Amazon department",
            "enum": [
              "aps",
              "electronics",
              "computers",
              "kitchen",
              "garden",
              "tools",
              "hpc",
              "beauty",
              "fashion",
              "toys-and-games",
              "baby-products",
              "pets",
              "sporting",
              "automotive",
              "office-products",
              "arts-crafts",
              "grocery",
              "stripbooks",
              "digital-text",
              "videogames",
              "industrial"
            ],
            "type": "string",
            "description": "Amazon search department (search alias) that scopes suggestions. aps = All Departments (default). Pick a department to get category-specific suggestions, for example kitchen or pets.",
            "default": "aps"
          },
          "maxResults": {
            "title": "Max keywords saved",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on full saved keyword rows, 1–10,000, default 100. Basic: first up-to-100 $0.00005 then $0.00003 per additional up-to-10. Advanced: $0.00025 per row. Startup and platform usage additional.",
            "default": 100
          },
          "maxResultsPerSeed": {
            "title": "Max keywords per seed",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Cap on keyword rows saved per seed phrase (across its marketplaces), so one broad seed cannot use the whole budget. Defaults to 1000.",
            "default": 1000
          },
          "maxLookups": {
            "title": "Max autocomplete lookups",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Maximum distinct autocomplete lookups across all seeds, markets, departments and recursion levels, 1–2,000. Default 300. Requests consume metered platform usage even when no keyword matches.",
            "default": 300
          },
          "includeSeedKeyword": {
            "title": "Include the seed phrase itself",
            "type": "boolean",
            "description": "When true (default), a suggestion that exactly equals the seed phrase is kept as a row (isSeedKeyword = true). Set false to return only new keywords.",
            "default": true
          },
          "departments": {
            "title": "Departments to compare",
            "minItems": 1,
            "maxItems": 10,
            "type": "array",
            "description": "Compare 1–10 Amazon search aliases in the same run. Each department has distinct keyword provenance. Omit this field to use Department. This shares maxLookups with every seed and marketplace. Selecting more than one department automatically selects Advanced pricing: $0.00025 per saved keyword, replacing Basic pack fees; startup and platform usage additional.",
            "items": {
              "type": "string"
            }
          },
          "expansionDepth": {
            "title": "Recursive discovery depth",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Re-seed discovered phrases for 0–3 levels under one shared maxLookups budget. Setting depth above zero automatically selects Advanced pricing: $0.00025 per saved keyword, replacing Basic pack fees; startup and platform usage additional.",
            "default": 0
          },
          "resultOrder": {
            "title": "Keyword ordering",
            "enum": [
              "strongest",
              "alphabetical",
              "source"
            ],
            "type": "string",
            "description": "Choose strongest, alphabetical or source order. Strongest uses observed appearance counts and rank. Alphabetical sorts inside seed and marketplace groups. Source keeps discovery order within each group.",
            "default": "strongest"
          },
          "mustIncludeTerms": {
            "title": "Include any of these terms",
            "maxItems": 50,
            "type": "array",
            "description": "Keep keywords containing at least one supplied term. Matching ignores case. Combine this with other filters to target the final keyword bank. Empty input keeps all keywords.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "excludeTerms": {
            "title": "Exclude these terms",
            "maxItems": 50,
            "type": "array",
            "description": "Remove keywords containing any supplied term. Matching ignores case. Removed keywords incur no keyword event. Empty input excludes nothing.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "mustContainSeed": {
            "title": "Require all seed words",
            "type": "boolean",
            "description": "Keep phrases containing every word of their original root seed. Word order may differ. This works after recursive discovery too. Default false retains all source suggestions.",
            "default": false
          },
          "minWordCount": {
            "title": "Minimum keyword length in words",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Keep phrases with at least this many whitespace-separated words. Use 3 or more for English long-tail phrases. Word counts are whitespace based for every language. Default 0 applies no length filter.",
            "default": 0
          },
          "onlyQuestions": {
            "title": "Keep question phrases",
            "type": "boolean",
            "description": "Keep phrases starting with a recognized English or built-in locale question prefix. This wording heuristic does not prove question intent. Enable expandQuestions to search additional question prefixes.",
            "default": false
          },
          "expandPrefixAlphabet": {
            "title": "Expand letters before the seed",
            "type": "boolean",
            "description": "Search a–z before each seed as well as the chosen expansion mode. This exposes different autocomplete lists from suffix letters. It shares the single maxLookups cap. Default false keeps existing expansion behavior.",
            "default": false
          },
          "expandQuestions": {
            "title": "Expand localized question prefixes",
            "type": "boolean",
            "description": "Prepend questions in the marketplace default language. English for US, UK, CA, AU, SG, IN and IE.",
            "default": false
          },
          "proxyMode": {
            "title": "Request route",
            "enum": [
              "auto",
              "direct",
              "residential"
            ],
            "type": "string",
            "description": "Use auto for direct requests with residential recovery. Direct skips residential recovery. Residential explicitly uses the metered Apify Residential route. Proxy traffic is platform usage and may dominate the cost of a large run.",
            "default": "auto"
          },
          "expandComparisons": {
            "title": "Comparison queries",
            "type": "boolean",
            "description": "Append locale-specific comparison wording such as vs, oder or 比較.",
            "default": false
          },
          "expandPrepositions": {
            "title": "Preposition queries",
            "type": "boolean",
            "description": "Append locale-specific prepositions such as with, sans or mit.",
            "default": false
          },
          "monitorMode": {
            "title": "New keywords only",
            "type": "boolean",
            "description": "Persist a caller-scoped history and emit only unseen phrases. Run the same scope sequentially; history retains up to 10,000 identities for 30 days. Enabling monitoring automatically selects Advanced pricing: $0.00025 per saved keyword, replacing Basic pack fees; startup and platform usage additional.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name",
            "pattern": "^[a-zA-Z0-9_-]{1,60}$",
            "type": "string",
            "description": "Separate monitoring histories, e.g. weekly-launch. Same caller, query settings and name reuse history. New name starts fresh. No schedule is created.",
            "default": "default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}