{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Tech Gap Scanner",
    "description": "Scan websites for their technology stack and the capabilities they are missing: booking, live chat, CRM, payments, analytics, ad pixels and call tracking, plus email and phone. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools or AI workflows.",
    "version": "0.0",
    "x-build-id": "eqJjelDq7cuO5Xz8f"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lergassy~website-tech-gap-scanner/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lergassy-website-tech-gap-scanner",
        "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/lergassy~website-tech-gap-scanner/runs": {
      "post": {
        "operationId": "runs-sync-lergassy-website-tech-gap-scanner",
        "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/lergassy~website-tech-gap-scanner/run-sync": {
      "post": {
        "operationId": "run-sync-lergassy-website-tech-gap-scanner",
        "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": "🌐 Websites",
            "type": "array",
            "description": "Add the websites to scan, one per line. Both <code>example.com</code> and <code>https://www.example.com/page</code> work — everything is reduced to the domain.",
            "items": {
              "type": "string"
            }
          },
          "onlyPaidTraffic": {
            "title": "💰 Only companies spending on traffic",
            "type": "boolean",
            "description": "Keep only websites with an advertising pixel or a call-tracking script — companies that are paying for visitors right now.",
            "default": false
          },
          "onlyWithGaps": {
            "title": "🕳️ Only websites missing ALL of these",
            "type": "array",
            "description": "Keep only websites that lack every capability you select. Selling booking software? Pick <b>no_online_booking</b>. Selling chat or intake? Pick <b>no_live_chat</b>.",
            "items": {
              "type": "string",
              "enum": [
                "no_online_booking",
                "booking_unverified",
                "no_live_chat",
                "no_crm",
                "no_analytics",
                "no_ads_pixel",
                "no_email_capture",
                "no_online_payments",
                "no_reviews_widget",
                "no_contact_form",
                "no_https",
                "not_mobile_ready",
                "no_meta_description"
              ],
              "enumTitles": [
                "No online booking widget",
                "Mentions scheduling, vendor unknown",
                "No live chat",
                "No CRM or marketing automation",
                "No analytics",
                "No advertising pixel",
                "No email marketing",
                "No online payments",
                "No reviews widget",
                "No contact form",
                "No HTTPS",
                "Not mobile ready",
                "No meta description"
              ]
            },
            "default": []
          },
          "onlyStates": {
            "title": "📍 Only these US states",
            "type": "array",
            "description": "Keep only websites whose published address is in one of these states. Use two-letter codes, for example <code>TX</code>. About 7 in 10 websites publish an address — the rest are dropped by this filter, so leave it empty unless you need the geography.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minProspectScore": {
            "title": "🎯 Minimum prospect score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Drop websites scoring below this. 60 and above is the <b>hot</b> tier: paying for traffic and missing obvious capabilities.",
            "default": 0
          },
          "expandTagManager": {
            "title": "🏷️ Read Google Tag Manager containers",
            "type": "boolean",
            "description": "Reads each website's public GTM container to reveal advertising pixels that never appear in the HTML. Keep this on — without it most advertisers look like they run no ads at all.",
            "default": true
          },
          "maxConcurrency": {
            "title": "⚡ Websites in parallel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many websites to read at the same time. Raise it for long lists.",
            "default": 10
          },
          "requestTimeoutSecs": {
            "title": "⏱️ Timeout per website (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "How long to wait for a slow website before giving up on it.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}