{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Technology Lookup & Tech Stack Detector",
    "description": "Find out what any website is built with: CMS, ecommerce platform, frameworks, analytics, CDN, payments, email provider and 7,600+ more technologies, with version and confidence. Bulk URLs, any page (not just the homepage). $2 per 1,000 sites; failed sites are free.",
    "version": "0.1",
    "x-build-id": "cDUauoNgzeoisjcut"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/postatelier~website-tech-stack/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-postatelier-website-tech-stack",
        "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/postatelier~website-tech-stack/runs": {
      "post": {
        "operationId": "runs-sync-postatelier-website-tech-stack",
        "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/postatelier~website-tech-stack/run-sync": {
      "post": {
        "operationId": "run-sync-postatelier-website-tech-stack",
        "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": "Pages or domains to check, one per line. Any page works (e.g. a pricing or checkout page), not just the homepage. Bare domains get https://.",
            "items": {
              "type": "string"
            }
          },
          "renderJs": {
            "title": "Render JavaScript (browser mode)",
            "type": "boolean",
            "description": "Load each page in Chrome and also read JavaScript globals, the rendered DOM and background requests. On allbirds.com this found 25 website technologies instead of 10 (frameworks, analytics and ad tags, widgets). Slower, and costs an extra $0.003 per site. Off = fast HTTP check.",
            "default": false
          },
          "checkDns": {
            "title": "Check DNS records",
            "type": "boolean",
            "description": "Read MX, TXT, NS and SOA records of the domain: shows the email provider (Google Workspace, Microsoft 365), DNS host, and SaaS tools that left domain-verification records.",
            "default": true
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "technologies",
              "sites"
            ],
            "type": "string",
            "description": "One row per technology (best for filtering and spreadsheets) or one row per site with a technologies list (best for CRM enrichment).",
            "default": "technologies"
          },
          "categories": {
            "title": "Only these categories",
            "type": "array",
            "description": "Keep only technologies in these categories, e.g. CMS, Ecommerce, Analytics, Payment processors, CDN, Webmail, JavaScript frameworks, Marketing automation, Live chat. Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "minConfidence": {
            "title": "Minimum confidence (0–100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Drop weak, single-hint matches below this confidence. 50 is a good balance; 0 shows everything.",
            "default": 50
          },
          "monitorChanges": {
            "title": "Only report changes (monitoring)",
            "type": "boolean",
            "description": "Remember each site's technologies between runs and output only what was added or removed since the last run (the first run outputs a baseline). Use it with a weekly schedule to get alerts when a prospect or competitor switches platforms.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Keeps separate histories for separate lists, e.g. \"prospects\" or \"competitors\". Use the same name on every scheduled run.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "Parallel sites",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many sites to check at once. Default: 10 in HTTP mode (up to 50), 3 in browser mode (up to 5; give browser mode 2 GB or more memory for 3+)."
          },
          "timeoutSecs": {
            "title": "Timeout per site (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Give up on a site after this many seconds (counted as an error, not charged).",
            "default": 25
          },
          "selfCheck": {
            "title": "Self-check (maintainer use)",
            "type": "boolean",
            "description": "Runs the maintainer's health check instead of a normal lookup.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}