{
  "openapi": "3.0.1",
  "info": {
    "title": "B2B Lead Generation Suite - Find Emails, Score & Qualify Leads",
    "description": "All-in-one B2B lead pipeline. Enter company URLs, get enriched leads with emails, phone numbers, contacts, email patterns, quality scores (0-100), grades, and business signals from a 3-step automated pipeline.",
    "version": "1.1",
    "x-build-id": "BgPf79NmkD6d0sjhw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ryanclinton~b2b-lead-gen-suite/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ryanclinton-b2b-lead-gen-suite",
        "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/ryanclinton~b2b-lead-gen-suite/runs": {
      "post": {
        "operationId": "runs-sync-ryanclinton-b2b-lead-gen-suite",
        "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/ryanclinton~b2b-lead-gen-suite/run-sync": {
      "post": {
        "operationId": "run-sync-ryanclinton-b2b-lead-gen-suite",
        "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": {
          "urls": {
            "title": "Website URLs or Domains",
            "type": "array",
            "description": "List of company websites or bare domains to process (e.g., https://stripe.com or buffer.com). One result per domain. Leave empty if you're using business names or footer phrases instead.",
            "items": {
              "type": "string"
            }
          },
          "knownNames": {
            "title": "Business names (instead of URLs)",
            "type": "array",
            "description": "Optional. Paste a list of business names and the suite resolves each one to its website via Google before running the pipeline. Leave URLs empty if you only have names. Combine with name suffix below to disambiguate (e.g. 'we buy land', 'real estate', 'plumber').",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "footerPhrases": {
            "title": "Footer / marketing phrases",
            "type": "array",
            "description": "Optional. Distinctive phrases that identify a niche (e.g. 'we buy land in any state'). Each phrase is run as an exact-match Google query and every organic result is collected.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "nameSuffix": {
            "title": "Name search suffix (optional)",
            "type": "string",
            "description": "Appended to every business-name query to disambiguate (e.g. 'we buy land', 'real estate', 'plumber'). Leave blank to search names verbatim.",
            "default": ""
          },
          "discoveryCountry": {
            "title": "Discovery country (for names/phrases)",
            "enum": [
              "US",
              "UK",
              "CA",
              "AU",
              "EU"
            ],
            "type": "string",
            "description": "Used for both Google country code and TLD filtering when resolving names/phrases. Domains that don't match the country's TLDs are dropped.",
            "default": "US"
          },
          "maxResultsPerQuery": {
            "title": "Max results per discovery query",
            "minimum": 10,
            "maximum": 100,
            "type": "integer",
            "description": "How many organic Google results to collect per phrase query.",
            "default": 50
          },
          "maxDiscoveredDomains": {
            "title": "Max discovered domains to process",
            "minimum": 10,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on how many newly-discovered domains are sent through the pipeline. Controls run cost.",
            "default": 1000
          },
          "maxPagesPerDomain": {
            "title": "Max pages per domain (contact scraping)",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum pages to crawl per website during the contact scraping step. Higher values find more contacts but cost more.",
            "default": 5
          },
          "maxQualifierPagesPerDomain": {
            "title": "Max pages per domain (lead qualification)",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "Maximum pages to crawl per website during the lead qualification step.",
            "default": 5
          },
          "minScore": {
            "title": "Minimum lead score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only include leads scoring at or above this threshold (0-100). Set to 0 to include all.",
            "default": 0
          },
          "skipEmailPatternFinder": {
            "title": "Skip email pattern detection",
            "type": "boolean",
            "description": "Skip the Email Pattern Finder step. Faster and cheaper, but you won't get email pattern analysis or generated emails for team contacts.",
            "default": false
          },
          "skipLeadQualifier": {
            "title": "Skip lead qualification",
            "type": "boolean",
            "description": "Skip the B2B Lead Qualifier step. Faster and cheaper, but you won't get lead scores, grades, or business signals.",
            "default": false
          },
          "verifyEmails": {
            "title": "Verify discovered + generated emails",
            "type": "boolean",
            "description": "Enable Step 4 — runs every discovered AND pattern-generated email through the Bulk Email Verifier (Outbound Control System) in mode='enrichment-validation'. Adds a per-email status, confidence, decision (send / send-monitor / hold / replace / suppress), recommendedAction, and failureCategory to every lead. Default off — turn on for outbound-ready output. Sub-actor compute is billed against this run; no extra event-price charge per lead.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings passed to all pipeline steps. Recommended for scraping many sites."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}