{
  "openapi": "3.0.1",
  "info": {
    "title": "Bug Bounty Program Finder",
    "description": "Find public bug bounty programs, vulnerability disclosure programs, security.txt contacts, rewards, scope, safe harbor notes, and disclosure policy URLs, then output normalized security program records for research, lead generation, and monitoring.",
    "version": "1.0",
    "x-build-id": "9ZvHgi4rg1bytNZlK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thescrapelab~bug-bounty-program-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thescrapelab-bug-bounty-program-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/thescrapelab~bug-bounty-program-finder/runs": {
      "post": {
        "operationId": "runs-sync-thescrapelab-bug-bounty-program-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/thescrapelab~bug-bounty-program-finder/run-sync": {
      "post": {
        "operationId": "run-sync-thescrapelab-bug-bounty-program-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": {
          "providedRecords": {
            "title": "Your records (JSON)",
            "type": "array",
            "description": "Paste records you have permission to process. These are normalized, validated and deduplicated without fetching their original websites. Use this OR a supplied dataset ID. Invalid web URLs, non-finite values and negative prices or counts are rejected. Unknown values remain unknown.",
            "items": {
              "type": "object"
            }
          },
          "providedDatasetId": {
            "title": "Your Apify dataset ID",
            "type": "string",
            "description": "Optional 17-character ID of a dataset you can access. Clear the JSON records to [] when using a dataset. Only a bounded number of records is read."
          },
          "query": {
            "title": "Keyword, company, or industry",
            "type": "string",
            "description": "Optional search term for finding public bug bounty programs and vulnerability disclosure programs. Use a company name, domain, industry, or topic such as fintech, cloud, crypto, SaaS, or API.",
            "default": ""
          },
          "domainOrUrl": {
            "title": "Domains or URLs",
            "enum": [
              "",
              "https://github.com/security",
              "https://stripe.com/security",
              "https://hackerone.com/directory/programs",
              "https://bugcrowd.com/programs",
              "https://yandex.com/bugbounty/"
            ],
            "type": "string",
            "description": "Optional preset domain or security page to check directly. Leave blank to search by keyword only.",
            "default": ""
          },
          "startDomains": {
            "title": "Domains to check (legacy)",
            "description": "Legacy field for direct domain checks. You can use this or the Domains or URLs field above."
          },
          "sources": {
            "title": "Sources to search",
            "type": "array",
            "description": "Choose where to search for bug bounty programs, VDPs, security.txt contacts, and policy pages. The default uses one reliable source for a fast first run; API users can select all for broad discovery.",
            "items": {
              "type": "string"
            },
            "default": [
              "bugcrowd"
            ]
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of program records to collect. Use a small limit for testing and a larger limit for full exports.",
            "default": 5
          },
          "includeDetails": {
            "title": "Include detail pages",
            "type": "boolean",
            "description": "Visit individual program pages to extract richer scope, reward, submission, and safe harbor details. Turn off for cheaper directory-only runs.",
            "default": false
          },
          "programType": {
            "title": "Program type filter",
            "type": "string",
            "description": "Optionally keep only one type of result.",
            "default": "all"
          },
          "minBounty": {
            "title": "Minimum visible reward (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include programs with a known maximum reward at or above this amount. Set 0 for no reward filter.",
            "default": 0
          },
          "includeNoRewardPrograms": {
            "title": "Include no-reward VDPs",
            "type": "boolean",
            "description": "Include vulnerability disclosure programs and policy pages that do not publish a monetary reward.",
            "default": true
          },
          "safeHarborOnly": {
            "title": "Safe harbor only",
            "type": "boolean",
            "description": "Only return programs where safe harbor language was detected.",
            "default": false
          },
          "enrichAssets": {
            "title": "Enrich in-scope assets with DNS",
            "type": "boolean",
            "description": "Passively resolve IPs, CNAMEs, and TXT records for in-scope domains. This can make runs slower and should only be enabled when you need DNS context.",
            "default": false
          },
          "changedSince": {
            "title": "Changed since",
            "type": "string",
            "description": "Optional ISO date. When combined with a previous run, only return programs first seen or updated since this date."
          },
          "historyName": {
            "title": "Watchlist history",
            "type": "string",
            "description": "Optional named history for repeat monitoring. Use one active run per watchlist; lowercase letters, digits and internal hyphens, up to 63 characters."
          },
          "changePolicy": {
            "title": "Monitoring output",
            "enum": [
              "all",
              "newOrChanged"
            ],
            "type": "string",
            "description": "Optional. New or changed requires a history name. First run returns baseline programs. Explicit policy overrides legacy changedSince filtering."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}