{
  "openapi": "3.0.1",
  "info": {
    "title": "B2B Contact Search API - Find People, Emails and Phones",
    "description": "Search a B2B database of people and companies by job title, seniority, department, industry, headcount, revenue and funding, or enrich leads you already have from a LinkedIn URL or email. Returns the person, their company firmographics, and optionally a verified email and phone number.",
    "version": "0.1",
    "x-build-id": "fCt26bnwrUAnpNZxh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~b2b-contact-search-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-b2b-contact-search-api",
        "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/nabeelbaghoor~b2b-contact-search-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-b2b-contact-search-api",
        "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/nabeelbaghoor~b2b-contact-search-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-b2b-contact-search-api",
        "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": {
          "mode": {
            "title": "What this run does",
            "enum": [
              "search",
              "enrich"
            ],
            "type": "string",
            "description": "Search builds a new list: give it filters and it pages through everybody who matches. Enrich fills in a list you already have: give it leads and it looks each one up. The two read different parts of this form, so fields belonging to the other mode are ignored rather than causing an error.",
            "default": "search"
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own account's API key for this provider, generated in its dashboard under the API section. Bring your own key: nothing is shared between runs and the key is never written to the dataset."
          },
          "personTitles": {
            "title": "Job titles",
            "type": "array",
            "description": "Job titles to match, one per line. Matches any of them. Partial titles work, so Engineer matches Software Engineer and Engineering Manager unless exact title matching is turned on.",
            "items": {
              "type": "string"
            }
          },
          "personSeniorities": {
            "title": "Seniority",
            "type": "array",
            "description": "Seniority bands to match, using this provider's own vocabulary. Matches any of them.",
            "items": {
              "type": "string",
              "enum": [
                "Owner",
                "Founder",
                "Founder / Owner",
                "C-Suite",
                "Partner",
                "VP",
                "Head",
                "Director",
                "Manager",
                "Senior",
                "Entry",
                "Intern",
                "Non-Manager",
                "Other"
              ]
            },
            "default": []
          },
          "personDepartments": {
            "title": "Departments",
            "type": "array",
            "description": "Departments to match, one per line, using this provider's own department names. Check the provider's supported departments list before using this, because an unrecognised name is ignored rather than rejected and quietly widens the search.",
            "items": {
              "type": "string"
            }
          },
          "personLocations": {
            "title": "Person locations",
            "type": "array",
            "description": "Where the person is, one per line, written the way a profile writes it, for example United States, or San Francisco, California, United States. Matches any of them.",
            "items": {
              "type": "string"
            }
          },
          "personExcludeLocations": {
            "title": "Exclude person locations",
            "type": "array",
            "description": "Locations to leave out, one per line. Useful for trimming a region you cannot sell into out of an otherwise good filter.",
            "items": {
              "type": "string"
            }
          },
          "personKeywords": {
            "title": "Person keywords",
            "type": "array",
            "description": "Words to look for in the person's headline and about section, one per line. Matches any of them. This is how you find people who describe themselves a certain way even when their job title does not say it.",
            "items": {
              "type": "string"
            }
          },
          "personTitleExactMatch": {
            "title": "Exact title match",
            "type": "boolean",
            "description": "Require the job title to match exactly rather than as a partial. Turn this on when a broad title such as Director is pulling in every Director of everything.",
            "default": false
          },
          "companyNames": {
            "title": "Company names",
            "type": "array",
            "description": "Companies to match by name, one per line. Matches any of them.",
            "items": {
              "type": "string"
            }
          },
          "companyDomains": {
            "title": "Company domains",
            "type": "array",
            "description": "Companies to match by website domain, one per line, without the scheme. This is the most reliable way to target a specific account list, because a domain is unambiguous where a company name is not.",
            "items": {
              "type": "string"
            }
          },
          "companyIndustries": {
            "title": "Industries",
            "type": "array",
            "description": "Industries to match, one per line, using this provider's own industry names, for example Software Development or Financial Services. Matches any of them.",
            "items": {
              "type": "string"
            }
          },
          "companySizes": {
            "title": "Company headcount",
            "type": "array",
            "description": "Headcount bands to match. These are the provider's own bands and cannot be given as a free range.",
            "items": {
              "type": "string",
              "enum": [
                "1-10 employees",
                "11-50 employees",
                "51-200 employees",
                "201-500 employees",
                "501-1000 employees",
                "1001-5000 employees",
                "5001-10000 employees",
                "10001+ employees"
              ]
            },
            "default": []
          },
          "companyRevenue": {
            "title": "Company revenue",
            "type": "array",
            "description": "Estimated annual revenue bands to match, in US dollars. These are the provider's own bands.",
            "items": {
              "type": "string",
              "enum": [
                "$0-$1M",
                "$1M-$10M",
                "$10M-$100M",
                "$100M-$1B",
                "$1B+"
              ]
            },
            "default": []
          },
          "companyTypes": {
            "title": "Company type",
            "type": "array",
            "description": "Legal or ownership type to match, using this provider's own vocabulary. Useful for excluding government and education from a commercial list.",
            "items": {
              "type": "string",
              "enum": [
                "Public Company",
                "Privately Held",
                "Partnership",
                "Self Employed",
                "Self Owned",
                "Non Profit",
                "Educational",
                "Government Agency"
              ]
            },
            "default": []
          },
          "companyFocuses": {
            "title": "Sells to",
            "type": "array",
            "description": "Whether the company sells to businesses, to consumers, or both. Leave empty for either.",
            "items": {
              "type": "string",
              "enum": [
                "b2b",
                "b2c"
              ],
              "enumTitles": [
                "B2B: sells to businesses",
                "B2C: sells to consumers"
              ]
            },
            "default": []
          },
          "companyLocations": {
            "title": "Company locations",
            "type": "array",
            "description": "Where the company is, one per line. Matches any of them. Different from the person's location, which is where that individual sits.",
            "items": {
              "type": "string"
            }
          },
          "companyKeywords": {
            "title": "Company keywords",
            "type": "array",
            "description": "Words to look for in the company description, one per line. Matches any of them. This is how you find companies doing a particular thing when their industry label is too broad to help.",
            "items": {
              "type": "string"
            }
          },
          "filters": {
            "title": "Additional filters",
            "type": "object",
            "description": "Any other filter this provider supports, passed through untouched under its own name. This is the escape hatch for the filters this form does not show, such as company_last_funding, headcount_growth, job_openings, news, company_investors, company_founded_date, company_web_traffic_rank and linkedin_networks. Anything set here overrides the fields above."
          },
          "leads": {
            "title": "Leads to enrich",
            "type": "array",
            "description": "Used by enrich mode only. One object per lead, using this provider's own field names: linkedin_url, email, name, title, company_name and company_domain. Everyday names work too, so linkedin, full_name, job_title, company and domain are all accepted. A plain string is read as a LinkedIn URL, an email or a name. Each lead needs a LinkedIn URL, an email, or a name together with a company."
          },
          "revealEmail": {
            "title": "Reveal email addresses",
            "type": "boolean",
            "description": "Ask the provider to find each person's email address. Enrich mode only. This spends email credits on top of the lookup itself, so it is off by default. A reveal can take a while, and this actor waits out the provider's documented retry window rather than giving up on it.",
            "default": false
          },
          "revealPhoneNumbers": {
            "title": "Reveal phone numbers",
            "type": "boolean",
            "description": "Ask the provider to find each person's phone numbers. Enrich mode only. This spends phone credits on top of the lookup itself, so it is off by default. Numbers on a Do Not Call list are flagged on the row when your account has that screening enabled.",
            "default": false
          },
          "pageSize": {
            "title": "Results per page",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many people to ask for per search request, up to the provider's ceiling of 100. Lower it only if you are hitting a rate limit; it does not change what a run costs, because charging is per row.",
            "default": 100
          },
          "baseUrl": {
            "title": "Custom host",
            "type": "string",
            "description": "Overrides the host outright. Leave empty unless your account was issued a dedicated hostname."
          },
          "maxResults": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many rows. Rows are charged individually, so this is the ceiling on what a run can cost.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "How fast to call the provider. The provider's own ceiling is 300 a minute on search and 350 on lookups, so the default leaves room. Lower it if your account has a tighter limit.",
            "default": 120
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}