---
type: "firecrawl-provider"
description: "Person and company profiles from a LinkedIn URL, a name, a domain, or a role."
use_when: "Look up a person profile, resolve a person from a name and company, or find who holds a role.\n\nResolve a company profile from a LinkedIn URL, name, or domain, and list its employees."
categories: "People"
capabilities: 6
credits_per_record: 10
---
# EnrichLayer on Firecrawl Alexandria

Person and company profiles from a LinkedIn URL, a name, a domain, or a role.

- Categories: People
- Category index: [People category](https://alexandria.firecrawl.dev/agents/categories/people)
- Provider key: `enrichlayer`
- Access: Firecrawl credits
- Cost (Person profile): 10 credits per record
- Cost (Person lookup): 10 credits per record
- Cost (Role lookup): 10 credits per record
- Cost (Company profile): 10 credits per record
- Cost (Company lookup): 10 credits per record
- Cost (Company employees): 10 credits per record

## More

- [Human guide](https://www.firecrawl.dev/app/alexandria/enrichlayer)
- [OpenAPI spec](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/openapi.json)

## Capabilities

- [Person profile](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/people/profile): One person profile. public_identifier is the LinkedIn slug. An empty profile costs nothing.
- [Person lookup](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/people/lookup): A match. url is the profile URL, or null when nothing matched. profile is the cached person when EnrichLayer includes one. Similarity scores compare the query with the match.
- [Role lookup](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/people/role): The closest role match. linkedin_profile_url is null when nobody matched. profile is included when EnrichLayer sends a cached person.
- [Company profile](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/companies/profile): One company profile. universal_name_id is the LinkedIn company slug.
- [Company lookup](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/companies/lookup): A match. url is the company profile URL, or null when nothing matched. profile is the cached company when EnrichLayer includes one.
- [Company employees](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/companies/employees): Employee rows. Each row has profile_url and, when EnrichLayer includes it, profile. next_page on the response is the cursor for after.

## 1. Choose this provider when

Look up a person profile, resolve a person from a name and company, or find who holds a role.

Resolve a company profile from a LinkedIn URL, name, or domain, and list its employees.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "enrichlayer",
  "capability": "people/profile",
  "options": {
    "profile_url": "<profile_url>"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `profile_url` (string): LinkedIn profile URL, such as https://www.linkedin.com/in/satyanadella. Example: `<profile_url>`
- `twitter_profile_url` (string): Twitter profile URL, when there is no LinkedIn URL. Example: `<twitter_profile_url>`
- `facebook_profile_url` (string): Facebook profile URL, when there is no LinkedIn URL. Example: `<facebook_profile_url>`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "enrichlayer",
    capability: "people/profile",
    options: {
      profile_url: "<profile_url>",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "enrichlayer",
  "capability": "people/profile",
  "options": {
    "profile_url": "<profile_url>"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "enrichlayer",
    "capability": "people/profile",
    "options": {
      "profile_url": "<profile_url>"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'enrichlayer/people/profile' \
  --options '{"profile_url":"<profile_url>"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "enrichlayer",
  "capability": "people/profile",
  "options": {
    "profile_url": "<profile_url>"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "enrichlayer",
  "capability": "people/profile",
  "options": {
    "profile_url": "<profile_url>"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "public_identifier": "<public_identifier>",
  "full_name": "<full_name>",
  "first_name": "<first_name>",
  "last_name": "<last_name>",
  "headline": "<headline>",
  "occupation": "<occupation>",
  "experiences": []
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Person profile

- Capability: `people/profile`
- Description: One person profile. public_identifier is the LinkedIn slug. An empty profile costs nothing.
- Instructions: Get a person profile from a LinkedIn, Twitter, or Facebook URL. Cached results use use_cache=if-present so the call stays at the base price. 10 credits when a profile comes back, and nothing on a miss. Use people/lookup when you have a name and company instead of a URL.
- Cost: 10 credits per record
- Capability file: [Person profile](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/people/profile)

Accepted options:
- `profile_url` (string): LinkedIn profile URL, such as https://www.linkedin.com/in/satyanadella. Example: `<profile_url>`
- `twitter_profile_url` (string): Twitter profile URL, when there is no LinkedIn URL. Example: `<twitter_profile_url>`
- `facebook_profile_url` (string): Facebook profile URL, when there is no LinkedIn URL. Example: `<facebook_profile_url>`

Response schema example:
```json
{
  "public_identifier": "<public_identifier>",
  "full_name": "<full_name>",
  "first_name": "<first_name>",
  "last_name": "<last_name>",
  "headline": "<headline>",
  "occupation": "<occupation>",
  "experiences": []
}
```

### Person lookup

- Capability: `people/lookup`
- Description: A match. url is the profile URL, or null when nothing matched. profile is the cached person when EnrichLayer includes one. Similarity scores compare the query with the match.
- Instructions: Resolve a person from a first name and company domain. url is the LinkedIn profile when a match is found, and profile is included when EnrichLayer sends one. 10 credits when url is present, and nothing when it is null. Use people/profile when you already have the LinkedIn URL.
- Cost: 10 credits per record
- Capability file: [Person lookup](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/people/lookup)

Accepted options:
- `company_domain` (string, required): Employer domain or company name, such as microsoft.com. Example: `<company_domain>`
- `first_name` (string, required): Given name. Example: `<first_name>`
- `last_name` (string): Family name. Results are sharper with it. Example: `<last_name>`
- `title` (string): Job title to narrow the match. Example: `<title>`
- `location` (string): Country, state, or city. Example: `<location>`
- `similarity_checks` (string): include discards weak matches. skip returns the closest match. Default is include. Example: `include`

Response schema example:
```json
{
  "url": "<url>",
  "profile": {},
  "name_similarity_score": 0,
  "company_similarity_score": 0,
  "title_similarity_score": 0,
  "location_similarity_score": 0,
  "last_updated": "<last_updated>"
}
```

### Role lookup

- Capability: `people/role`
- Description: The closest role match. linkedin_profile_url is null when nobody matched. profile is included when EnrichLayer sends a cached person.
- Instructions: Find the person who most closely holds a role at a company. linkedin_profile_url is set when someone matches. 10 credits when that URL is present, and nothing when it is null. Use companies/employees to list many people.
- Cost: 10 credits per record
- Capability file: [Role lookup](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/people/role)

Accepted options:
- `role` (string, required): Role to find, such as CEO. Example: `<role>`
- `company_name` (string, required): Company name, such as Microsoft. Example: `<company_name>`

Response schema example:
```json
{
  "linkedin_profile_url": "<linkedin_profile_url>",
  "profile": {},
  "last_updated": "<last_updated>"
}
```

### Company profile

- Capability: `companies/profile`
- Description: One company profile. universal_name_id is the LinkedIn company slug.
- Instructions: Get a company profile from its LinkedIn company URL. Cached results use use_cache=if-present. 10 credits when a company comes back, and nothing on a miss. Use companies/lookup when you have a domain or name instead of a URL.
- Cost: 10 credits per record
- Capability file: [Company profile](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/companies/profile)

Accepted options:
- `url` (string, required): LinkedIn company URL, such as https://www.linkedin.com/company/microsoft. Example: `<url>`

Response schema example:
```json
{
  "name": "<name>",
  "universal_name_id": "<universal_name_id>",
  "website": "<website>",
  "industry": "<industry>",
  "description": "<description>",
  "company_size": {},
  "hq": {}
}
```

### Company lookup

- Capability: `companies/lookup`
- Description: A match. url is the company profile URL, or null when nothing matched. profile is the cached company when EnrichLayer includes one.
- Instructions: Resolve a company from its domain or name. url is the LinkedIn company URL when a match is found. 10 credits when url is present, and nothing when it is null. Use companies/profile when you already have that URL.
- Cost: 10 credits per record
- Capability file: [Company lookup](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/companies/lookup)

Accepted options:
- `company_domain` (string): Company website or domain, such as microsoft.com. Example: `<company_domain>`
- `company_name` (string): Company name, when the domain is unknown. Example: `<company_name>`
- `company_location` (string): ISO 3166-1 alpha-2 region code, such as us. Example: `<company_location>`

Response schema example:
```json
{
  "url": "<url>",
  "profile": {},
  "last_updated": "<last_updated>"
}
```

### Company employees

- Capability: `companies/employees`
- Description: Employee rows. Each row has profile_url and, when EnrichLayer includes it, profile. next_page on the response is the cursor for after.
- Instructions: List employees at a LinkedIn company URL. One page returns at most 10 people, and each returned employee costs 10 credits. An empty page costs nothing. Follow next_page with after. Use people/role to find one role instead of a page of people.
- Cost: 10 credits per record
- Capability file: [Company employees](https://alexandria.firecrawl.dev/agents/providers/enrichlayer/companies/employees)

Accepted options:
- `url` (string, required): LinkedIn company URL whose employees you want. Example: `<url>`
- `page_size` (number): Employees per page, from 1 to 10. Each returned employee costs 10 credits. Pass next_page back as after for the next page. Example: `1`
- `after` (string): Pagination token from the previous response's next_page. Example: `<after>`
- `employment_status` (string): current, past, or all. current is EnrichLayer's default. Example: `current`

Response schema example:
```json
{
  "employees": [
    {
      "profile_url": "<profile_url>",
      "profile": {},
      "last_updated": "<last_updated>"
    }
  ]
}
```
