{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Tech Stack Detector - CMS, Shopify, Email, CRM & CDN",
    "description": "Detect any website's tech stack like BuiltWith or Wappalyzer: CMS, Shopify/ecommerce, analytics, ads, CDN, hosting, email provider, CRM, chat and payments from 7,000+ fingerprints plus DNS (MX, SPF, TXT). Every detection has evidence. Pay only for domains with detections.",
    "version": "1.0",
    "x-build-id": "CKd5hwTSukhv3hstO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/artificially~website-tech-stack-detector/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-artificially-website-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/artificially~website-tech-stack-detector/runs": {
      "post": {
        "operationId": "runs-sync-artificially-website-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/artificially~website-tech-stack-detector/run-sync": {
      "post": {
        "operationId": "run-sync-artificially-website-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",
        "required": [
          "websites"
        ],
        "properties": {
          "websites": {
            "title": "Websites or domains",
            "type": "array",
            "description": "Required. One company website per entry: a bare domain (e.g. allbirds.com), a domain with www (e.g. www.stripe.com) or a full URL (e.g. https://vercel.com or https://shop.example.com/de to start on a specific page). http/https and www/non-www are resolved automatically and redirects are followed. Example: [\"allbirds.com\", \"stripe.com\", \"https://www.hubspot.com\"].",
            "items": {
              "type": "string"
            }
          },
          "maxPagesPerDomain": {
            "title": "Extra pages per domain",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many important internal pages to scan in addition to the home page, from 0 to 10. The actor picks at most one page per type from the home page links: pricing, careers, shop/collections, contact, demo/signup, blog, support, about, product. Different page types often load different tools (checkout, ATS, forms, chat). Example: 0 for the fastest run (home page only), 3 (default) for good coverage, 6 for deep scans.",
            "default": 3
          },
          "includeDns": {
            "title": "Include DNS signals",
            "type": "boolean",
            "description": "If true (default), also reads the domain's public DNS records: MX (email provider such as Google Workspace, Microsoft 365, Zoho, Proton), SPF includes and TXT verification records (e.g. HubSpot, Salesforce, Mailchimp, SendGrid, Atlassian, Stripe, Facebook, Zoom, DocuSign), DMARC reporting provider, nameservers (Cloudflare, Route 53, ...) and the website CNAME. Very cheap and a strong B2B signal. Set to false to analyze the website only.",
            "default": true
          },
          "categories": {
            "title": "Only these categories",
            "type": "array",
            "description": "Optional. Keep only technologies in these categories (case-insensitive, Wappalyzer category names). Leave empty to keep everything. Common names: Ecommerce, CMS, Page builders, Analytics, Advertising, Tag managers, CDN, Hosting, PaaS, Email, Webmail, Marketing automation, CRM, Live chat, Payment processors, JavaScript frameworks, Web frameworks, Cookie compliance, Security, Recruitment & staffing, Reviews, A/B Testing. Example: [\"Ecommerce\", \"CMS\", \"Analytics\"]. Domains with nothing left after filtering are not saved and not charged.",
            "items": {
              "type": "string"
            }
          },
          "onlyDomainsUsing": {
            "title": "Only domains using",
            "type": "array",
            "description": "Optional lead filter. Save only domains that use at least one of these technologies (case-insensitive, names as they appear in the output). Domains that do not match are listed in FAILED_DOMAINS with reason no_matching_technology and are not charged. Example: [\"Shopify\"] for Shopify store leads, [\"WordPress\", \"WooCommerce\"], [\"HubSpot\"], [\"Google Workspace\"].",
            "items": {
              "type": "string"
            }
          },
          "minConfidence": {
            "title": "Minimum confidence",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Drop detections below this confidence (0-100). Each fingerprint pattern carries a confidence and matches are added up per technology. 50 (default) removes weak single hints such as a URL merely allowed in a Content-Security-Policy header. Use 100 for only the most certain detections, 0 to keep everything.",
            "default": 50
          },
          "compactOutput": {
            "title": "Compact output (for AI agents)",
            "type": "boolean",
            "description": "Set to true to save a slim item per domain: domain, technologies (names only), highlights (cms, ecommerce, analytics, advertising, tagManagers, cdn, hosting, emailProvider, frameworks, chat, crm, payment) and emailProvider. Versions, confidence, evidence, DNS records and categories are dropped. Recommended when an AI agent or LLM reads the results. Leave false for the full item.",
            "default": false
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "If true (default), pages disallowed by the website's robots.txt are not loaded, and websites that disallow everything are reported in FAILED_DOMAINS with reason blocked_by_robots. Set to false only if you have the right to scan those pages.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Domains in parallel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many websites are scanned at the same time, from 1 to 50. Each website still gets at most 2 requests at a time with a short delay between them. Example: 10 (default).",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Most websites work without a proxy. If many domains end up blocked (siteStatus blocked, or reason blocked in FAILED_DOMAINS), enable Apify Proxy, e.g. {\"useApifyProxy\": true} for datacenter or {\"useApifyProxy\": true, \"apifyProxyGroups\": [\"RESIDENTIAL\"]} for residential. DNS lookups never use the proxy."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}