{
  "openapi": "3.0.1",
  "info": {
    "title": "Contact Enrichment API - Emails and Phones by Profile",
    "description": "Turn LinkedIn profile URLs, email addresses, phone numbers or profile ids into full people records with work emails, personal emails, direct phone numbers, job history, education, skills and social profiles. Or search for people by title, company, location and seniority. Pay per result.",
    "version": "0.1",
    "x-build-id": "mffnVaMUaYhhGpMW5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~contact-enrichment-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-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~contact-enrichment-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-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~contact-enrichment-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-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": [
              "enrich",
              "search"
            ],
            "type": "string",
            "description": "Enrich resolves people you already have a handle on, by LinkedIn profile URL, email address, phone number or provider profile id, into full profiles with work emails, personal emails and direct phone numbers. Search finds people you do not know yet by job title, company, location, seniority and keywords, and returns profile overviews without contact details.",
            "default": "enrich"
          },
          "items": {
            "title": "Identifiers to enrich",
            "type": "array",
            "description": "One identifier per line. LinkedIn profile URLs, email addresses, phone numbers and provider profile ids can be mixed freely in the same list, and each is classified before the request. Profile URLs are reduced to their canonical form first, so tracking parameters and locale prefixes do not matter. Enrichment only.",
            "items": {
              "type": "string"
            }
          },
          "currentTitle": {
            "title": "Job title",
            "type": "string",
            "description": "Job title to search for. Boolean syntax is supported by the provider, so terms can be combined with AND, OR and NOT and grouped with brackets. Search only. For example (\"VP of Engineering\" OR \"Head of Engineering\")."
          },
          "includePastTitles": {
            "title": "Include past job titles",
            "type": "boolean",
            "description": "Match the title against a person's whole career rather than only their current role. Useful when you want people who have done the job before, not only those doing it now. Search only.",
            "default": false
          },
          "currentCompany": {
            "title": "Company",
            "type": "string",
            "description": "Employer to search for. Boolean syntax is supported, so several companies can be combined with OR. Search only. For example (Stripe OR Shopify)."
          },
          "includePastCompanies": {
            "title": "Include past employers",
            "type": "boolean",
            "description": "Match the company against a person's whole career rather than only their current employer. This is how you find alumni of a company rather than its current staff. Search only.",
            "default": false
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, states or countries, one per line. Several locations are treated as alternatives. Search only.",
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "Industry names as the provider spells them, one per line, such as Computer Software, Financial Services or Hospital & Health Care. Several are treated as alternatives. Search only.",
            "items": {
              "type": "string"
            }
          },
          "departments": {
            "title": "Departments",
            "type": "array",
            "description": "Restrict the search to people in these functions. Search only.",
            "items": {
              "type": "string",
              "enum": [
                "Marketing",
                "Sales",
                "Engineering",
                "Finance",
                "Human Resources",
                "Operations",
                "Legal",
                "Product",
                "Design",
                "Support",
                "Education",
                "Medical",
                "Consulting",
                "Research"
              ]
            },
            "default": []
          },
          "levels": {
            "title": "Seniority levels",
            "type": "array",
            "description": "Restrict the search to these seniority bands. Combining C-Level, VP and Head is the usual shape of a decision maker search. Search only.",
            "items": {
              "type": "string",
              "enum": [
                "Intern",
                "Junior",
                "Mid-Level",
                "Senior",
                "Lead",
                "Head",
                "VP",
                "C-Level",
                "Founder",
                "Board",
                "Directors"
              ]
            },
            "default": []
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Free text matched across skills, education and the rest of the profile. Boolean syntax is supported. Search only. For example (Kubernetes AND Terraform)."
          },
          "fullName": {
            "title": "Full name",
            "type": "string",
            "description": "Search by a person's name when you know who you are looking for but have no profile URL for them. Search only. For example Jane Doe."
          },
          "education": {
            "title": "Education",
            "type": "string",
            "description": "University, faculty or degree to match. Boolean syntax is supported. Search only. For example (Stanford OR MIT)."
          },
          "yearsOfExperienceFrom": {
            "title": "Minimum years of experience",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Only return people with at least this many years of total career experience. Leave empty for no lower bound. Search only."
          },
          "yearsOfExperienceTo": {
            "title": "Maximum years of experience",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Only return people with at most this many years of total career experience. Leave empty for no upper bound. Search only."
          },
          "openToWork": {
            "title": "Only people open to work",
            "type": "boolean",
            "description": "Restrict the search to people who have flagged themselves as open to new roles. Useful for recruiting, useless for sales. Search only.",
            "default": false
          },
          "requireEmail": {
            "title": "Require an email address",
            "type": "boolean",
            "description": "Only keep people the provider returned at least one email address for. Applied after the provider answers, so it reduces dataset noise and Apify spend rather than provider credits.",
            "default": false
          },
          "requireWorkEmail": {
            "title": "Require a work email address",
            "type": "boolean",
            "description": "Only keep people with an address the provider marked as a work address, rather than a personal one. This is the filter that turns a mixed list into one usable for B2B outreach.",
            "default": false
          },
          "requirePhone": {
            "title": "Require a phone number",
            "type": "boolean",
            "description": "Only keep people the provider returned at least one phone number for.",
            "default": false
          },
          "batchSize": {
            "title": "Identifiers per request",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many identifiers to resolve in one request, up to the provider's own ceiling of one hundred. Larger batches mean far fewer requests for a big list. Enrichment only.",
            "default": 100
          },
          "pageSize": {
            "title": "Profiles per search page",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many profiles the provider returns per search page, up to its own ceiling of one hundred. Search only.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Pace the run so it stays under whatever rate your plan allows. Trial accounts are limited far more tightly than paid ones. Lower this if the provider starts returning rate limit responses.",
            "default": 60
          },
          "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 identifiers 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 API key for the contact data API. Sent as a request header, never on the URL. 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}