Build a Lead List With Agents in Claude Code Using Firecrawl Alexandria

Build a lead list with agents in Claude Code: free Apollo search through Firecrawl Alexandria, a qualify task, paid enrichment for survivors, and human review.

Aiden Flux

Aiden Flux

3 November 2026

Build a Lead List With Agents in Claude Code Using Firecrawl Alexandria

TL;DR: To build a lead list with agents in Claude Code, split the job into four board tasks: a free Apollo people search through Firecrawl Alexandria, a qualify pass on the fields that search already returned, a paid People Data Labs enrichment for survivors only, and a human review before any outreach. One Firecrawl key covers every provider, and each task reports what it spent.

You can build a lead list with agents in one long Claude Code session. You ask for “VPs of Engineering at these ten companies, with work emails,” and the agent searches, enriches, and hands back a CSV. The trouble starts on the invoice: the agent paid to enrich people you’d have dropped on title alone.

Firecrawl Alexandria makes the cheap-first order easy to enforce. It puts hundreds of data providers behind one Firecrawl API key, and its own rule is that discovery is free while execution costs the credits listed on each tool. This post lays that pipeline out as tasks on Sharkly, with Claude Code or Codex as the runtime, and shows the credit cost of each stage.

What Firecrawl Alexandria gives a lead-list agent

Firecrawl Alexandria is a library of data providers an agent can call through one Firecrawl key. The Alexandria page lists 430 providers and 2,461 capabilities. An agent discovers a tool for free, reads its inputs and price, then runs it through the same scrape endpoint it uses for web pages.

For lead lists, the People category is the one that matters. It holds 12 providers, including Apollo, People Data Labs, FullEnrich, and Data Legion for enrichment, plus public sources such as sanctions lists and the NPI Registry. This post uses two of them:

Provider Capability Listed price Job in the pipeline
Apollo people/search 0 credits Find people by title at your target domains
People Data Labs person/enrich 60 credits per call Fill in profile fields for qualified people only

Apollo’s own page on Alexandria lists a built-in skill called “Search-first prospect list.” Its description is the whole strategy in one line: search for free first, reveal only the people worth paying for, then find verified work emails in cost order. The board below turns that line into four tasks with owners.

Why a lead list needs stages, not one prompt

A single session hides the decision that drives cost: who gets dropped before the paid call. Firecrawl prices make the gap concrete.

Say Apollo returns 40 people across your ten domains. Enriching all of them at 60 credits each costs 2,400 credits, more than double the Free plan’s 1,000 monthly credits. If a qualify pass on titles keeps 12, enrichment costs 720 credits and fits inside the Free plan.

That drop rule is a business call. Someone decides whether “Head of Platform” counts as a buyer. When it’s buried in a prompt, nobody reviews it. When it’s a task with an Assignee, it has an owner, a status, and a record of what changed.

How to build a lead list with agents: the four tasks

Here is the pipeline as board tasks. Link them with blocks / is blocked by so each stage waits for the one before it.

Task Assignee Firecrawl cost Done when
1. ICP to Apollo filters + people search Agent 0 credits People list saved, row count posted
2. Qualify on returned fields Agent 0 credits Survivors and drop reasons posted
3. Enrich survivors on People Data Labs Agent 60 credits per call Enriched rows posted, credits spent reported
4. Review before outreach Person 0 credits List approved, edited, or sent back
Pipeline diagram: four lead-list stages as board tasks, with free Apollo search, a qualify step, paid People Data Labs enrichment, and a human review gate before outreach

The first task turns your ideal customer profile into Apollo’s search inputs. The capability takes person_titles, q_keywords, q_organization_domains_list, page, and per_page, with a maximum of 100 results per page. Apollo’s playground shows this call at 0 credits.

Discovery is free too. If the agent doesn’t know which tool to use, it asks Alexandria with sources: ["alexandria"]. Firecrawl’s docs note that adding "web" to the sources also returns paid web results, so keep discovery tools-only.

