{
  "openapi": "3.0.1",
  "info": {
    "title": "Tech Stack Detector - Wappalyzer & BuiltWith Alternative",
    "description": "Detect the tech stack of any website in bulk: CMS, ecommerce, analytics, CDN, JS frameworks, servers, payments, chat, tag managers, email provider. 7,600+ fingerprints with versions, confidence and DNS signals. $3 per 1,000 sites, offline sites free.",
    "version": "0.1",
    "x-build-id": "52caDhlFobYNEzUup"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~tech-stack-detector/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-tech-stack-detector",
        "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/scrapewise~tech-stack-detector/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-tech-stack-detector",
        "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/scrapewise~tech-stack-detector/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-tech-stack-detector",
        "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": {
          "urls": {
            "title": "Websites",
            "type": "array",
            "description": "Domains or URLs, one per line (example.com, www.example.com or https://example.com/pricing). The scheme is added when missing and duplicates are analyzed once.",
            "items": {
              "type": "string"
            },
            "default": [
              "wordpress.org",
              "www.shopify.com",
              "github.com"
            ]
          },
          "maxItems": {
            "title": "Maximum websites",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many websites. Leave empty to analyze every website in the list."
          },
          "categoriesFilter": {
            "title": "Only these categories (optional)",
            "type": "array",
            "description": "Keep only technologies in these categories, e.g. CMS, Ecommerce, Analytics, CDN, JavaScript frameworks, Payment processors, Live chat, Tag managers, Email. Case-insensitive. Empty = all 109 categories. The price is the same.",
            "items": {
              "type": "string"
            }
          },
          "minConfidence": {
            "title": "Minimum confidence",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Drop detections below this confidence (0-100). Most fingerprints score 100; weak hints score 25-50.",
            "default": 50
          },
          "includeVersions": {
            "title": "Detect versions",
            "type": "boolean",
            "description": "Extract version numbers when the website exposes them (generator meta tag, script file names, Server and X-Powered-By headers).",
            "default": true
          },
          "checkDns": {
            "title": "Check DNS records",
            "type": "boolean",
            "description": "Read the domain's MX, TXT (SPF and verification records), NS, SOA and CNAME records to detect the email provider (Google Workspace, Microsoft 365), DNS host and SaaS tools that never show on the page (Salesforce, HubSpot, Atlassian, Zoom, Slack).",
            "default": true
          },
          "legacyFieldNames": {
            "title": "Add snake_case fields",
            "type": "boolean",
            "description": "Also write status_code, final_url, tech_count, tech_names and scan_time_ms, the field names used by other tech stack Actors, so an existing integration keeps working. Turned on automatically when the input uses snake_case options (timeout_seconds, categories_filter, include_versions, include_confidence).",
            "default": false
          },
          "timeoutSecs": {
            "title": "Timeout per website (seconds)",
            "minimum": 3,
            "maximum": 60,
            "type": "integer",
            "description": "How long to wait for a website to answer before it is reported with errorCode TIMEOUT (not charged).",
            "default": 20
          },
          "maxConcurrency": {
            "title": "Parallel websites",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many websites are analyzed at the same time.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The first request goes out directly (fastest). If a website blocks it or fails, it is retried through this proxy (Apify datacenter by default) and then with a Chrome-like client.",
            "default": {
              "useApifyProxy": true
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Same as Websites. Accepts plain strings, request objects ({\"url\": \"https://example.com\"}) and {\"requestsFromUrl\": \"https://.../list.txt\"} for a remote text file."
          },
          "domains": {
            "title": "Domains",
            "type": "array",
            "description": "Same as Websites.",
            "items": {
              "type": "string"
            }
          },
          "websites": {
            "title": "Websites (alias)",
            "type": "array",
            "description": "Same as Websites.",
            "items": {
              "type": "string"
            }
          },
          "startDomains": {
            "title": "Start root domains",
            "type": "array",
            "description": "Same as Websites (the name used by the BuiltWith Actor).",
            "items": {
              "type": "string"
            }
          },
          "url": {
            "title": "Single URL",
            "type": "string",
            "description": "One website, or several separated by commas or new lines."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}