---
type: "firecrawl-provider"
description: "Search people and companies, enrich profiles, find emails, and read recent LinkedIn posts."
use_when: "Search people, enrich a profile, find an email, look up who owns an email, and read recent LinkedIn posts.\n\nSearch companies and enrich a company from its domain or LinkedIn URL."
categories: "People"
capabilities: 7
pricing: "2–10 credits per billed unit; see each capability for its unit and maximum."
---
# Village on Firecrawl Alexandria

Search people and companies, enrich profiles, find emails, and read recent LinkedIn posts.

- Categories: People
- Category index: [People category](https://alexandria.firecrawl.dev/agents/categories/people)
- Provider key: `village`
- Access: Firecrawl credits
- Cost (People search): 2 credits per person returned
- Cost (Person profile): 10 credits per record
- Cost (Email finder): 10 credits per record
- Cost (Reverse email lookup): 10 credits per record
- Cost (LinkedIn posts): 10 credits per page of posts
- Cost (Company search): 5 credits per company returned
- Cost (Company profile): 10 credits per record

## More

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

## Capabilities

- [People search](https://alexandria.firecrawl.dev/agents/providers/village/people/search): People under data. pagination.cursor and pagination.has_next_page fetch the next page. metadata.plan_disclosure explains how a prompt was read.
- [Person profile](https://alexandria.firecrawl.dev/agents/providers/village/people/enrich): One person profile under data. metadata.request_id identifies the call. A 404 is no match and costs nothing.
- [Email finder](https://alexandria.firecrawl.dev/agents/providers/village/people/email-find): email is the best address, or null when none was found. emails lists every address Village holds, best first.
- [Reverse email lookup](https://alexandria.firecrawl.dev/agents/providers/village/people/from-email): The person who owns the address, under data, in the same shape as people/enrich. A 404 is no match and costs nothing.
- [LinkedIn posts](https://alexandria.firecrawl.dev/agents/providers/village/people/posts): Posts under data, newest first. reposted_by is set on a reshare. pagination.cursor fetches the next page.
- [Company search](https://alexandria.firecrawl.dev/agents/providers/village/companies/search): Companies under data, each with id and name plus Village's profile fields. pagination.cursor fetches the next page.
- [Company profile](https://alexandria.firecrawl.dev/agents/providers/village/companies/enrich): data.company is the profile. funding is passed through as Village stores it, either an object or an array.

## 1. Choose this provider when

Search people, enrich a profile, find an email, look up who owns an email, and read recent LinkedIn posts.

Search companies and enrich a company from its domain or LinkedIn URL.

## 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": "village",
  "capability": "people/search",
  "options": {
    "prompt": "<prompt>",
    "limit": 25
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `prompt` (string): Plain-language search, such as "VP Engineering at Series B fintechs in NYC". Example: `<prompt>`
- `filters` (object): Structured filters, such as { position, seniority, company, companyDomain, companyIndustry, country, city }. See Village's search-people reference for every key and its canonical values. Example: `{}`
- `limit` (number): People per page, 1 to 100. Village's default is 25. The price scales with the people returned. Example: `25`
- `mode` (string): auto (default) picks lookup, simple or complex. complex searches take 20 to 60 seconds. Example: `auto`
- `cursor` (string): pagination.cursor from the previous page. Example: `<cursor>`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "village",
    capability: "people/search",
    options: {
      prompt: "<prompt>",
      limit: 25,
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "village",
  "capability": "people/search",
  "options": {
    "prompt": "<prompt>",
    "limit": 25
  }
})
```

### cURL

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

### CLI

```sh
firecrawl scrape 'village/people/search' \
  --options '{"prompt":"<prompt>","limit":25}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "village",
  "capability": "people/search",
  "options": {
    "prompt": "<prompt>",
    "limit": 25
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "village",
  "capability": "people/search",
  "options": {
    "prompt": "<prompt>",
    "limit": 25
  }
}
```

## 6. Response data

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

```json
{
  "data": [
    {
      "id": 0,
      "first_name": "<first_name>",
      "last_name": "<last_name>",
      "full_name": "<full_name>",
      "linkedin_url": "<linkedin_url>",
      "headline": "<headline>",
      "about_me": "<about_me>",
      "location": {},
      "work_relevant": {},
      "image_url": "<image_url>",
      "last_enrichment_at": "<last_enrichment_at>"
    }
  ]
}
```

## API reference-derived contract

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

### People search

- Capability: `people/search`
- Description: People under data. pagination.cursor and pagination.has_next_page fetch the next page. metadata.plan_disclosure explains how a prompt was read.
- Instructions: Find people by role, company, seniority or location across Village's global index. 5 Firecrawl credits per person returned, nothing for an empty page. Use people/enrich when you already have the LinkedIn URL.
- Cost: 2 credits per person returned
- Capability file: [People search](https://alexandria.firecrawl.dev/agents/providers/village/people/search)

Accepted options:
- `prompt` (string): Plain-language search, such as "VP Engineering at Series B fintechs in NYC". Example: `<prompt>`
- `filters` (object): Structured filters, such as { position, seniority, company, companyDomain, companyIndustry, country, city }. See Village's search-people reference for every key and its canonical values. Example: `{}`
- `limit` (number): People per page, 1 to 100. Village's default is 25. The price scales with the people returned. Example: `25`
- `mode` (string): auto (default) picks lookup, simple or complex. complex searches take 20 to 60 seconds. Example: `auto`
- `cursor` (string): pagination.cursor from the previous page. Example: `<cursor>`

Response schema example:
```json
{
  "data": [
    {
      "id": 0,
      "first_name": "<first_name>",
      "last_name": "<last_name>",
      "full_name": "<full_name>",
      "linkedin_url": "<linkedin_url>",
      "headline": "<headline>",
      "about_me": "<about_me>",
      "location": {},
      "work_relevant": {},
      "image_url": "<image_url>",
      "last_enrichment_at": "<last_enrichment_at>"
    }
  ]
}
```

### Person profile

- Capability: `people/enrich`
- Description: One person profile under data. metadata.request_id identifies the call. A 404 is no match and costs nothing.
- Instructions: Get a person's profile (name, headline, current role and company, location, work and education history) from a LinkedIn URL. 20 Firecrawl credits when a profile comes back, nothing on a 404.
- Cost: 10 credits per record
- Capability file: [Person profile](https://alexandria.firecrawl.dev/agents/providers/village/people/enrich)

Accepted options:
- `linkedin_url` (string): LinkedIn profile URL, such as https://www.linkedin.com/in/satyanadella. Send this or url. Example: `<linkedin_url>`
- `url` (string): Any profile URL Village can recognise. Send this or linkedin_url. Example: `<url>`
- `mode` (string): cached_first (Village's default) returns a recent stored record and otherwise fetches live. realtime_only always fetches live. Example: `cached_first`

Response schema example:
```json
{
  "data": {
    "full_name": "<full_name>",
    "linkedin_url": "<linkedin_url>",
    "avatar": "<avatar>",
    "headline": "<headline>",
    "location": {},
    "work_relevant": {},
    "work_history": [],
    "education_history": [],
    "last_enrichment_at": "<last_enrichment_at>"
  }
}
```

### Email finder

- Capability: `people/email-find`
- Description: email is the best address, or null when none was found. emails lists every address Village holds, best first.
- Instructions: Find a person's email address from their LinkedIn URL. 20 Firecrawl credits when an address comes back. email null costs nothing.
- Cost: 10 credits per record
- Capability file: [Email finder](https://alexandria.firecrawl.dev/agents/providers/village/people/email-find)

Accepted options:
- `linkedin_url` (string): LinkedIn profile URL, such as https://www.linkedin.com/in/satyanadella. Send this or url. Example: `<linkedin_url>`
- `url` (string): Any profile URL Village can recognise. Send this or linkedin_url. Example: `<url>`
- `search_deeper` (boolean): Ask the upstream provider again even when Village already holds an address. Example: `false`

Response schema example:
```json
{
  "data": {
    "email": "<email>",
    "emails": [],
    "linkedin_url": "<linkedin_url>"
  }
}
```

### Reverse email lookup

- Capability: `people/from-email`
- Description: The person who owns the address, under data, in the same shape as people/enrich. A 404 is no match and costs nothing.
- Instructions: Find who an email address belongs to and return their profile. 20 Firecrawl credits when a person comes back, nothing on a 404.
- Cost: 10 credits per record
- Capability file: [Reverse email lookup](https://alexandria.firecrawl.dev/agents/providers/village/people/from-email)

Accepted options:
- `email` (string, required): Work or personal email address. Example: `<email>`
- `mode` (string): cached_first (Village's default) returns a recent stored record and otherwise fetches live. realtime_only always fetches live. Example: `cached_first`

Response schema example:
```json
{
  "data": {
    "full_name": "<full_name>",
    "linkedin_url": "<linkedin_url>",
    "avatar": "<avatar>",
    "headline": "<headline>",
    "location": {},
    "work_relevant": {},
    "work_history": [],
    "education_history": [],
    "last_enrichment_at": "<last_enrichment_at>"
  }
}
```

### LinkedIn posts

- Capability: `people/posts`
- Description: Posts under data, newest first. reposted_by is set on a reshare. pagination.cursor fetches the next page.
- Instructions: Read a person's recent LinkedIn posts and reshares, newest first. 20 Firecrawl credits per page with posts, nothing for an empty page or a 404. Check author and reposted_by before attributing a post.
- Cost: 10 credits per page of posts
- Capability file: [LinkedIn posts](https://alexandria.firecrawl.dev/agents/providers/village/people/posts)

Accepted options:
- `linkedin_url` (string, required): LinkedIn profile URL. Example: `<linkedin_url>`
- `limit` (number): Posts per call, 1 to 50. Village's default is 20. Example: `10`
- `cursor` (string): pagination.cursor from the previous page. Example: `<cursor>`

Response schema example:
```json
{
  "data": [
    {
      "id": "<id>",
      "linkedin_url": "<linkedin_url>",
      "content": "<content>",
      "posted_at": "<posted_at>",
      "author": {},
      "reposted_by": "<reposted_by>",
      "engagement": {},
      "mentions": [],
      "images": [],
      "has_video": false,
      "repost": {}
    }
  ]
}
```

### Company search

- Capability: `companies/search`
- Description: Companies under data, each with id and name plus Village's profile fields. pagination.cursor fetches the next page.
- Instructions: Find companies by industry, size, location, funding or hiring across Village's global index. 5 Firecrawl credits per company returned, nothing for an empty page. Use companies/enrich when you already have the domain.
- Cost: 5 credits per company returned
- Capability file: [Company search](https://alexandria.firecrawl.dev/agents/providers/village/companies/search)

Accepted options:
- `prompt` (string): Plain-language search, such as "B2B SaaS companies with 50-200 employees in California". Example: `<prompt>`
- `filters` (object): Structured filters, such as { industry, companySize, country, city, fundingStage, foundedAfter, hiring }. See Village's search-companies reference for every key. Example: `{}`
- `limit` (number): Companies per page, 1 to 100. Village's default is 25. The price scales with the companies returned. Example: `25`
- `mode` (string): auto (default), lookup, simple or complex. complex searches take 20 to 60 seconds. Example: `auto`
- `cursor` (string): pagination.cursor from the previous page. Example: `<cursor>`

Response schema example:
```json
{
  "data": [
    {
      "id": "<id>",
      "name": "<name>"
    }
  ]
}
```

### Company profile

- Capability: `companies/enrich`
- Description: data.company is the profile. funding is passed through as Village stores it, either an object or an array.
- Instructions: Get a company profile (name, website, LinkedIn URL, employee count, industry, founded year, description, funding) from a domain or LinkedIn URL. 20 Firecrawl credits when a company comes back, nothing on a 404.
- Cost: 10 credits per record
- Capability file: [Company profile](https://alexandria.firecrawl.dev/agents/providers/village/companies/enrich)

Accepted options:
- `domain` (string): Company domain without www, such as stripe.com. Example: `<domain>`
- `linkedin_url` (string): LinkedIn company URL, such as https://www.linkedin.com/company/stripe. Example: `<linkedin_url>`
- `url` (string): Any company URL Village can recognise. Example: `<url>`
- `mode` (string): cached_first (Village's default) returns a recent stored record and otherwise fetches live. realtime_only always fetches live. Example: `cached_first`

Response schema example:
```json
{
  "data": {
    "company": {}
  }
}
```