# Free tool discovery: tools only, no paid web results
curl https://api.firecrawl.dev/v2/search \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "find people by job title at a company", "sources": ["alexandria"], "limit": 3}'

# Apollo people search at the target domains (listed at 0 credits)
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": {
      "person_titles": ["VP of Engineering", "Head of Platform"],
      "q_organization_domains_list": ["example-one.com", "example-two.com"],
      "page": 1,
      "per_page": 100
    }
  }
}'

The result lands under alexandria[0].data. Firecrawl’s docs say to check each tool result for errors before using it, so make that part of the acceptance criteria: the task isn’t done until the agent posts the row count and any error it hit.

Step 2: Qualify on fields the search already returned

The qualify task costs nothing. It reads the search output and drops rows on the data already in hand: wrong title, wrong company, duplicate person. No new calls.

Put the drop rules where every agent reads them. A Sharkly Skill packages reusable instructions for Agent work, so the rules become one Skill bound to every lead-list agent, as described in Skills in Sharkly.

# lead-rules.md (owner: the person who approves the send)
keep_titles: ["VP of Engineering", "Head of Platform", "Director of Engineering"]
drop_if: [title_not_in_keep_titles, company_domain_not_in_list, duplicate_person]
max_enrich_calls_per_run: 15
pdl_min_likelihood: 6
every_task_reports: [rows_in, rows_out, credits_spent, errors]

Step 3: Enrich only the survivors

This is the paid stage. People Data Labs person/enrich is listed at 60 credits per call. It accepts a pdl_id, an email, or an email_hash as sufficient inputs, plus 18 more optional fields. Have the agent read the full input contract with findTools before it maps search fields to enrich inputs.

The cheapest setting is min_likelihood. It runs from 1 to 10 and defaults to 2, where Firecrawl says a match is only 10 to 30% likely to be the right person. Raising it turns a weak match into a 404, and the provider page is direct about why that helps: “a 404 is free here and a wrong record is not.”

// One enrich call per qualified person; client set up with $FIRECRAWL_API_KEY
const result = await firecrawl.scrape({
  alexandria: {
    provider: "people-data-labs",
    capability: "person/enrich",
    options: {
      email: person.email,      // or pdl_id / email_hash
      min_likelihood: 6,        // weak matches 404 instead of billing a wrong record
      titlecase: true,
    },
  },
});
const record = result.alexandria[0];
if (record.error) report.errors.push(record.error);

People Data Labs also carries a quota through Alexandria: 50,000 API calls per year per customer organization, shared across person and company endpoints. Retries count, and it resets on 1 January UTC. That’s one more reason to cap enrich calls per run in the rules file.

If a call fails with THIRD_PARTY_DATA_TERMS_REQUIRED, the response includes a requiresAction.url. An org admin has to accept the provider’s terms there, and Firecrawl’s docs say agents need explicit user authorization before accepting terms. Treat it as a hand-off: the agent leaves the task waiting for a human reply.

Step 4: A person reviews before outreach

The last task belongs to a person. The agent attaches the enriched list and leaves the task waiting for human review. The reviewer checks a sample against public profiles, removes anyone who shouldn’t be contacted, and approves.

This is the same gate we describe in human-in-the-loop coding agents. The list is data; contacting someone is a decision a person signs.

The credit receipt per stage

With 10 target domains, 40 people found, and 12 qualified, the listed prices give this receipt.

Stage Calls Credits
Tool discovery 1 0
Apollo people/search 1 0
Qualify 0 0
People Data Labs person/enrich 12 720
Total 14 720

Converting credits to dollars depends on the plan, so do the math instead of rounding it away. On Firecrawl pricing, billed monthly, Hobby is $19 for 5,000 credits, which is $0.0038 a credit, so 720 credits is about $2.74 of plan credit. Standard is $99 for 100,000 credits, or $0.00099 a credit, so the same run is about $0.71. The Free plan’s 1,000 credits a month covers it at $0.

