{
  "openapi": "3.0.1",
  "info": {
    "title": "Keyword Extractor: Extract Keywords & Keyphrases from Text",
    "description": "Keyword extractor for text and web pages: extract keywords and keyphrases with RAKE, YAKE-style or TF scoring. 7 languages, auto language detection, scores and counts per keyword. No API key, no AI.",
    "version": "0.1",
    "x-build-id": "kxm9Z1PQoDFSZP2kv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data-done-right~keyword-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data-done-right-keyword-extractor",
        "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/data-done-right~keyword-extractor/runs": {
      "post": {
        "operationId": "runs-sync-data-done-right-keyword-extractor",
        "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/data-done-right~keyword-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-data-done-right-keyword-extractor",
        "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": {
          "texts": {
            "title": "Texts",
            "type": "array",
            "description": "One text per entry (a sentence, a paragraph or a whole article). Each text gets its own result row and its own keywords. Example: a product review or a blog post.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Web page URLs",
            "type": "array",
            "description": "Optional. Public web pages to read. The main article text is extracted first (menus and footers are removed), then analysed. Pages that need JavaScript to show their text are not supported. Example: https://en.wikipedia.org/wiki/Keyword_extraction",
            "items": {
              "type": "string"
            }
          },
          "datasetId": {
            "title": "Dataset with texts (optional)",
            "type": "string",
            "description": "Optional. Pick an Apify dataset (for example the output of a scraper) and the text in the field below is analysed for every item. Example: a dataset ID such as aBcD1234eFgH5678i."
          },
          "datasetField": {
            "title": "Dataset field",
            "type": "string",
            "description": "Field of each dataset item that holds the text (or a URL of a page). Dotted paths work. Example: description or reviews.0.text. Default: text.",
            "default": "text"
          },
          "method": {
            "title": "Method",
            "enum": [
              "yake",
              "rake",
              "tf",
              "combined"
            ],
            "type": "string",
            "description": "How keywords are scored. All scores are scaled so the best keyword of a text is 1.0. YAKE-style suits single documents, RAKE favors longer phrases, TF favors repeated terms.",
            "default": "yake"
          },
          "topN": {
            "title": "Keywords per text",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many keywords to return for each text. Example: 10.",
            "default": 10
          },
          "language": {
            "title": "Language",
            "enum": [
              "auto",
              "en",
              "es",
              "fr",
              "de",
              "pt",
              "it",
              "nl"
            ],
            "type": "string",
            "description": "Language of the texts, which decides the stopword list. Auto detects it for each text by comparing common words. Pick one if your texts are very short.",
            "default": "auto"
          },
          "minNgram": {
            "title": "Shortest keyword (words)",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Smallest number of words in a keyword. Use 2 to get only phrases. Example: 1.",
            "default": 1
          },
          "maxNgram": {
            "title": "Longest keyword (words)",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Largest number of words in a keyword. Example: 3 returns single words, two-word and three-word phrases.",
            "default": 3
          },
          "minScore": {
            "title": "Minimum score",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "Drop keywords scoring below this value (0 to 1, the best keyword of a text scores 1). Example: 0.2.",
            "default": 0
          },
          "lowercase": {
            "title": "Lowercase keywords",
            "type": "boolean",
            "description": "Return keywords in lowercase. Turn off to keep the most common original spelling (for example product names with capitals).",
            "default": true
          },
          "lemmatize": {
            "title": "Merge plurals (light lemmatizing)",
            "type": "boolean",
            "description": "Count simple plural forms together, for example keyword and keywords. A light suffix rule, not a full dictionary lemmatizer.",
            "default": false
          },
          "removeOverlaps": {
            "title": "Remove overlapping keywords",
            "type": "boolean",
            "description": "Skip a keyword that is only a part of a better keyword with the same count (for example drop 'extraction' when 'keyword extraction' already covers every mention).",
            "default": true
          },
          "extraStopwords": {
            "title": "Extra stopwords",
            "type": "array",
            "description": "Optional. Words that must never be part of a keyword, for example your brand name or boilerplate words. Example: click, cookie.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Most texts and pages analysed in one run. Extra items are listed as skipped and are not charged. Caps your cost.",
            "default": 100
          },
          "maxCharsPerText": {
            "title": "Max characters per text",
            "minimum": 100,
            "maximum": 2000000,
            "type": "integer",
            "description": "Longer texts are cut to this length before analysis. Default 200000 (about 30,000 words).",
            "default": 200000
          },
          "concurrency": {
            "title": "Parallel items",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many items are processed at the same time. Mostly matters for URLs.",
            "default": 5
          },
          "timeoutSecs": {
            "title": "Page timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "How long to wait for a web page before giving up on it.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy (for web pages)",
            "type": "object",
            "description": "Optional. Only used when you give page URLs and a site blocks the default Apify IP. Leave off for texts."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}