{
  "openapi": "3.0.1",
  "info": {
    "title": "B2B Lead Pipeline — Companies, Decision-Makers & Emails",
    "description": "One call from an ICP to a ready lead list: find the companies that match your industry, location and size, find the decision-makers at each, and attach a verified work e-mail per person — deduplicated, scored A–D, with optional tech stack and buying signals on every row.",
    "version": "0.1",
    "x-build-id": "4C4fcgeoWiCCqCAvL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/inovaflow~b2b-lead-pipeline/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-inovaflow-b2b-lead-pipeline",
        "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/inovaflow~b2b-lead-pipeline/runs": {
      "post": {
        "operationId": "runs-sync-inovaflow-b2b-lead-pipeline",
        "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/inovaflow~b2b-lead-pipeline/run-sync": {
      "post": {
        "operationId": "run-sync-inovaflow-b2b-lead-pipeline",
        "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": {
          "keywords": {
            "title": "Industry or niche",
            "maxItems": 20,
            "type": "array",
            "description": "What the companies you want do — `revenue intelligence software`, `dental clinics`, `3PL logistics`. One per line.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "maxItems": 20,
            "type": "array",
            "description": "Cities, countries or regions. Empty = anywhere.",
            "items": {
              "type": "string"
            }
          },
          "companySizes": {
            "title": "Company size (headcount)",
            "uniqueItems": true,
            "type": "array",
            "description": "Empty = every size.",
            "items": {
              "type": "string",
              "enum": [
                "1-10",
                "11-50",
                "51-200",
                "201-500",
                "501-1000",
                "1001-5000",
                "5001-10000",
                "10000+"
              ]
            },
            "default": []
          },
          "companies": {
            "title": "Or: companies you already have",
            "maxItems": 500,
            "type": "array",
            "description": "Skip the search and run the pipeline on this list instead. One per line: a domain (`gong.io`) or a company name (`Gong`). When this is set, the industry and location fields are ignored.",
            "items": {
              "type": "string"
            }
          },
          "maxCompanies": {
            "title": "Max companies",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many companies the pipeline may work through. The single biggest lever on what a run costs and how long it takes: 3 is a two-to-three-minute sample, 25 (the default when unset) a proper list. Raise it once the sample leads look right.",
            "default": 25
          },
          "titles": {
            "title": "Titles to target",
            "maxItems": 20,
            "type": "array",
            "description": "Job titles or keywords, one per line. Abbreviations are understood (`CRO`, `VP Sales`, `RevOps`) and matched against every common phrasing of the same role.",
            "items": {
              "type": "string"
            }
          },
          "seniorities": {
            "title": "Seniority",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only people at these levels. Empty = every level the people search returns.",
            "items": {
              "type": "string",
              "enum": [
                "founder",
                "c-level",
                "vp",
                "director",
                "head",
                "manager",
                "senior",
                "other"
              ],
              "enumTitles": [
                "Founder / owner",
                "C-level",
                "VP / SVP / EVP",
                "Director",
                "Head of",
                "Manager",
                "Senior IC",
                "Other"
              ]
            },
            "default": []
          },
          "departments": {
            "title": "Department",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only people in these functions. Empty = every function.",
            "items": {
              "type": "string",
              "enum": [
                "executive",
                "sales",
                "marketing",
                "engineering",
                "product",
                "data",
                "design",
                "finance",
                "operations",
                "hr",
                "customer-success",
                "it",
                "legal"
              ]
            },
            "default": []
          },
          "maxPeoplePerCompany": {
            "title": "Max people per company",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Two or three well-chosen contacts beat ten. This caps both the output and the cost per company.",
            "default": 3
          },
          "findEmails": {
            "title": "Find work e-mails",
            "type": "boolean",
            "description": "Get a work e-mail for every person found. Turn off for a people-only list.",
            "default": true
          },
          "verifyEmails": {
            "title": "Verify the e-mails",
            "type": "boolean",
            "description": "Check that the address actually accepts mail before it goes on the row. Verified addresses score highest.",
            "default": true
          },
          "requireEmail": {
            "title": "Only leads with an e-mail",
            "type": "boolean",
            "description": "Drop anyone we could not get an address for.",
            "default": false
          },
          "enrichCompanies": {
            "title": "Attach company enrichment",
            "type": "boolean",
            "description": "Add firmographics and the live tech stack to every lead: industry, headcount, HQ, and the CMS, analytics, CRM and marketing tools the company actually runs.",
            "default": false
          },
          "attachSignals": {
            "title": "Attach buying signals",
            "type": "boolean",
            "description": "Add \"why now\" to every lead: hiring, tech change, funding, ad activity and executive change, with a combined score, an opening line and who to sell to.",
            "default": false
          },
          "signals": {
            "title": "Which signals",
            "uniqueItems": true,
            "type": "array",
            "description": "Only used when buying signals are on. Empty = all five.",
            "items": {
              "type": "string",
              "enum": [
                "hiring",
                "tech",
                "funding",
                "ads",
                "leadership"
              ],
              "enumTitles": [
                "Hiring — open roles that signal a build-out",
                "Tech change — a technology added or dropped",
                "Funding — a round announced recently",
                "Ads — paid advertising started or ramping",
                "Leadership — a new executive in the seat"
              ]
            },
            "default": [
              "hiring",
              "tech",
              "funding",
              "ads",
              "leadership"
            ]
          },
          "signalDaysBack": {
            "title": "Signal window (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only used when buying signals are on. How recent a signal has to be to count.",
            "default": 30
          },
          "maxLeads": {
            "title": "Max leads",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop after this many leads. Also caps what this Actor charges, since it charges per lead delivered.",
            "default": 200
          },
          "minLeadScore": {
            "title": "Minimum lead score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Keep only leads scoring at least this, out of 100. 55 ≈ grade B, 75 ≈ grade A.",
            "default": 0
          },
          "smtpVerification": {
            "title": "Mailbox check",
            "type": "boolean",
            "description": "Ask the mail server whether the mailbox exists, on top of the domain checks. Slower, and some servers accept everything; off in the sample run because outbound port 25 is blocked on the platform for most accounts, so the check rarely answers.",
            "default": true
          },
          "maxSpendUsd": {
            "title": "Spend cap for the stages (USD)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "A hard ceiling on what the pipeline stages may charge your account in this run. Leave empty for no ceiling."
          },
          "nestedTimeoutSecs": {
            "title": "Per-stage timeout (seconds)",
            "minimum": 120,
            "maximum": 3600,
            "type": "integer",
            "description": "How long any one stage may take before the pipeline continues without it. The leads still ship, with that stage listed under stepsSkipped.",
            "default": 1800
          },
          "maxRunSecs": {
            "title": "Finish within (seconds)",
            "minimum": 60,
            "maximum": 7200,
            "type": "integer",
            "description": "A wall-clock budget for the whole run. When it is nearly spent, the remaining stages are shortened or skipped (named under stepsSkipped) and the leads found so far are delivered rather than lost to a timeout. Leave empty for no budget — the run then only respects its own timeout, which it also honours."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}