---
type: "firecrawl-provider"
description: "Person and company enrichment: find people by title and company, resolve them to verified work emails, and enrich companies from a domain with funding, headcount and technologies."
use_when: "Finding a person and then resolving them. Search returns obfuscated previews - a first name, a masked surname, whether an email exists - and costs nothing; matching one of those previews is what reveals the record and what is billed. Search first, match only the people you actually need.\n\nCompanies as Apollo holds them: firmographics, funding, headcount and technologies. Enrichment resolves one company from a domain; search finds companies matching a shape. A domain is the reliable key here, not a name."
categories: "People"
capabilities: 10
pricing: "0–30 credits per billed unit; see each capability for its unit and maximum."
---
# Apollo on Firecrawl Alexandria

Person and company enrichment: find people by title and company, resolve them to verified work emails, and enrich companies from a domain with funding, headcount and technologies.

- Categories: People
- Category index: [People category](https://firecrawl.dev/alexandria/agents/categories/people)
- Provider key: `apollo`
- Access: Firecrawl credits
- Cost (Person search): 0 credits per call
- Cost (Person match): 30 credits per matched person
- Cost (Complete person information): 30 credits per call
- Cost (Bulk people enrichment): 30 credits per record
- Cost (Company enrichment): 30 credits per call
- Cost (Company search): 30 credits per call
- Cost (Complete company information): 30 credits per call
- Cost (Bulk company enrichment): 30 credits per record
- Cost (Company job postings): 30 credits per call
- Cost (Company news search): 30 credits per call

## More

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

## Capabilities

- [Person search](https://firecrawl.dev/alexandria/agents/providers/apollo/people/search): Preview records: first name, a masked surname, title, company, and flags for whether an email or phone exists. Each carries an Apollo id, which is what people/match takes.
- [Person match](https://firecrawl.dev/alexandria/agents/providers/apollo/people/match): One resolved person: identity, title, employment history and contact details. A miss returns no person and is not billed.
- [Complete person information](https://firecrawl.dev/alexandria/agents/providers/apollo/people/info): Person details. An unrevealed email can be the literal email_not_unlocked@domain.com; treat it as unavailable, even if email_status is verified.
- [Bulk people enrichment](https://firecrawl.dev/alexandria/agents/providers/apollo/people/bulk-match): Matched people with null entries for misses. The envelope preserves total_requested_enrichments, unique_enriched_records, missing_records and upstream credits_consumed. Synchronous results only; phone and waterfall enrichment are excluded.
- [Company enrichment](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/enrich): One company: firmographics, funding, headcount, industry and the technologies it runs. A miss is not billed.
- [Company search](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/search): Companies matching the shape asked for, one page at a time.
- [Complete company information](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/info): Complete organization details by Apollo ID.
- [Bulk company enrichment](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/bulk-enrich): Enriched companies; envelope retains requested, unique and missing record counts. Optional fields and unmatched records may be null.
- [Company job postings](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/job-postings): Current company job postings. Location fields may be null.
- [Company news search](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/news): Company news articles with pagination metadata retained in the response envelope.

## 1. Choose this provider when

Finding a person and then resolving them. Search returns obfuscated previews - a first name, a masked surname, whether an email exists - and costs nothing; matching one of those previews is what reveals the record and what is billed. Search first, match only the people you actually need.

Companies as Apollo holds them: firmographics, funding, headcount and technologies. Enrichment resolves one company from a domain; search finds companies matching a shape. A domain is the reliable key here, not a name.

## 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": "apollo",
  "capability": "people/search",
  "options": {
    "q_keywords": "<q_keywords>",
    "page": 1,
    "per_page": 25
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `person_titles` (string[]): Job titles to match, for example "VP of Sales". Several titles widen the net. Example: `[]`
- `q_keywords` (string): Free text matched across the person and their company. Example: `<q_keywords>`
- `q_organization_domains_list` (string[]): Company domains to restrict to, for example firecrawl.dev. Example: `[]`
- `person_locations` (string[]): Locations to restrict to, for example "San Francisco, US". Example: `[]`
- `page` (number): Page of results, from 1. Example: `1`
- `per_page` (number): Results per page, maximum 100. Example: `25`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "apollo",
    capability: "people/search",
    options: {
      q_keywords: "<q_keywords>",
      page: 1,
      per_page: 25,
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "apollo",
  "capability": "people/search",
  "options": {
    "q_keywords": "<q_keywords>",
    "page": 1,
    "per_page": 25
  }
})
```

### cURL

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

### CLI

```sh
firecrawl scrape 'apollo/people/search' \
  --options '{"q_keywords":"<q_keywords>","page":1,"per_page":25}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "apollo",
  "capability": "people/search",
  "options": {
    "q_keywords": "<q_keywords>",
    "page": 1,
    "per_page": 25
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "apollo",
  "capability": "people/search",
  "options": {
    "q_keywords": "<q_keywords>",
    "page": 1,
    "per_page": 25
  }
}
```

## 6. Response data

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

```json
{
  "people": [
    {
      "id": "<id>",
      "first_name": "<first_name>",
      "last_name": "<last_name>",
      "title": "<title>",
      "organization": {},
      "has_email": false
    }
  ]
}
```

## API reference-derived contract

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

### Person search

- Capability: `people/search`
- Description: Preview records: first name, a masked surname, title, company, and flags for whether an email or phone exists. Each carries an Apollo id, which is what people/match takes.
- Instructions: Always start here. It is free and it tells you who exists before anything is spent. Never match a list of guesses: search, read the previews, then match only the people worth revealing.
- Cost: 0 credits per call
- Capability file: [Person search](https://firecrawl.dev/alexandria/agents/providers/apollo/people/search)

Accepted options:
- `person_titles` (string[]): Job titles to match, for example "VP of Sales". Several titles widen the net. Example: `[]`
- `q_keywords` (string): Free text matched across the person and their company. Example: `<q_keywords>`
- `q_organization_domains_list` (string[]): Company domains to restrict to, for example firecrawl.dev. Example: `[]`
- `person_locations` (string[]): Locations to restrict to, for example "San Francisco, US". Example: `[]`
- `page` (number): Page of results, from 1. Example: `1`
- `per_page` (number): Results per page, maximum 100. Example: `25`

Response schema example:
```json
{
  "people": [
    {
      "id": "<id>",
      "first_name": "<first_name>",
      "last_name": "<last_name>",
      "title": "<title>",
      "organization": {},
      "has_email": false
    }
  ]
}
```

### Person match

- Capability: `people/match`
- Description: One resolved person: identity, title, employment history and contact details. A miss returns no person and is not billed.
- Instructions: Use to resolve one person you have already found. Prefer the id from people/search, then a LinkedIn URL, then email; a bare name needs a domain beside it or it will match the wrong person.
- Cost: 30 credits per matched person
- Capability file: [Person match](https://firecrawl.dev/alexandria/agents/providers/apollo/people/match)

Accepted options:
- `id` (string): Apollo person id from people/search. The most reliable input by far. Example: `<id>`
- `linkedin_url` (string): LinkedIn profile URL. Resolves even when the slug is stale. Example: `<linkedin_url>`
- `email` (string): Known email address. Example: `<email>`
- `name` (string): Full name, used with a company domain. Example: `<name>`
- `domain` (string): Company domain, used with a name to disambiguate. Example: `<domain>`
- `reveal_personal_emails` (boolean): Reveal a personal email as well as the work one. Bills extra and is a different consent question: ask for it only when the caller asked for it. Example: `false`
- `reveal_phone_number` (boolean): Reveal a phone number. Substantially more expensive than the base match. Example: `false`

Response schema example:
```json
{
  "person": {
    "id": "<id>",
    "name": "<name>",
    "title": "<title>",
    "email": "<email>",
    "linkedin_url": "<linkedin_url>",
    "organization": {},
    "employment_history": []
  }
}
```

### Complete person information

- Capability: `people/info`
- Description: Person details. An unrevealed email can be the literal email_not_unlocked@domain.com; treat it as unavailable, even if email_status is verified.
- Instructions: Retrieve a known Apollo person by ID. Use people/match to unlock contact information.
- Cost: 30 credits per call
- Capability file: [Complete person information](https://firecrawl.dev/alexandria/agents/providers/apollo/people/info)

Accepted options:
- `id` (string, required): Apollo person ID from people/search. Example: `<id>`

Response schema example:
```json
{
  "person": {
    "id": "<id>",
    "name": "<name>",
    "title": "<title>",
    "linkedin_url": "<linkedin_url>",
    "email": "<email>",
    "email_status": "<email_status>",
    "employment_history": [],
    "organization": {}
  }
}
```

### Bulk people enrichment

- Capability: `people/bulk-match`
- Description: Matched people with null entries for misses. The envelope preserves total_requested_enrichments, unique_enriched_records, missing_records and upstream credits_consumed. Synchronous results only; phone and waterfall enrichment are excluded.
- Instructions: Enrich up to ten identified people in one call, billed 30 Firecrawl credits per matched person; unmatched records are free.
- Cost: 30 credits per record
- Capability file: [Bulk people enrichment](https://firecrawl.dev/alexandria/agents/providers/apollo/people/bulk-match)

Accepted options:
- `details` (object[], required): Up to 10 people. Each object accepts id, first_name, last_name, name, email, hashed_email, organization_name, domain, linkedin_url. Prefer IDs from people/search. Example: `[]`
- `reveal_personal_emails` (boolean): Request personal emails for all matches only when explicitly wanted. Defaults to false. Example: `false`

Response schema example:
```json
{
  "matches": [
    {
      "id": "<id>",
      "name": "<name>",
      "title": "<title>",
      "linkedin_url": "<linkedin_url>",
      "email": "<email>",
      "email_status": "<email_status>",
      "employment_history": [],
      "organization": {},
      "match_confidence": "<match_confidence>"
    }
  ]
}
```

### Company enrichment

- Capability: `companies/enrich`
- Description: One company: firmographics, funding, headcount, industry and the technologies it runs. A miss is not billed.
- Instructions: Use when you have a domain or LinkedIn company URL and need the company behind it. For a company you can only name, search first.
- Cost: 30 credits per call
- Capability file: [Company enrichment](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/enrich)

Accepted options:
- `domain` (string): Company domain, for example firecrawl.dev. The reliable key: names collide. Example: `<domain>`
- `linkedin_url` (string): LinkedIn company page, for example https://www.linkedin.com/company/apolloio. Example: `<linkedin_url>`

Response schema example:
```json
{
  "organization": {
    "id": "<id>",
    "name": "<name>",
    "website_url": "<website_url>",
    "estimated_num_employees": 0,
    "industry": "<industry>",
    "total_funding": 0,
    "latest_funding_stage": "<latest_funding_stage>",
    "technology_names": []
  }
}
```

### Company search

- Capability: `companies/search`
- Description: Companies matching the shape asked for, one page at a time.
- Instructions: Use to build a list from a shape: size, location, industry, technology. It bills per page, so ask for the page size you need rather than paging through the whole market.
- Cost: 30 credits per call
- Capability file: [Company search](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/search)

Accepted options:
- `q_organization_name` (string): Free text matched against company names and descriptions. Example: `<q_organization_name>`
- `organization_num_employees_ranges` (string[]): Employee-count bands, for example ["1,10", "11,50"]. Example: `[]`
- `organization_locations` (string[]): Locations to restrict to, for example "San Francisco, US". Example: `[]`
- `currently_using_any_of_technology_uids` (string[]): Technologies the company must use, for example ["Stripe"]. Example: `[]`
- `page` (number): Page of results, from 1. Example: `1`
- `per_page` (number): Results per page, maximum 100. Example: `25`

Response schema example:
```json
{
  "organizations": [
    {
      "id": "<id>",
      "name": "<name>",
      "primary_domain": "<primary_domain>",
      "estimated_num_employees": 0,
      "industry": "<industry>"
    }
  ]
}
```

### Complete company information

- Capability: `companies/info`
- Description: Complete organization details by Apollo ID.
- Instructions: Look up a company by its Apollo ID; use companies/enrich when you have a domain instead.
- Cost: 30 credits per call
- Capability file: [Complete company information](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/info)

Accepted options:
- `id` (string, required): Apollo organization ID from companies/search or companies/enrich. Example: `<id>`

Response schema example:
```json
{
  "organization": {
    "id": "<id>",
    "name": "<name>",
    "primary_domain": "<primary_domain>",
    "website_url": "<website_url>",
    "industry": "<industry>",
    "estimated_num_employees": 0,
    "annual_revenue": 0,
    "technology_names": [],
    "funding_events": []
  }
}
```

### Bulk company enrichment

- Capability: `companies/bulk-enrich`
- Description: Enriched companies; envelope retains requested, unique and missing record counts. Optional fields and unmatched records may be null.
- Instructions: Enrich up to ten companies in one call, billed 30 Firecrawl credits per matched company; unmatched records are free.
- Cost: 30 credits per record
- Capability file: [Bulk company enrichment](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/bulk-enrich)

Accepted options:
- `domains[]` (string[]): Up to ten company domains, without www. Use details for other identifiers. Example: `[]`
- `details` (object[]): Up to ten objects with domain, linkedin_url, name and/or website. Takes precedence over domains[] if both are supplied. Example: `[]`

Response schema example:
```json
{
  "organizations": [
    {
      "id": "<id>",
      "name": "<name>",
      "primary_domain": "<primary_domain>",
      "website_url": "<website_url>",
      "industry": "<industry>",
      "estimated_num_employees": 0,
      "annual_revenue": 0,
      "technology_names": [],
      "funding_events": []
    }
  ]
}
```

### Company job postings

- Capability: `companies/job-postings`
- Description: Current company job postings. Location fields may be null.
- Instructions: Find current hiring activity at a known company. Each requested page costs 30 Firecrawl credits.
- Cost: 30 credits per call
- Capability file: [Company job postings](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/job-postings)

Accepted options:
- `organization_id` (string, required): Apollo organization ID from companies/search or companies/enrich. Example: `<organization_id>`
- `page` (number): Page number starting at 1. Example: `1`
- `per_page` (number): Results per page; Apollo limits this endpoint to 10,000 records. Example: `10`

Response schema example:
```json
{
  "organization_job_postings": [
    {
      "id": "<id>",
      "title": "<title>",
      "url": "<url>",
      "city": "<city>",
      "state": "<state>",
      "country": "<country>",
      "posted_at": "<posted_at>",
      "last_seen_at": "<last_seen_at>"
    }
  ]
}
```

### Company news search

- Capability: `companies/news`
- Description: Company news articles with pagination metadata retained in the response envelope.
- Instructions: Find news about known Apollo companies, optionally filtered by category and dates. Each requested page costs 30 Firecrawl credits.
- Cost: 30 credits per call
- Capability file: [Company news search](https://firecrawl.dev/alexandria/agents/providers/apollo/companies/news)

Accepted options:
- `organization_ids[]` (string[], required): Apollo organization IDs to find news about. Example: `[]`
- `categories[]` (string[]): News categories, such as hires, investment or contract. Example: `[]`
- `published_at[min]` (string): Earliest publication date, YYYY-MM-DD. Example: `<published_at[min]>`
- `published_at[max]` (string): Latest publication date, YYYY-MM-DD; must follow the earliest date. Example: `<published_at[max]>`
- `page` (number): Page number starting at 1. Example: `1`
- `per_page` (number): Articles per page, maximum 25. Example: `10`

Response schema example:
```json
{
  "news_articles": [
    {
      "id": "<id>",
      "url": "<url>",
      "domain": "<domain>",
      "title": "<title>",
      "snippet": "<snippet>",
      "organization_ids": [],
      "published_at": "<published_at>",
      "event_categories": []
    }
  ]
}
```
