{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Classifier & Text Classifier - Industry & Sentiment",
    "description": "Classify URLs, domains or texts with AI: industry with B2B/B2C, page type, topic, IAB category, sentiment, content moderation or your own labels, with confidence and reason. $4/1,000.",
    "version": "0.1",
    "x-build-id": "tkilX8krL7pg8z6RO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tidytools~ai-page-classifier/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tidytools-ai-page-classifier",
        "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/tidytools~ai-page-classifier/runs": {
      "post": {
        "operationId": "runs-sync-tidytools-ai-page-classifier",
        "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/tidytools~ai-page-classifier/run-sync": {
      "post": {
        "operationId": "run-sync-tidytools-ai-page-classifier",
        "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": {
          "domains": {
            "title": "URLs or domains",
            "type": "array",
            "description": "Main input (fill this, or `startUrls` / `texts` / `datasetId`). Websites or pages to classify, one per line: bare domains (stripe.com) or full URLs. Duplicates of the same site (stripe.com, https://www.Stripe.com/) are classified and charged once, with every original line listed in \"inputs\". A line that is not a URL becomes one free error row; the rest of the run continues.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "URLs (request list, optional)",
            "type": "array",
            "description": "Same as \"URLs or domains\", in Apify's request list format (also accepts a link to a text file with URLs). Kept for existing integrations; new integrations should use \"domains\".",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "taxonomy": {
            "title": "Classify by",
            "enum": [
              "pageType",
              "topic",
              "industry",
              "iab",
              "sentiment",
              "contentModeration",
              "custom"
            ],
            "type": "string",
            "description": "pageType: 20 page types (homepage, product, category, article, news, documentation, pricing, careers, legal, other...). topic: 23 topics such as technology, finance, health (several can apply). industry: the company's industry (30) plus business model and a one-line summary; best with domains. iab: the 30 tier-1 IAB categories. sentiment: positive, neutral, negative or mixed. contentModeration: safe, adult, violence, hate, spam, self-harm (several can apply). custom: your labels below.",
            "default": "pageType"
          },
          "customLabels": {
            "title": "Custom labels",
            "type": "array",
            "description": "Used when \"Classify by\" is \"Custom labels\". One label per line, optionally with a description after a colon, e.g. \"Competitor: sells project management software\". 2 to 100 labels, any language.",
            "items": {
              "type": "string"
            }
          },
          "multiLabel": {
            "title": "Allow several labels per page",
            "type": "boolean",
            "description": "Return all labels that clearly apply (in \"labels\") besides the main one. On by default for topics and IAB, off for page types, industries and custom labels."
          },
          "instructions": {
            "title": "Extra instructions",
            "maxLength": 1000,
            "type": "string",
            "description": "Optional hints for the AI, up to 1,000 characters, e.g. \"Pages about our own product are not competitors.\""
          },
          "texts": {
            "title": "Texts to classify (optional)",
            "type": "array",
            "description": "Your own texts instead of (or besides) URLs: reviews, posts, company descriptions, support tickets. Each text is one item.",
            "items": {
              "type": "string"
            }
          },
          "datasetId": {
            "title": "Dataset ID (optional)",
            "type": "string",
            "description": "Classify the output of another Actor run, e.g. a Google Maps or lead scraper. Values that look like URLs or domains are read as web pages; other values are classified as text."
          },
          "datasetField": {
            "title": "Dataset field",
            "type": "string",
            "description": "Field of the dataset items to use, e.g. \"website\" or \"text\" (dot paths such as \"company.url\" work). Empty = the first URL field found (url, website, link...), else the first long text field."
          },
          "analysisDepth": {
            "title": "Analysis depth",
            "enum": [
              "quick",
              "standard",
              "deep"
            ],
            "type": "string",
            "description": "How much of each page the AI reads. Quick: the first 4,000 characters (cheapest, fine for home pages). Standard: 12,000. Deep: 32,000 (long or complex pages). Each depth has its own price.",
            "default": "standard"
          },
          "readAboutPage": {
            "title": "Read the About page when the home page is almost empty",
            "type": "boolean",
            "description": "For home pages or bare domains with less than 300 characters of text (JavaScript shells, splash pages), also read the site's About page (an About / Company link, or /about) and classify both together. No extra charge. Not used with the Page type taxonomy.",
            "default": true
          },
          "mode": {
            "title": "Page fetching (HTTP or browser)",
            "enum": [
              "auto",
              "fast",
              "browser"
            ],
            "type": "string",
            "description": "\"Auto\" reads pages over plain HTTP and uses a real browser only when a site blocks that or needs JavaScript. Values: auto = Auto (recommended); fast = Plain HTTP only; browser = Browser only.",
            "default": "auto"
          },
          "maxConcurrency": {
            "title": "Parallel pages",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many pages are classified at the same time.",
            "default": 10
          },
          "httpVia": {
            "title": "Plain HTTP requests from",
            "enum": [
              "auto",
              "backend",
              "direct",
              "vm"
            ],
            "type": "string",
            "description": "Some sites block requests from data centers. Auto retries from a second network before falling back to a real browser. If both are refused, Auto also tries our second server (Oracle, different IP) before a real browser.",
            "default": "auto"
          },
          "itemTimeoutSecs": {
            "title": "Time limit per item (seconds)",
            "minimum": 0,
            "maximum": 900,
            "type": "integer",
            "description": "A page or text that takes longer (reading + AI) is stopped and returned as a free error row with errorType \"timeout\". 0 = no limit.",
            "default": 180
          },
          "dedupeStoreName": {
            "title": "Skip items classified in earlier runs (store name, optional)",
            "maxLength": 45,
            "type": "string",
            "description": "For lists you run again and again. Give a name (e.g. \"my-leads\"): each charged result is also kept in a key-value store named classifier-cache-<name> in your Apify account, and a later run with the same name and the same settings (taxonomy, labels, instructions, depth; for URLs also the reading mode, route and proxy) returns the earlier result for that URL or text instead of classifying it again, marked fromCache and not charged. Empty = off."
          },
          "dedupeMaxAgeDays": {
            "title": "Reuse earlier results for (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only with the store name above: results older than this are classified again (and charged as usual).",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Only used for requests sent from Apify's network. Apify proxy usage is billed to your Apify account."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}