{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Tech Stack Scraper & Change Monitor",
    "description": "Detect website technologies in bulk and monitor when prospects or competitors add, remove, or switch SaaS tools. Get deterministic fingerprints, confirmed-removal semantics, CRM IDs, DNS/TLS enrichment, and explicit per-domain failures without a BuiltWith or Wappalyzer account.",
    "version": "0.1",
    "x-build-id": "CMBXjOvSP1Msp9qGu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automa-flow~website-tech-stack-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automa-flow-website-tech-stack-monitor",
        "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/automa-flow~website-tech-stack-monitor/runs": {
      "post": {
        "operationId": "runs-sync-automa-flow-website-tech-stack-monitor",
        "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/automa-flow~website-tech-stack-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-automa-flow-website-tech-stack-monitor",
        "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": [
          "domains"
        ],
        "properties": {
          "domains": {
            "title": "Domains",
            "minItems": 1,
            "maxItems": 500,
            "type": "array",
            "description": "One to 500 bare public domains. externalId is echoed into the result for CRM and watchlist joins and is never sent to the target.",
            "items": {
              "type": "object",
              "required": [
                "domain"
              ],
              "properties": {
                "domain": {
                  "title": "Bare domain",
                  "type": "string",
                  "description": "A public DNS name without scheme, path, credentials, port, or IP address.",
                  "editor": "textfield",
                  "maxLength": 500
                },
                "externalId": {
                  "title": "Your external ID",
                  "type": "string",
                  "description": "Optional CRM, account, or competitor identifier echoed into the output.",
                  "editor": "textfield",
                  "maxLength": 200
                }
              }
            }
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "snapshot",
              "monitor"
            ],
            "type": "string",
            "description": "snapshot returns the current observed stack without state. monitor compares complete scans with the last successful state in Apify KVS.",
            "default": "monitor"
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "changesOnly",
              "all"
            ],
            "type": "string",
            "description": "Every input always receives one status row. changesOnly emphasizes webhook-ready events; all is intended for full stack exports. The stable main record shape is the same in both modes.",
            "default": "changesOnly"
          },
          "watchTechnologies": {
            "title": "Technologies to monitor",
            "maxItems": 200,
            "uniqueItems": true,
            "type": "array",
            "description": "Optional monitoring filter. The current stack still includes every detected technology, while events and state focus on these names. Leave empty to monitor all supported technologies. Changing this starts a separate baseline.",
            "items": {
              "type": "string",
              "enum": [
                "Adobe Analytics",
                "Adyen",
                "Akamai",
                "Akamai Edge DNS",
                "Amazon CloudFront",
                "Amazon Route 53",
                "Angular",
                "Azure DNS",
                "BigCommerce",
                "Cloudflare",
                "Cloudflare DNS",
                "Cookiebot",
                "Crisp",
                "Drift",
                "Drupal",
                "Fastly",
                "Fastmail",
                "Ghost",
                "Google Analytics",
                "Google Cloud DNS",
                "Google Tag Manager",
                "Google Workspace",
                "Hotjar",
                "HubSpot",
                "Intercom",
                "Joomla",
                "Klarna",
                "Klaviyo",
                "Magento",
                "Mailchimp",
                "Marketo",
                "Matomo",
                "Meta Pixel",
                "Microsoft 365",
                "Mimecast",
                "Netlify",
                "Next.js",
                "Nuxt.js",
                "OneTrust",
                "PayPal",
                "Plausible Analytics",
                "React",
                "Proofpoint",
                "Segment",
                "Shopify",
                "Squarespace",
                "Stripe",
                "Svelte",
                "Tawk.to",
                "TikTok Pixel",
                "Vercel",
                "Vue.js",
                "Webflow",
                "Wix",
                "WooCommerce",
                "WordPress",
                "Zendesk",
                "Zoho Mail"
              ]
            },
            "default": []
          },
          "includeDns": {
            "title": "Include DNS provider signals",
            "type": "boolean",
            "description": "Resolve MX and nameserver records and return only normalized known providers. Required when watchTechnologies contains an email or DNS provider. Arbitrary TXT values and raw DNS records are not exposed. A DNS failure makes the domain PARTIAL and does not advance monitor state.",
            "default": true
          },
          "includeTls": {
            "title": "Include TLS certificate metadata",
            "type": "boolean",
            "description": "Include normalized issuer, subject, and expiry metadata. Off by default because TLS is not needed for core technology detection. A TLS failure makes the scan PARTIAL.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Datacenter proxy fallback",
            "type": "object",
            "description": "Optional Apify proxy fallback after direct HTTP is blocked or fails. Direct HTTP is always tried first. Residential proxy escalation is not automatic.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}