{
  "openapi": "3.0.1",
  "info": {
    "title": "B2B Contact Database API - Company and Contact Search",
    "description": "Search a B2B database of companies and their employees by industry, employee band, revenue band, location, job title, department, seniority and installed technology, then reveal verified work emails and phone numbers. Pay per result. Bring your own API key.",
    "version": "0.1",
    "x-build-id": "0fldwOcfOh8mHW1H1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~b2b-contact-database-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-b2b-contact-database-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-database-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-b2b-contact-database-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-database-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-b2b-contact-database-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": "Mode",
            "enum": [
              "company-search",
              "contact-search",
              "contact-reveal"
            ],
            "type": "string",
            "description": "What this run does. Company search returns firmographics. Contact search returns people, as previews unless you turn on reveal. Contact reveal takes contact ids you already hold and returns their verified details.",
            "default": "company-search"
          },
          "companyNames": {
            "title": "Company names",
            "type": "array",
            "description": "Company names to match. Applies to both the company search and the contact search.",
            "items": {
              "type": "string"
            }
          },
          "companyDomains": {
            "title": "Company domains",
            "type": "array",
            "description": "Company domains to match. The most reliable company key, because it is already standardised.",
            "items": {
              "type": "string"
            }
          },
          "headCounts": {
            "title": "Employee bands",
            "type": "array",
            "description": "Headcount bands. These are fixed labels, not free ranges, which is why they are a dropdown. Company search only.",
            "items": {
              "type": "string",
              "enum": [
                "0 - 25",
                "25 - 100",
                "100 - 250",
                "250 - 1000",
                "1K - 10K",
                "10K - 50K",
                "50K - 100K",
                "> 100K"
              ],
              "enumTitles": [
                "0 to 25",
                "25 to 100",
                "100 to 250",
                "250 to 1,000",
                "1K to 10K",
                "10K to 50K",
                "50K to 100K",
                "More than 100K"
              ]
            }
          },
          "revenues": {
            "title": "Revenue bands",
            "type": "array",
            "description": "Annual revenue bands. Fixed labels rather than free ranges. Company search only.",
            "items": {
              "type": "string",
              "enum": [
                "$0 - 1M",
                "$1 - 10M",
                "$10 - 50M",
                "$50 - 100M",
                "$100 - 250M",
                "$250 - 500M",
                "$500M - 1B",
                "> $1B"
              ],
              "enumTitles": [
                "Up to $1M",
                "$1M to $10M",
                "$10M to $50M",
                "$50M to $100M",
                "$100M to $250M",
                "$250M to $500M",
                "$500M to $1B",
                "More than $1B"
              ]
            }
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "Industries to match. Company search only.",
            "items": {
              "type": "string"
            }
          },
          "subIndustries": {
            "title": "Sub-industries",
            "type": "array",
            "description": "Narrower industry classification. Company search only.",
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Cities to match. Company search only.",
            "items": {
              "type": "string"
            }
          },
          "states": {
            "title": "States",
            "type": "array",
            "description": "States or regions to match. Company search only.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Countries to match. Company search only.",
            "items": {
              "type": "string"
            }
          },
          "titles": {
            "title": "Job titles",
            "type": "array",
            "description": "Job titles to match.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitles": {
            "title": "Exclude job titles",
            "type": "array",
            "description": "Job titles to leave out, which is the fastest way to strip assistants and interns out of a senior list.",
            "items": {
              "type": "string"
            }
          },
          "titleExactMatch": {
            "title": "Exact title match",
            "type": "boolean",
            "description": "Match the job title exactly rather than as a partial phrase.",
            "default": false
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "Departments to match, for example marketing, engineering or finance.",
            "items": {
              "type": "string"
            }
          },
          "levels": {
            "title": "Seniority levels",
            "type": "array",
            "description": "Seniority bands, using the provider's own level names.",
            "items": {
              "type": "string"
            }
          },
          "contactNames": {
            "title": "Contact names",
            "type": "array",
            "description": "Full names to match.",
            "items": {
              "type": "string"
            }
          },
          "firstNames": {
            "title": "First names",
            "type": "array",
            "description": "First names to match.",
            "items": {
              "type": "string"
            }
          },
          "lastNames": {
            "title": "Last names",
            "type": "array",
            "description": "Last names to match.",
            "items": {
              "type": "string"
            }
          },
          "technologies": {
            "title": "Technologies used",
            "type": "array",
            "description": "Only return contacts at companies running these technologies.",
            "items": {
              "type": "string"
            }
          },
          "locationPreference": {
            "title": "Location preference",
            "type": "string",
            "description": "Location the contacts should be in, using the provider's own location format."
          },
          "requiredFields": {
            "title": "Required fields",
            "type": "array",
            "description": "Only return contacts that carry these fields, for example an email or a direct dial, so you do not pay for rows you cannot use.",
            "items": {
              "type": "string"
            }
          },
          "minimumEmailDeliverabilityScore": {
            "title": "Minimum email deliverability score",
            "minimum": 0,
            "type": "integer",
            "description": "Drop contacts whose email scores below this, which keeps bounce rates down."
          },
          "maxContactPerCompany": {
            "title": "Maximum contacts per company",
            "minimum": 1,
            "type": "integer",
            "description": "Cap how many people come back from any one company, so a single large employer cannot fill the whole list."
          },
          "dontDisplayOwnedContact": {
            "title": "Hide contacts you already own",
            "type": "boolean",
            "description": "Leave out contacts already saved in your provider account, so you do not pay twice for the same person.",
            "default": false
          },
          "revealContacts": {
            "title": "Reveal verified emails and phones",
            "type": "boolean",
            "description": "After searching, request the verified email addresses and phone numbers for the contacts found. This is a separate and more expensive action on your provider plan than searching, so it is off by default.",
            "default": false
          },
          "contactIds": {
            "title": "Contact ids to reveal",
            "type": "array",
            "description": "Contact ids you already hold, used by the reveal mode. Sent to the provider in batches of 50, which is its documented maximum.",
            "items": {
              "type": "string"
            }
          },
          "rawFilters": {
            "title": "Extra filters",
            "type": "object",
            "description": "Any additional search field, merged over the ones above. Use this for a filter the provider adds after this actor was published."
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 25000,
            "type": "integer",
            "description": "Stop after this many records (1 to 25,000). You are charged per result returned."
          },
          "pageSize": {
            "title": "Results per request",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many records to request per API call (1 to 100). Larger pages mean fewer calls against your provider rate limit of 250 requests per minute."
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own API key for the data provider. Required. Stored securely and never logged."
          },
          "accountEmail": {
            "title": "Account email",
            "type": "string",
            "description": "The email address your provider account is registered under. Required, and sent alongside the key on every request."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}