{
  "openapi": "3.0.1",
  "info": {
    "title": "🔗 LinkedIn B2B Lead Discovery Scraper",
    "description": "LinkedIn B2B Lead Discovery Scraper: Discover targeted B2B prospects by job title, company, industry, location, and other criteria. Extract available professional details, LinkedIn URLs, and business information to build qualified lead lists for sales, outreach, and market research.",
    "version": "0.1",
    "x-build-id": "zWLpecB8LOB4fHnHo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~linkedin-b2b-phone-number-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-linkedin-b2b-phone-number-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-phone-number-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-linkedin-b2b-phone-number-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-phone-number-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-linkedin-b2b-phone-number-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",
        "required": [
          "keywords",
          "country"
        ],
        "properties": {
          "keywords": {
            "title": "🔍 Keywords or LinkedIn URLs",
            "type": "array",
            "description": "Roles, names, companies, or direct LinkedIn profile/company URLs to search for. Keywords run a `site:linkedin.com \"<keyword>\"` Google search; a LinkedIn URL is looked up by its public slug. Example: [\"marketing manager\", \"https://www.linkedin.com/in/some-profile/\"].",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "📍 Location (optional)",
            "type": "string",
            "description": "Optional geo term added to the search query to bias results (e.g. \"London\", \"New York\"). Example: keyword \"recruiter\" + location \"Berlin\" → site:linkedin.com \"recruiter\" \"Berlin\"."
          },
          "country": {
            "title": "🌍 Country (phone validation)",
            "enum": [
              "Afghanistan (+93)",
              "Albania (+355)",
              "Algeria (+213)",
              "Andorra (+376)",
              "Angola (+244)",
              "Antigua And Barbuda (+1-268)",
              "Argentina (+54)",
              "Armenia (+374)",
              "Australia (+61)",
              "Austria (+43)",
              "Azerbaijan (+994)",
              "Bahamas (+1-242)",
              "Bahrain (+973)",
              "Bangladesh (+880)",
              "Barbados (+1-246)",
              "Belarus (+375)",
              "Belgium (+32)",
              "Belize (+501)",
              "Benin (+229)",
              "Bhutan (+975)",
              "Bolivia (+591)",
              "Bosnia And Herzegovina (+387)",
              "Botswana (+267)",
              "Brazil (+55)",
              "Brunei (+673)",
              "Bulgaria (+359)",
              "Burkina Faso (+226)",
              "Burundi (+257)",
              "Cambodia (+855)",
              "Cameroon (+237)",
              "Canada (+1)",
              "Cape Verde (+238)",
              "Central African Republic (+236)",
              "Chad (+235)",
              "Chile (+56)",
              "China (+86)",
              "Colombia (+57)",
              "Comoros (+269)",
              "Congo (Democratic Republic) (+243)",
              "Congo (Republic) (+242)",
              "Costa Rica (+506)",
              "Croatia (+385)",
              "Cuba (+53)",
              "Cyprus (+357)",
              "Czech Republic (+420)",
              "Denmark (+45)",
              "Djibouti (+253)",
              "Dominica (+1-767)",
              "Dominican Republic (+1-809)",
              "East Timor (+670)",
              "Ecuador (+593)",
              "Egypt (+20)",
              "El Salvador (+503)",
              "Equatorial Guinea (+240)",
              "Eritrea (+291)",
              "Estonia (+372)",
              "Eswatini (+268)",
              "Ethiopia (+251)",
              "Fiji (+679)",
              "Finland (+358)",
              "France (+33)",
              "Gabon (+241)",
              "Gambia (+220)",
              "Georgia (+995)",
              "Germany (+49)",
              "Ghana (+233)",
              "Greece (+30)",
              "Grenada (+1-473)",
              "Guatemala (+502)",
              "Guinea (+224)",
              "Guinea-Bissau (+245)",
              "Guyana (+592)",
              "Haiti (+509)",
              "Honduras (+504)",
              "Hungary (+36)",
              "Iceland (+354)",
              "India (+91)",
              "Indonesia (+62)",
              "Iran (+98)",
              "Iraq (+964)",
              "Ireland (+353)",
              "Israel (+972)",
              "Italy (+39)",
              "Jamaica (+1-876)",
              "Japan (+81)",
              "Jordan (+962)",
              "Kazakhstan (+7)",
              "Kenya (+254)",
              "Kiribati (+686)",
              "Korea, North (+850)",
              "Korea, South (+82)",
              "Kuwait (+965)",
              "Kyrgyzstan (+996)",
              "Laos (+856)",
              "Latvia (+371)",
              "Lebanon (+961)",
              "Lesotho (+266)",
              "Liberia (+231)",
              "Libya (+218)",
              "Liechtenstein (+423)",
              "Lithuania (+370)",
              "Luxembourg (+352)",
              "Madagascar (+261)",
              "Malawi (+265)",
              "Malaysia (+60)",
              "Maldives (+960)",
              "Mali (+223)",
              "Malta (+356)",
              "Marshall Islands (+692)",
              "Mauritania (+222)",
              "Mauritius (+230)",
              "Mexico (+52)",
              "Micronesia (+691)",
              "Moldova (+373)",
              "Monaco (+377)",
              "Mongolia (+976)",
              "Montenegro (+382)",
              "Morocco (+212)",
              "Mozambique (+258)",
              "Myanmar (+95)",
              "Namibia (+264)",
              "Nauru (+674)",
              "Nepal (+977)",
              "Netherlands (+31)",
              "New Zealand (+64)",
              "Nicaragua (+505)",
              "Niger (+227)",
              "Nigeria (+234)",
              "North Macedonia (+389)",
              "Norway (+47)",
              "Oman (+968)",
              "Pakistan (+92)",
              "Palau (+680)",
              "Panama (+507)",
              "Papua New Guinea (+675)",
              "Paraguay (+595)",
              "Peru (+51)",
              "Philippines (+63)",
              "Poland (+48)",
              "Portugal (+351)",
              "Qatar (+974)",
              "Romania (+40)",
              "Russia (+7)",
              "Rwanda (+250)",
              "Saint Kitts And Nevis (+1-869)",
              "Saint Lucia (+1-758)",
              "Saint Vincent And The Grenadines (+1-784)",
              "Samoa (+685)",
              "San Marino (+378)",
              "Sao Tome And Principe (+239)",
              "Saudi Arabia (+966)",
              "Senegal (+221)",
              "Serbia (+381)",
              "Seychelles (+248)",
              "Sierra Leone (+232)",
              "Singapore (+65)",
              "Slovakia (+421)",
              "Slovenia (+386)",
              "Solomon Islands (+677)",
              "Somalia (+252)",
              "South Africa (+27)",
              "South Sudan (+211)",
              "Spain (+34)",
              "Sri Lanka (+94)",
              "Sudan (+249)",
              "Suriname (+597)",
              "Sweden (+46)",
              "Switzerland (+41)",
              "Syria (+963)",
              "Taiwan (+886)",
              "Tajikistan (+992)",
              "Tanzania (+255)",
              "Thailand (+66)",
              "Togo (+228)",
              "Tonga (+676)",
              "Trinidad And Tobago (+1-868)",
              "Tunisia (+216)",
              "Turkey (+90)",
              "Turkmenistan (+993)",
              "Tuvalu (+688)",
              "Uganda (+256)",
              "Ukraine (+380)",
              "United Arab Emirates (+971)",
              "United Kingdom (+44)",
              "United States (+1)",
              "Uruguay (+598)",
              "Uzbekistan (+998)",
              "Vanuatu (+678)",
              "Vatican City (+39-06)",
              "Venezuela (+58)",
              "Vietnam (+84)",
              "Yemen (+967)",
              "Zambia (+260)",
              "Zimbabwe (+263)"
            ],
            "type": "string",
            "description": "Country whose dial code is used to VALIDATE any phone number found in a snippet (via the phonenumbers library). It does not fabricate phones — it only decides which genuine numbers are accepted.",
            "default": "United Kingdom (+44)"
          },
          "maxResults": {
            "title": "🎯 Max Results per Term",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum lead records to collect per keyword/URL. The scraper stops once this limit is reached. Example: maxResults=20. Default is 20.",
            "default": 20
          },
          "profileTypeFilter": {
            "title": "👤 Profile Type",
            "enum": [
              "any",
              "person",
              "company"
            ],
            "type": "string",
            "description": "Restrict results by LinkedIn entity type. 'person' searches /in/ profiles, 'company' searches /company/ pages, 'any' returns both. Also narrows the search query.",
            "default": "any"
          },
          "countryMatchStrict": {
            "title": "🔒 Strict Country Match (phones)",
            "type": "boolean",
            "description": "When ON, a phone is accepted only if its validated country code equals the selected country's dial code. When OFF, any valid international number is accepted. Default ON.",
            "default": true
          },
          "mustHavePhone": {
            "title": "📞 Only rows with a validated phone",
            "type": "boolean",
            "description": "When ON, only records that have a genuine validated phone number are emitted. Note: LinkedIn phone coverage is structurally very low. Default OFF.",
            "default": false
          },
          "mustHaveEmail": {
            "title": "✉️ Only rows with an email",
            "type": "boolean",
            "description": "When ON, only records that have an email parsed from the snippet are emitted. Default OFF.",
            "default": false
          },
          "excludeKeywords": {
            "title": "🚫 Exclude Keywords",
            "type": "array",
            "description": "Drop any record whose name/headline/company/location/URL contains one of these terms (case-insensitive). Example: [\"intern\", \"student\"].",
            "items": {
              "type": "string"
            }
          },
          "findEmails": {
            "title": "✉️ Discover business emails (verified only)",
            "type": "boolean",
            "description": "When ON, the actor resolves each lead's company to a web domain, generates the common business-email patterns for the person (first.last@, first@, flast@, …), and confirms them over SMTP. ONLY emails the mail server actually accepts are emitted (emailSource=\"pattern_verified\") — catch-all domains, providers that block verification (e.g. Microsoft 365), and unreachable servers yield nothing, never a guess. NOTE: many hosting environments block outbound SMTP (port 25); if so this path yields 0 and the log says so — use the Hunter.io key below for reliable results. Default OFF.",
            "default": false
          },
          "enrichmentApiKey": {
            "title": "🔑 Hunter.io API key (optional)",
            "type": "string",
            "description": "Bring your own Hunter.io API key for high-accuracy, provider-verified email finding. When set, each lead's name + company domain is sent to Hunter's Email Finder and the returned address is emitted with its confidence score (emailSource=\"hunter\"). Skipped cleanly when empty. Get a free key at hunter.io."
          },
          "concurrency": {
            "title": "🧵 Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many keywords/URLs to search in parallel. Higher is faster but more likely to be rate-limited by Google. Default 3.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Proxy used for the Google searches. Defaults to Apify's GOOGLE_SERP proxy group (recommended for Google). You may select other Apify proxy groups; this setting is honored. Disabling Apify proxy will likely get blocked by Google."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}