{
  "openapi": "3.0.1",
  "info": {
    "title": "Security & Website Pain Prospect Finder for MSPs",
    "description": "Turn a list of company websites into a scored, pitch-ready prospect list. Finds spoofable email domains (DMARC/SPF/DKIM), expired SSL, sites down, outdated WordPress/PHP, no HTTPS and expiring domains — with evidence, a 0-100 opportunity score and a cold-open line.",
    "version": "1.0",
    "x-build-id": "makAjqL6vRHJOgfs4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/probelane~security-prospect-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-probelane-security-prospect-finder",
        "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/probelane~security-prospect-finder/runs": {
      "post": {
        "operationId": "runs-sync-probelane-security-prospect-finder",
        "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/probelane~security-prospect-finder/run-sync": {
      "post": {
        "operationId": "run-sync-probelane-security-prospect-finder",
        "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": {
          "websites": {
            "title": "Company websites",
            "type": "array",
            "description": "One company per line: a domain, URL or email (acme.com, https://www.acme.com/contact, jane@acme.com). Optionally add labels separated by commas: domain, company name, niche, location — e.g. 'acme.co.za, Acme Attorneys, law firm, Durban'. Duplicates are removed automatically.",
            "items": {
              "type": "string"
            }
          },
          "websitesText": {
            "title": "Bulk paste (optional)",
            "type": "string",
            "description": "Paste a long list, one company per line (same format as above), or a space-separated list of domains."
          },
          "csvUrl": {
            "title": "CSV / Google Sheet URL (optional)",
            "type": "string",
            "description": "Public CSV link, e.g. a Google Sheet published as CSV (File → Share → Publish to web → CSV). Columns are detected by name: domain/website/url, company/name, niche/industry, location/city. Without a header the first column is used as the domain."
          },
          "discoveryPageUrls": {
            "title": "Discover companies from public list pages (optional)",
            "type": "array",
            "description": "Public directory or 'members' pages you are allowed to use (association member lists, chamber of commerce pages, 'top 20 firms in X' articles). The Actor reads the page once and takes every outbound company website it links to (social networks, government/education and big platforms are skipped). Review the page's terms before using it.",
            "items": {
              "type": "string"
            }
          },
          "maxDiscoveredPerPage": {
            "title": "Max companies per discovery page",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Cap on websites taken from each discovery page.",
            "default": 200
          },
          "niche": {
            "title": "Default niche label",
            "type": "string",
            "description": "Added to every row that has no niche of its own (e.g. 'dental clinics'). Useful for CRM segmentation."
          },
          "location": {
            "title": "Default location label",
            "type": "string",
            "description": "Added to every row that has no location of its own (e.g. 'Cape Town, ZA')."
          },
          "minOpportunityScore": {
            "title": "Only return prospects scoring at least",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Hide weaker prospects. Hidden companies are NOT charged — you only pay for rows you receive.",
            "default": 0
          },
          "checkDomainExpiry": {
            "title": "Check domain expiry (RDAP/WHOIS)",
            "type": "boolean",
            "description": "Flags domains that are expired, in redemption or expire within 30 days.",
            "default": true
          },
          "detectTechnologies": {
            "title": "Detect tech stack & outdated software",
            "type": "boolean",
            "description": "Detects CMS, hosting, CDN and versions (WordPress, PHP, Drupal, Joomla, Magento, jQuery) using open-source fingerprints, and flags end-of-life versions.",
            "default": true
          },
          "maxItems": {
            "title": "Max companies",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap on companies processed (after de-duplication). Leave empty for all."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Companies checked in parallel.",
            "default": 10
          },
          "timeoutSecs": {
            "title": "Website timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Per-request timeout for the homepage check.",
            "default": 15
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}