{
  "openapi": "3.0.1",
  "info": {
    "title": "B2B Contact Data API - Work Emails and Direct Phones",
    "description": "Find verified work emails and direct phone numbers for B2B contacts. Resolve a person from a profile URL, an email, or a name plus employer, look companies up by name or domain, and prospect segments by industry, technology, location and seniority. Pay per result. Bring your own API key.",
    "version": "0.1",
    "x-build-id": "FkW5lSuS6BQnlvZj6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~b2b-contact-data-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-b2b-contact-data-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-data-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-b2b-contact-data-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-data-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-b2b-contact-data-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 to do",
            "enum": [
              "peopleSearch",
              "companySearch",
              "groupedSearch"
            ],
            "type": "string",
            "description": "Contact lookup resolves people you already have an identifier for: a profile URL, an email address, or a name plus their employer. Company lookup resolves companies by name or domain. Advanced search is the prospecting mode: it finds companies matching your filters and returns the matching people inside each one.",
            "default": "peopleSearch"
          },
          "fullNames": {
            "title": "Full names",
            "type": "array",
            "description": "Full names, one per line. In contact lookup each name is paired with each company below, so ten names and one company is ten lookups. In advanced search the names are used as a contact filter instead.",
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "Company names",
            "type": "array",
            "description": "Company names, one per line. In contact lookup they are the employers to pair names with. In company lookup they are the companies to resolve. In advanced search they filter which companies are returned.",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Company domains",
            "type": "array",
            "description": "Company domains, one per line, used the same way as the company names above. A domain is the more reliable identifier of the two when a company name is generic or shared. A pasted URL is reduced to the bare hostname.",
            "items": {
              "type": "string"
            }
          },
          "profileUrls": {
            "title": "Profile URLs",
            "type": "array",
            "description": "Public professional profile URLs to resolve, one per line. The most precise identifier available, since it names exactly one person. A bare handle is expanded to a full URL and tracking parameters are stripped. Contact lookup only.",
            "items": {
              "type": "string"
            }
          },
          "emails": {
            "title": "Email addresses",
            "type": "array",
            "description": "Work email addresses to resolve back to a person, one per line. Useful for filling in who is behind an address already sitting in your CRM. Contact lookup only.",
            "items": {
              "type": "string"
            }
          },
          "profileFilters": {
            "title": "Require contact information",
            "type": "array",
            "description": "Only return people carrying these kinds of contact information. Requiring a verified work email is the difference between a list you can send to today and one that needs a verification pass first. Contact lookup only.",
            "items": {
              "type": "string",
              "enum": [
                "HasWorkEmail",
                "HasVerifiedWorkEmail",
                "HasWorkPhone",
                "HasVerifiedWorkPhone",
                "HasPersonalEmail"
              ],
              "enumTitles": [
                "Has a work email",
                "Has a verified work email",
                "Has a work phone",
                "Has a verified work phone",
                "Has a personal email"
              ]
            },
            "default": []
          },
          "requireWorkContactInfo": {
            "title": "Require work contact information",
            "type": "boolean",
            "description": "Only return people the provider holds work contact information for at all. A blunter version of the filter above, and a quick way to keep a prospecting list free of records you cannot act on. Contact lookup only.",
            "default": false
          },
          "premiumFields": {
            "title": "Premium fields",
            "type": "array",
            "description": "Ask for fields that are charged separately on your provider plan. Mobile phone numbers are the one the provider offers here. Leave empty unless your plan includes them, since requesting them consumes premium credits. Contact lookup only.",
            "items": {
              "type": "string",
              "enum": [
                "MobilePhone"
              ],
              "enumTitles": [
                "Mobile phone number"
              ]
            },
            "default": []
          },
          "jobTitles": {
            "title": "Job titles",
            "type": "array",
            "description": "Job titles to match on the people returned, one per line. Advanced search only.",
            "items": {
              "type": "string"
            }
          },
          "seniorities": {
            "title": "Seniority levels",
            "type": "array",
            "description": "Seniority levels to match on the people returned. Advanced search only.",
            "items": {
              "type": "string",
              "enum": [
                "Executive",
                "VP",
                "Director",
                "Manager",
                "Other"
              ],
              "enumTitles": [
                "Executive",
                "Vice President",
                "Director",
                "Manager",
                "Other"
              ]
            },
            "default": []
          },
          "roles": {
            "title": "Roles",
            "type": "array",
            "description": "Functional roles to match on the people returned, one per line, for when titles vary too much between companies to filter on directly. Advanced search only.",
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "Industries the company should be in, one per line. Advanced search only.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Countries the company should be in, one per line. Advanced search only.",
            "items": {
              "type": "string"
            }
          },
          "states": {
            "title": "States or regions",
            "type": "array",
            "description": "States or regions the company should be in, one per line. Advanced search only.",
            "items": {
              "type": "string"
            }
          },
          "technologies": {
            "title": "Technologies used",
            "type": "array",
            "description": "Technologies the company runs, one per line. This is the technographic filter: it finds companies by what is in their stack rather than by what they say they do, which is how you build a list of accounts already using something you integrate with or replace. Advanced search only.",
            "items": {
              "type": "string"
            }
          },
          "technologyCategories": {
            "title": "Technology categories",
            "type": "array",
            "description": "Categories of technology the company runs, one per line, for when you care about the category rather than the specific product. Advanced search only.",
            "items": {
              "type": "string"
            }
          },
          "companyDescriptions": {
            "title": "Description keywords",
            "type": "array",
            "description": "Keywords matched against the company description, one per line, for segments the structured filters do not express. Advanced search only.",
            "items": {
              "type": "string"
            }
          },
          "peoplePerCompany": {
            "title": "People per company",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many matching people to return inside each company. Keep it small when you want breadth across many accounts and larger when you want to map one organisation. Advanced search only.",
            "default": 5
          },
          "sortCompaniesBy": {
            "title": "Company ordering",
            "enum": [
              "NameAsc",
              "NameDesc",
              "IndustryAsc",
              "IndustryDesc",
              "IdAsc",
              "IdDesc"
            ],
            "type": "string",
            "description": "How to order the companies returned by the advanced search. A stable ordering matters when you page through a large result set across several runs. Advanced search only.",
            "default": "NameAsc"
          },
          "pageSize": {
            "title": "Results per request",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many results to ask for in one request. The actor pages through until the results run out, so this changes the request count rather than the total returned.",
            "default": 50
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Pace the run so it stays under whatever rate your plan allows. Lower this if the provider starts returning rate limit responses.",
            "default": 120
          },
          "skipNotFound": {
            "title": "Skip inputs with no result",
            "type": "boolean",
            "description": "Leave inputs the provider had nothing for out of the dataset. Off by default, because keeping the misses is what lets you see which inputs resolved and which did not. Misses are never charged for either way.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many rows. This is the cap on both spend and run time.",
            "default": 100
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own secret API key for the B2B contact data API, sent in an authorization header rather than a URL parameter, so it never appears in a log line or a redirect. Use the secret key from your account, not the public one. Required for every lookup. Stored as a secret."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}