{
  "openapi": "3.0.1",
  "info": {
    "title": "Tech Stack Checker",
    "description": "See which technologies any website runs. Turns a list of domains into a structured profile of each company's ecommerce platform, CMS, analytics, payments, marketing and support tools, with the evidence behind every match.",
    "version": "0.1",
    "x-build-id": "VjMy23wLCHAVQQAEe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/arched_friend~tech-stack-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-arched_friend-tech-stack-checker",
        "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/arched_friend~tech-stack-checker/runs": {
      "post": {
        "operationId": "runs-sync-arched_friend-tech-stack-checker",
        "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/arched_friend~tech-stack-checker/run-sync": {
      "post": {
        "operationId": "run-sync-arched_friend-tech-stack-checker",
        "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",
            "type": "array",
            "description": "One entry per company. Bare domains such as allbirds.com or full URLs both work.",
            "items": {
              "type": "string"
            }
          },
          "renderJavaScript": {
            "title": "Run the page like a browser",
            "type": "boolean",
            "description": "On, each page is rendered and every network request it makes is inspected, which catches the analytics, ad and marketing tools that a tag manager injects at runtime. Off is faster and cheaper on platform usage but only sees what is in the raw HTML.",
            "default": true
          },
          "includeTechnologies": {
            "title": "Only keep sites using",
            "type": "array",
            "description": "Return a site only when it uses these technologies, for example Shopify or Klaviyo. Leave empty to return every site. Names are matched loosely, so googleanalytics4 and Google Analytics 4 both work.",
            "items": {
              "type": "string"
            }
          },
          "matchMode": {
            "title": "Match mode",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "How to treat the list above. Any means the site uses at least one. All means it uses every one of them.",
            "default": "any"
          },
          "excludeTechnologies": {
            "title": "Drop sites using",
            "type": "array",
            "description": "Drop any site running one of these. Useful for finding companies who have not yet adopted a competing tool.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Report only these categories",
            "type": "array",
            "description": "Limit the report to certain kinds of technology. Leave empty to report everything found.",
            "items": {
              "type": "string",
              "enum": [
                "Ecommerce platform",
                "CMS",
                "Web framework",
                "Analytics",
                "Tag manager",
                "Marketing automation",
                "Email marketing",
                "Live chat",
                "Advertising",
                "Payments",
                "Ecommerce apps",
                "Reviews",
                "CDN",
                "Hosting",
                "Web server",
                "Consent management",
                "Security",
                "Monitoring",
                "Search",
                "Video",
                "Scheduling and forms",
                "A/B testing",
                "Fonts",
                "Authentication"
              ]
            }
          },
          "minConfidence": {
            "title": "Minimum confidence",
            "enum": [
              "medium",
              "high"
            ],
            "type": "string",
            "description": "High keeps only matches proven by a vendor script, a response header, a cookie or a generator tag. Medium also keeps matches found in page markup.",
            "default": "medium"
          },
          "onlyMatching": {
            "title": "Return matching sites only",
            "type": "boolean",
            "description": "On, sites that fail the technology filters are left out. Off, every site is returned with a matchesFilter flag so you can see what was rejected.",
            "default": true
          },
          "maxPagesPerSite": {
            "title": "Pages to check per site",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "The homepage is always checked. Raise this to also read pages such as pricing, products or contact, where payment and booking tools usually appear.",
            "default": 1
          },
          "maxRequestsPerCrawl": {
            "title": "Max requests total",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on requests across the whole run, for cost control. Leave empty for no cap."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional proxy for larger runs or sites that rate limit by IP."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}