{
  "openapi": "3.0.1",
  "info": {
    "title": "B2B Contact Enrichment API - Email, Company, Job Title",
    "description": "Enrich people and companies, or find new contacts at a company by seniority and department. Returns work email, phone, job title, seniority, department, profile URL, previous employer, plus company size, revenue, industry and address. Pay per result.",
    "version": "0.1",
    "x-build-id": "Hm5wP2MEc3DuM4ljq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~b2b-contact-enrichment-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-b2b-contact-enrichment-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-enrichment-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-b2b-contact-enrichment-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-enrichment-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-b2b-contact-enrichment-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": [
              "enrichContact",
              "enrichAccount",
              "getContacts",
              "listRequests",
              "stats"
            ],
            "type": "string",
            "description": "The three enrichment modes send records and wait for the answers. Find contacts is the only one that returns people you did not already know about. The last two read your own account: what you have already run, and how many calls it has used.",
            "default": "enrichContact"
          },
          "records": {
            "title": "Records to send",
            "type": "array",
            "description": "One object per record, using this provider's own field names. Company keys are org_company_name, org_website, org_linkedin_url, org_city, org_state, org_country, org_street, org_zip_code, org_phone, org_industry, org_annual_revenue, org_num_employees, org_num_employees_exact and org_record_id. Person keys are contact_first_name, contact_last_name, contact_linkedin_url, contact_email, contact_job_title, contact_department, contact_seniority and contact_record_id."
          },
          "contactLinkedinUrls": {
            "title": "Profile URLs",
            "type": "array",
            "description": "A shortcut for contact enrichment: one professional profile URL per line. A profile URL on its own is enough to identify a person at this provider, which is why it is the easiest way in.",
            "items": {
              "type": "string"
            }
          },
          "companyDomains": {
            "title": "Company domains",
            "type": "array",
            "description": "A shortcut for company enrichment and for finding contacts: one company website per line.",
            "items": {
              "type": "string"
            }
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own API key for this provider. The actor sends it in the header as the word Token followed by the key, which is what this provider expects rather than a bearer token. Bring your own key: nothing is shared between runs and the key is never written to the dataset."
          },
          "contactsPerCompany": {
            "title": "Contacts per company",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "In find contacts mode, how many people to return for each company, from one to ten. Every contact found is a row here and a unit of work at the provider.",
            "default": 1
          },
          "seniority": {
            "title": "Seniority",
            "enum": [
              "VP+",
              "Director+",
              "Manager+",
              "C-level",
              "VP",
              "Director",
              "Manager",
              "Senior",
              "Entry level"
            ],
            "type": "string",
            "description": "In find contacts mode, how senior the people should be. The three values ending in a plus sign are inclusive bands: VP+ covers C-level and VP, Director+ adds Director, Manager+ adds Manager. The rest are exactly the level named."
          },
          "department": {
            "title": "Department",
            "enum": [
              "Business Development",
              "Consulting",
              "Design",
              "Education",
              "Engineering",
              "Executive",
              "Finance",
              "Health Services",
              "Human Resources",
              "Information Technology",
              "Legal",
              "Marketing",
              "Media and Communications",
              "Operations",
              "Product",
              "Sales"
            ],
            "type": "string",
            "description": "In find contacts mode, which function the people should sit in. These are the provider's own department values and anything else is refused."
          },
          "filterRequestId": {
            "title": "Request id",
            "type": "string",
            "description": "In list mode, fetch one specific enrichment request by its id."
          },
          "filterStatus": {
            "title": "Request status",
            "enum": [
              "scheduled",
              "in_progress",
              "erred",
              "cancelled",
              "ok"
            ],
            "type": "string",
            "description": "In list mode, keep only requests in this state. Only requests that finished as ok carry data."
          },
          "filterEnrichmentType": {
            "title": "Request type",
            "enum": [
              "contact",
              "account",
              "get_contacts"
            ],
            "type": "string",
            "description": "In list mode, keep only requests of this kind."
          },
          "filterCreatedFrom": {
            "title": "Created from",
            "type": "string",
            "description": "In list mode, the earliest creation date to include. Either a date such as 2026-01-02 or a full timestamp such as 2026-01-03T18:03:11Z."
          },
          "filterCreatedTo": {
            "title": "Created to",
            "type": "string",
            "description": "In list mode, the latest creation date to include, in the same two forms."
          },
          "requireEmail": {
            "title": "Keep only rows with an email address",
            "type": "boolean",
            "description": "Drops people the provider returned without a work email.",
            "default": false
          },
          "requirePhone": {
            "title": "Keep only rows with a phone number",
            "type": "boolean",
            "description": "Drops people the provider returned without a phone number.",
            "default": false
          },
          "requireLinkedin": {
            "title": "Keep only rows with a profile URL",
            "type": "boolean",
            "description": "Drops people the provider returned without a professional profile URL.",
            "default": false
          },
          "pollTimeoutSeconds": {
            "title": "How long to wait for results",
            "minimum": 10,
            "maximum": 3600,
            "type": "integer",
            "description": "Enrichment here is asynchronous: records are submitted, then fetched once they finish. This is how long the run waits before giving up on the ones still running. Nothing is lost when it runs out; the requests keep going at the provider and the list mode fetches them later by id.",
            "default": 300
          },
          "skipNotFound": {
            "title": "Leave misses out of the dataset",
            "type": "boolean",
            "description": "Records that resolved to nothing, were refused, or had not finished when the wait ran out are written as rows with the reason, so you can see what happened to every input. Turn this on to keep only the ones that carry data. Misses are never charged for either way.",
            "default": false
          },
          "baseUrl": {
            "title": "API host",
            "type": "string",
            "description": "The host serving the API. Change it only if your account is served from somewhere other than the default.",
            "default": "https://leadgenius.com"
          },
          "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": 50,
            "type": "integer",
            "description": "How fast to call the provider. The documented ceiling is fifty a minute and polling counts towards it, so the default sits below the limit rather than at it.",
            "default": 40
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}