# Moltsets

> B2B people and company search with email discovery. Search people and companies, resolve LinkedIn profiles, and find business or personal emails by name or LinkedIn URL.

Source: https://cotera.co/docs/reference/tools/individual-tools/moltsets

---

**Authentication Type:** API Key\
**Description:** B2B people and company search with email discovery. Search people and companies, resolve LinkedIn profiles, and find verified business or personal emails by name or LinkedIn URL.

***

## Authentication

To authenticate, you'll need a Moltsets API key:

1. Log in to your [Moltsets](https://moltsets.com) account
2. Open **Settings → API Keys** and create a key (keys look like `ms_XXXXXXXXXXX`) — copy it, as it may be shown only once
3. Provide it as the `apiKey` field when connecting Moltsets in Cotera

Your key is sent to the Moltsets API as a bearer token on every request. Bring your own key — Cotera does not provide a shared Moltsets account.

***

## Search

Search the Moltsets database for people and companies, and resolve LinkedIn profiles.

### Search People

Search for people that match a free-text query, with optional country and seniority filters.

**Operation Type:** Query (Read)

**Parameters:**

* **query** `string` (required): Free-text search for people (e.g., "VP of Marketing at fintech startups").
* **country** `string` (nullable): Filter results to a country (e.g., "United States").
* **seniority** `string` (nullable): Filter by seniority level (e.g., "c\_suite", "vp", "director", "manager").
* **limit** `number` (nullable): Maximum number of results to return per page.
* **offset** `number` (nullable): Number of results to skip, for pagination.

**Returns:**

* **results** `array`: Matching people, each as the raw person record from Moltsets (name, title, company, location, etc.).
* **total** `number`: Total number of people matching the query.
* **status** `string` (nullable): Request status as reported by the API.
* **metadata** `object` (nullable): Request metadata (e.g., tokens charged, quota remaining).

**Example Usage:**

```json
{
  "query": "VP of Marketing fintech",
  "country": "United States",
  "seniority": "vp",
  "limit": 10
}
```

### Search Companies

Search for companies by keyword, with optional industry and employee-range filters.

**Operation Type:** Query (Read)

**Parameters:**

* **query** `string` (required): Free-text search for companies (e.g., "B2B fintech startups").
* **industry** `string` (nullable): Filter by industry (e.g., "Software").
* **employee\_range** `string` (nullable): Filter by employee-count range (e.g., "11-50", "1001-5000").
* **limit** `number` (nullable): Maximum number of results to return per page.
* **offset** `number` (nullable): Number of results to skip, for pagination.

**Returns:**

* **results** `array`: Matching companies, each as the raw company record from Moltsets (fields such as `logo`, `domain`, `revenue`, `employee_count`, `linkedin_company_id`).
* **total** `number`: Total number of companies matching the query.
* **status** `string` (nullable): Request status.
* **metadata** `object` (nullable): Request metadata.

**Example Usage:**

```json
{
  "query": "B2B fintech",
  "industry": "Software",
  "employee_range": "11-50"
}
```

### Search LinkedIn Profile

Find LinkedIn profile(s) for a person by name and optional company. Use `count_only` to check how many matches exist before fetching details.

**Operation Type:** Query (Read)

**Parameters:**

* **name** `string` (required): Name of the person to look up.
* **company** `string` (nullable): Company to disambiguate the person.
* **count\_only** `boolean`: When true, return only the number of matching profiles (no details). Defaults to false.

**Returns:**

* **count** `number` (nullable): Number of matching LinkedIn profiles.
* **profiles** `array`: Matching profiles (empty when `count_only` is true).
* **status** `string` (nullable): Request status.
* **metadata** `object` (nullable): Request metadata.

**Example Usage:**

```json
{
  "name": "Jane Doe",
  "company": "Stripe",
  "count_only": false
}
```

***

## Business Lookups by Name

Resolve a business email or full business profile from a person's name and company.

### Search Business Email By Name

Find a person's business email and LinkedIn URL from their name and company information.

**Operation Type:** Query (Read)

**Parameters:**

* **name** `string` (nullable): Full name of the person. Provide either this, or `first_name` and `last_name`.
* **first\_name** `string` (nullable): First name (use with `last_name`).
* **last\_name** `string` (nullable): Last name (use with `first_name`).
* **company** `string` (nullable): Company name. Provide either this or `company_domain`.
* **company\_domain** `string` (nullable): Company domain (e.g., "acme.com").

**Returns:**

* **email** `string` (nullable): The business email address found.
* **linkedinUrl** `string` (nullable): The person's LinkedIn URL, if returned.
* **status** `string` (nullable): Request status.
* **metadata** `object` (nullable): Request metadata.

**Example Usage:**

```json
{
  "first_name": "Jane",
  "last_name": "Doe",
  "company_domain": "acme.com"
}
```

### Search Business Profile By Name

Find a full business profile (person details plus company firmographics) by name and company.

**Operation Type:** Query (Read)

**Parameters:**

* **name** `string` (nullable): Full name of the person. Provide either this, or `first_name` and `last_name`.
* **first\_name** `string` (nullable): First name (use with `last_name`).
* **last\_name** `string` (nullable): Last name (use with `first_name`).
* **company** `string` (nullable): Company name. Provide either this or `company_domain`.
* **company\_domain** `string` (nullable): Company domain (e.g., "acme.com").

**Returns:**

* **profile** `object` (nullable): The matched business profile — person details plus company firmographics.
* **status** `string` (nullable): Request status.
* **metadata** `object` (nullable): Request metadata.

**Example Usage:**

```json
{
  "name": "Jane Doe",
  "company": "Acme"
}
```

***

## Email by LinkedIn URL

Resolve a validated email directly from a LinkedIn profile URL. All four tools take a single `linkedin_url`.

### LinkedIn to Best Email

Return the best available email for a LinkedIn profile (business preferred, falling back to personal).

**Operation Type:** Query (Read)

**Parameters:**

* **linkedin\_url** `string` (required): LinkedIn profile URL (e.g., "<https://www.linkedin.com/in/janedoe>").

**Returns:**

* **email** `string` (nullable): The best email address found.
* **type** `string` (nullable): The type of email returned (e.g., "business").
* **lastValidatedAt** `string` (nullable): ISO timestamp of when the email was last validated.
* **status** `string` (nullable): Request status.
* **metadata** `object` (nullable): Request metadata.

**Example Usage:**

```json
{
  "linkedin_url": "https://www.linkedin.com/in/janedoe"
}
```

### LinkedIn to Business Email

Return the business (work) email for a LinkedIn profile.

**Operation Type:** Query (Read)

**Parameters:**

* **linkedin\_url** `string` (required): LinkedIn profile URL.

**Returns:**

* **email** `string` (nullable): The business email address found.
* **status** `string` (nullable): Request status.
* **metadata** `object` (nullable): Request metadata.

**Example Usage:**

```json
{
  "linkedin_url": "https://www.linkedin.com/in/janedoe"
}
```

### LinkedIn to Personal Email

Return the personal email for a LinkedIn profile.

**Operation Type:** Query (Read)

**Parameters:**

* **linkedin\_url** `string` (required): LinkedIn profile URL.

**Returns:**

* **email** `string` (nullable): The personal email address found.
* **lastValidatedAt** `string` (nullable): ISO timestamp of when the email was last validated.
* **status** `string` (nullable): Request status.
* **metadata** `object` (nullable): Request metadata.

**Example Usage:**

```json
{
  "linkedin_url": "https://www.linkedin.com/in/janedoe"
}
```

### LinkedIn to Best Personal Email

Return the best available personal email for a LinkedIn profile.

**Operation Type:** Query (Read)

**Parameters:**

* **linkedin\_url** `string` (required): LinkedIn profile URL.

**Returns:**

* **email** `string` (nullable): The best personal email address found.
* **lastValidatedAt** `string` (nullable): ISO timestamp of when the email was last validated.
* **status** `string` (nullable): Request status.
* **metadata** `object` (nullable): Request metadata.

**Example Usage:**

```json
{
  "linkedin_url": "https://www.linkedin.com/in/janedoe"
}
```

***

## Common Use Cases

**Prospecting:**

* Search people by title, seniority, and country to build a targeted lead list
* Search companies by industry and size to find target accounts
* Resolve a name + company to a LinkedIn profile, then to a verified email

**Enrichment:**

* Append business emails to a CRM export using names and company domains
* Pull full business profiles (role + firmographics) for inbound signups
* Find personal emails for candidates or hard-to-reach contacts from LinkedIn URLs

**Outreach Workflows:**

* Convert a list of LinkedIn URLs into validated best emails before a sequence
* Prefer business email for B2B outreach, falling back to personal when needed
* Use `last_validated_at` to skip or re-verify stale email addresses

```
```

