{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn B2B Emails Scraper: Key Decision Maker Contacts",
    "description": "💼🔎 LinkedIn B2B Email Scraper extracts verified email contacts from LinkedIn profiles & company pages. ⚡️ Accelerate lead generation, sales outreach & recruiting with clean, targeted B2B data. 📩 Save time, boost conversions.",
    "version": "1.0",
    "x-build-id": "UvCBXbCc5H1lbEIS4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~linkedin-b2b-emails-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-linkedin-b2b-emails-scraper",
        "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/api-empire~linkedin-b2b-emails-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-linkedin-b2b-emails-scraper",
        "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/api-empire~linkedin-b2b-emails-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-linkedin-b2b-emails-scraper",
        "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": {
          "decisionMakerKeywords": {
            "title": "🔍 Search Keywords",
            "type": "array",
            "description": "🔎 Job titles, roles, or industries to search for LinkedIn decision-makers via Google (e.g. 'VP of Sales', 'Marketing Director', 'fintech'). ✨ Add one or many. (Base key: keywords)",
            "items": {
              "type": "string"
            }
          },
          "emailMode": {
            "title": "📌 Email Discovery Mode",
            "enum": [
              "b2b",
              "personal"
            ],
            "type": "string",
            "description": "🏢 b2b = corporate email patterns (recommended for decision-maker outreach) | 👤 personal = Gmail/Outlook discovery. (Base key: mode)",
            "default": "b2b"
          },
          "targetSeniority": {
            "title": "🏆 Target Seniority Levels",
            "type": "array",
            "description": "🎯 Keep only leads whose seniority was classified into these buckets. The selected buckets are ALSO injected into the Google query (e.g. picking VP adds (\"VP\" OR \"Vice President\" OR \"SVP\" OR \"EVP\")), so this narrows the search AND filters the output. ⚪ 'Unknown' = the page carried no job-title evidence at all; nothing is guessed. Leave empty to keep every seniority level.",
            "items": {
              "type": "string",
              "enum": [
                "Founder",
                "C-Suite",
                "VP",
                "Director",
                "Manager",
                "IC",
                "Unknown"
              ],
              "enumTitles": [
                "🚀 Founder / Owner",
                "👑 C-Suite (CEO, CFO, CTO...)",
                "🎖️ VP / SVP / EVP",
                "🧭 Director / Head of",
                "📋 Manager / Team Lead",
                "🧑‍💻 IC (Individual Contributor)",
                "⚪ Unknown (no title evidence on the page)"
              ]
            }
          },
          "targetTitles": {
            "title": "🔤 Target Job Title Keywords",
            "type": "array",
            "description": "🔤 Keep only leads whose parsed job title / matched title contains one of these keywords (case-insensitive substring, e.g. 'Sales', 'Growth', 'Engineering'). Also added to the Google query as an OR clause. Leave empty to skip this filter.",
            "items": {
              "type": "string"
            }
          },
          "personalDomainFilter": {
            "title": "📥 Personal Email Domains",
            "type": "array",
            "description": "👤 Personal mode: filter results to these domains (e.g. @gmail.com, @outlook.com). ⏭️ Ignored in B2B mode. (Base key: customDomains)",
            "items": {
              "type": "string"
            }
          },
          "b2bSearchPatterns": {
            "title": "🧩 B2B Search Patterns",
            "type": "array",
            "description": "🏢 B2B only: 📂 empty list runs ALL 34 patterns; or name specific keys. Highest measured yield on LinkedIn: dm_email_me_at, dm_hiring_contact, dm_direct_line, dm_my_email_is, dm_available_at, email_direct_mention, bio_email_basic, dm_or_email, bio_email_emoji_extended. (Base key: patterns)",
            "items": {
              "type": "string"
            }
          },
          "sourcePlatform": {
            "title": "🌐 Source Platform",
            "enum": [
              "LinkedIn.com"
            ],
            "type": "string",
            "description": "📱 Target platform for decision-maker email discovery (locked to LinkedIn). (Base key: platform)",
            "default": "LinkedIn.com"
          },
          "leadLocation": {
            "title": "📍 Target Location",
            "type": "string",
            "description": "🗺️ Geographic filter added to search queries as an extra quoted term (e.g. London, New York). 🌍 Leave empty for global results. (Base key: location)",
            "default": ""
          },
          "maxDecisionMakerEmails": {
            "title": "📊 Maximum Decision-Maker Emails",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "🎯 Maximum number of (post-filter) decision-maker emails to collect across all keywords/patterns. Note: seniority/title filters reduce the yield vs a raw scan — raise this if filters are strict. (Base key: maxEmails)",
            "default": 10
          },
          "maxEmailsPerSearchPattern": {
            "title": "🧩 Max Emails Per B2B Pattern",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "📈 Cap raw emails scanned per B2B search pattern before filtering (🏢 B2B mode only). (Base key: maxEmailsPerPattern)",
            "default": 15
          },
          "maxRunSeconds": {
            "title": "⏱️ Maximum Run Time",
            "minimum": 30,
            "maximum": 86400,
            "type": "integer",
            "description": "⏳ Hard wall-clock budget for the whole run. When it elapses the actor stops cleanly and keeps everything already collected (status stays SUCCEEDED) instead of paginating until the platform timeout kills it.",
            "default": 3600
          },
          "forceDirectConnection": {
            "title": "🚫 Disable Apify Proxy",
            "type": "boolean",
            "description": "☑️ Leave unchecked to keep Apify Proxy enabled (GOOGLE_SERP for Google traffic) — the recommended default. ✅ Check to force a direct connection with no proxy at all (no escalation on block; Google blocks unproxied cloud IPs, expect near-zero yield). (Base key: useProxy, inverted)",
            "default": false
          },
          "proxyConfiguration": {
            "title": "⚙️ Advanced Proxy Settings",
            "type": "object",
            "description": "🔧 Optional proxy override when Apify Proxy is enabled. 🎯 Leave as default for best performance.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "GOOGLE_SERP"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}