Without the qualify task, the same run is 2,400 credits: about $9.12 on Hobby, and more than the Free plan holds. The qualify task is the cheapest line on the receipt and saves the most.

How Sharkly keeps the pipeline honest

Claude Code or Codex does the calling. Sharkly holds the work around it.

  • Tasks with Assignees. Each stage has a status and an owner, whether that’s an Agent, a Crew, or a person.
  • The key stays out of task text. Set FIRECRAWL_API_KEY in the Agent’s Environment Variables, under Computer & Runtime, and it’s injected when the agent process starts. Sharkly labels these values plaintext settings visible to Agent managers, not secret storage, so use a key scoped to this job.
  • Review states. An Agent can leave a task waiting for a human reply or human review, and that lands in the responsible person’s Inbox.
  • The run record. Each run shows start and end, tool calls, and failure details, so the credit report has a trail behind it.
Sharkly Agent settings, Computer & Runtime panel: the Runtime, its default model, an Environment Variables table, and Custom Arguments

If you’d rather not create four tasks by hand, a Crew leader can split a parent task into the stages, as covered in Sharkly Crews. Sharkly is free to start, and model usage runs on the Claude Code or Codex plan attached to your Runtime.

Run it on a schedule, keep the review manual

Once the four tasks run clean for a week, put tasks 1 to 3 on an Automation so a new domain list triggers the free search and the capped enrichment. Task 4 stays manual. To watch several of these runs at once, see how to monitor coding agents running in parallel.

Start with the free stages

Build a lead list with agents the way the Apollo skill describes it: search free, qualify on what you already have, pay only for survivors, and put a person on the list before anyone is contacted. Start with tasks 1 and 2 in Sharkly. They cost 0 credits and tell you what the paid stage would spend.

FAQ

What is Firecrawl Alexandria?

A library of data providers that agents call through one Firecrawl API key. Discovery is free, and each tool lists its own credit price for execution. Firecrawl launched it on 22 September 2026.

Is Apollo people search free through Firecrawl?

Apollo’s people/search capability shows 0 credits in Firecrawl’s playground. Revealing contact details is a separate, paid step, so check that capability’s listed price before you run it.

How much does People Data Labs enrichment cost on Firecrawl?

person/enrich is listed at 60 credits per call. That’s about $0.23 on the Hobby plan and $0.06 on Standard, billed monthly. A 404 from a raised min_likelihood costs nothing.

Does this work with Codex instead of Claude Code?

Yes. Firecrawl ships a CLI, SDKs, and an MCP server with firecrawl_search, firecrawl_find_tools, and firecrawl_scrape, and a Sharkly Agent can run on either Runtime. The general setup is in AI task manager: assign, track, and review agent work.

Should an agent send outreach from the list on its own?

No. Keep the send behind a human review task. The agent’s job ends at a verified list and a credit report.

Explore more

How to use Fable 5.2 for free with your agent?

How to use Fable 5.2 for free with your agent?

Fable 5.2 for free with your agent? Check paid-plan launch eligibility, November 16 expiry, Claude Code setup, and usage-credit billing before you run.

10 November 2026

Why Goldman Sachs Is Pulling Claude Code (and What Teams Should Do Instead)

Why Goldman Sachs Is Pulling Claude Code (and What Teams Should Do Instead)

Goldman Sachs pulls Claude Code from most bankers and traders, keeping it for engineers. Why a license list is the weakest control, and six work-level controls teams can use instead.

10 November 2026

Claude Fable 5.2 vs. Opus 5.5: Which Coding Tasks Justify Switching?

Claude Fable 5.2 vs. Opus 5.5: Which Coding Tasks Justify Switching?

Claude Fable 5.2 vs. Opus 5.5: choose by coding task, distinguish vendor benchmarks from local evidence, and measure when switching pays.

10 November 2026

Build a Lead List With Agents in Claude Code Using Firecrawl Alexandria