{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn B2B Emails Scraper By Phone & Email Finder",
    "description": "LinkedIn B2B Emails Scraper by Phone & Email Finder extracts public LinkedIn profile data and finds available business email addresses and phone numbers. Collect names, job titles, company details, profile URLs, contact info, and more for B2B lead generation and sales prospecting.",
    "version": "1.0",
    "x-build-id": "hqpbV2TMtYGC4vkrB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapio~linkedin-b2b-emails-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapio-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/scrapio~linkedin-b2b-emails-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapio-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/scrapio~linkedin-b2b-emails-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapio-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": {
          "targetKeywords": {
            "title": "🔍 Target Keywords",
            "type": "array",
            "description": "🔎 Search terms for LinkedIn via Google (e.g. marketing, fitness, real estate). ✨ Add one or many keywords. (Base fallback: `keywords`.)",
            "items": {
              "type": "string"
            }
          },
          "extractionMode": {
            "title": "🎯 Extraction Mode",
            "enum": [
              "b2b",
              "personal"
            ],
            "type": "string",
            "description": "👤 personal = Gmail/Outlook discovery | 🏢 b2b = corporate email patterns. (Base fallback: `mode`.)"
          },
          "personalEmailDomains": {
            "title": "📬 Personal Email Domains",
            "type": "array",
            "description": "👤 Personal mode: filter results to these domains (e.g. @gmail.com, @outlook.com). ⏭️ Ignored in B2B mode. Now genuinely wired into filtering (was a dead field in the base). (Base fallback: `customDomains`.)",
            "items": {
              "type": "string"
            }
          },
          "b2bPatternFilter": {
            "title": "🧩 B2B Search Pattern Filter",
            "type": "array",
            "description": "🏢 B2B only: 📂 empty list runs all patterns; or name specific keys from b2b_patterns.py (e.g. email_for_bookings, bio_email_basic). Now genuinely wired into pattern selection (was a dead field in the base). (Base fallback: `patterns`.)",
            "items": {
              "type": "string"
            }
          },
          "targetPlatform": {
            "title": "🌐 Target Platform",
            "enum": [
              "LinkedIn.com"
            ],
            "type": "string",
            "description": "📱 Target platform for contact discovery (locked to LinkedIn). (Base fallback: `platform`.)"
          },
          "targetLocation": {
            "title": "📍 Target Location",
            "type": "string",
            "description": "🗺️ Geographic filter added to search queries (e.g. London, New York). 🌍 Leave empty for global results. (Base fallback: `location`.)"
          },
          "maxContacts": {
            "title": "📊 Maximum Total Contacts",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "🎯 Maximum number of contact rows (email and/or phone) to collect across all keywords and patterns. (Base fallback: `maxEmails`.)"
          },
          "maxPerPattern": {
            "title": "🧮 Max Contacts Per B2B Pattern",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "📈 Cap contacts collected per B2B search pattern (🏢 B2B mode only). (Base fallback: `maxEmailsPerPattern`.)"
          },
          "dialCode": {
            "title": "☎️ Dial Code",
            "type": "string",
            "description": "🌍 Optional country calling code (e.g. +1, +44, +91) used to interpret national-format phone numbers found in SERP snippets and to compute `dial_code` on results. Leave empty to only match numbers already written with a leading '+'."
          },
          "country": {
            "title": "🌎 Country",
            "type": "string",
            "description": "🏳️ Optional country name or 2-letter code (e.g. US, GB, United Kingdom) used alongside/instead of Dial Code to resolve the phone-parsing region."
          },
          "requireBothEmailAndPhone": {
            "title": "🔗 Require Both Email & Phone",
            "type": "boolean",
            "description": "🆕 NEW: when ON, only rows with BOTH a valid email AND a valid phone number (contact_completeness = 100) are saved. When OFF (default), every row the base would have saved is still saved, now enriched with phone_number/dial_code/contact_completeness.",
            "default": false
          },
          "disableProxy": {
            "title": "🚫 Disable Proxy",
            "type": "boolean",
            "description": "✅ Leave unchecked to keep the base's smart proxy fallback chain enabled (direct → datacenter → residential). Check to force a direct-only connection with no proxy escalation. Now genuinely wired (the base's `useProxy` toggle was a dead field that had no effect). (Base fallback: `useProxy`, inverted.)"
          },
          "proxyOverrideSettings": {
            "title": "⚙️ Advanced Proxy Settings",
            "type": "object",
            "description": "🔧 Optional proxy override when proxy is enabled. 🎯 Leave as default for best performance. (Base fallback: `proxyConfiguration`.)"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}