Appearance
Lead Enrichment
Updated Feb 2026Extract and filter leads from websites to enrich your sales pipeline. Firecrawl automates the manual research that sales teams spend hours on -- pulling company details, contact information, tech stack signals, and growth indicators directly from live websites.
Why Firecrawl for Lead Enrichment
Third-party lead databases go stale fast. Company descriptions change, teams grow, products launch, and pricing shifts -- but your CRM still has last quarter's data. Firecrawl extracts information directly from company websites in real time, giving your sales team current, accurate enrichment data.
What You Can Extract
| Data Category | Examples |
|---|---|
| Company Details | Name, industry, size, location, founding year |
| Contact Info | Publicly listed emails, phone numbers, social profiles |
| Tech Signals | Stack indicators, integrations, API documentation |
| Growth Signals | Job postings, press releases, funding announcements |
| Product Info | Offerings, pricing tiers, target markets |
| Social Proof | Customer logos, case studies, testimonials |
How It Works
Firecrawl Features Used
| Feature | Role in Lead Enrichment |
|---|---|
| Scrape | Extract structured data from individual company websites |
| Crawl | Ingest entire company sites for comprehensive enrichment |
| Map | Discover all pages on a prospect's site before targeted extraction |
| Search | Find companies in specific industries or with certain characteristics |
| Agent | Navigate complex directory listings and multi-step workflows |
Enriching CRM Records
Extract Company Data from Websites
python
from firecrawl import Firecrawl
app = Firecrawl(api_key="fc-YOUR_API_KEY")
# Enrich a lead with data from their company website
result = app.scrape(
url="https://prospect-company.com",
params={
"formats": ["json"],
"jsonOptions": {
"schema": {
"type": "object",
"properties": {
"company_name": {"type": "string"},
"tagline": {"type": "string"},
"industry": {"type": "string"},
"headquarters": {"type": "string"},
"employee_count_estimate": {"type": "string"},
"products_or_services": {
"type": "array",
"items": {"type": "string"}
},
"target_audience": {"type": "string"},
"key_differentiators": {
"type": "array",
"items": {"type": "string"}
},
"contact_email": {"type": "string"},
"phone": {"type": "string"},
"social_links": {
"type": "object",
"properties": {
"linkedin": {"type": "string"},
"twitter": {"type": "string"},
"facebook": {"type": "string"}
}
}
}
}
}
}
)
enrichment_data = result["json"]
print(enrichment_data)Batch Enrich Multiple Leads
python
# Process a list of prospect URLs
prospect_urls = [
"https://company-a.com",
"https://company-b.com",
"https://company-c.com",
# ... potentially hundreds of URLs
]
enrichment_schema = {
"type": "object",
"properties": {
"company_name": {"type": "string"},
"industry": {"type": "string"},
"products": {"type": "array", "items": {"type": "string"}},
"employee_count": {"type": "string"},
"recent_news": {"type": "string"},
"tech_indicators": {"type": "array", "items": {"type": "string"}}
}
}
# Batch scrape for efficient processing
batch_result = app.batch_scrape(
urls=prospect_urls,
params={
"formats": ["json"],
"jsonOptions": {"schema": enrichment_schema}
}
)
for page in batch_result["data"]:
url = page["metadata"]["url"]
data = page["json"]
print(f"{data['company_name']} ({url})")
print(f" Industry: {data['industry']}")
print(f" Products: {', '.join(data['products'])}")
print("---")Directory Scraping for Lead Discovery
Transform business directories into prospecting lists:
python
# Scrape a business directory page for leads
directory_result = app.scrape(
url="https://directory.example.com/software-companies",
params={
"formats": ["json"],
"jsonOptions": {
"schema": {
"type": "object",
"properties": {
"companies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"website": {"type": "string"},
"description": {"type": "string"},
"location": {"type": "string"},
"category": {"type": "string"}
}
}
}
}
}
}
}
)
# Extract leads from directory
leads = directory_result["json"]["companies"]
print(f"Discovered {len(leads)} leads from directory")Source Directories
Firecrawl can extract leads from:
- Industry-specific business directories
- Chamber of commerce member listings
- Trade association directories
- Conference attendee and speaker lists
- Award winner lists and industry rankings
- Local business directories and review sites
Team and Contact Extraction
Pull team information from company about pages:
python
# Extract team data for targeted outreach
team_result = app.scrape(
url="https://prospect.com/about",
params={
"formats": ["json"],
"jsonOptions": {
"schema": {
"type": "object",
"properties": {
"leadership_team": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"title": {"type": "string"},
"bio_summary": {"type": "string"},
"linkedin_url": {"type": "string"}
}
}
},
"company_values": {
"type": "array",
"items": {"type": "string"}
},
"founded_year": {"type": "string"},
"mission_statement": {"type": "string"}
}
}
}
}
)Growth Signal Detection
Use job postings and news as growth indicators:
python
# Check for growth signals via career pages
careers = app.scrape(
url="https://prospect.com/careers",
params={
"formats": ["json"],
"jsonOptions": {
"schema": {
"type": "object",
"properties": {
"total_openings": {"type": "number"},
"departments_hiring": {
"type": "array",
"items": {"type": "string"}
},
"locations_hiring": {
"type": "array",
"items": {"type": "string"}
}
}
}
}
}
)
# High open positions = growing company = potential buyer
growth_score = careers["json"].get("total_openings", 0)
if growth_score > 10:
print("HIGH GROWTH SIGNAL - prioritize this lead")CRM Integration
Push enriched data to your CRM:
python
import requests
def enrich_and_update_crm(prospect_url, crm_record_id):
"""Enrich a CRM record with live website data."""
# Extract from prospect website
result = app.scrape(
url=prospect_url,
params={
"formats": ["json"],
"jsonOptions": {
"schema": {
"type": "object",
"properties": {
"company_name": {"type": "string"},
"industry": {"type": "string"},
"employee_count": {"type": "string"},
"products": {"type": "array", "items": {"type": "string"}}
}
}
}
}
)
enrichment = result["json"]
# Update CRM (example: HubSpot)
requests.patch(
f"https://api.hubapi.com/crm/v3/objects/companies/{crm_record_id}",
headers={"Authorization": "Bearer YOUR_HUBSPOT_KEY"},
json={
"properties": {
"industry": enrichment["industry"],
"numberofemployees": enrichment["employee_count"],
"description": f"Products: {', '.join(enrichment['products'])}"
}
}
)Customer Stories
Zapier
Zapier uses Firecrawl for custom knowledge extraction in chatbots, enriching their automated workflows with live web data.
Cargo
Cargo leverages Firecrawl to analyze webpage content and power Go-To-Market workflows. Their platform uses extracted company data to score and prioritize leads.
Quick Start: Fire Enrich Template
The Fire Enrich template on GitHub provides an AI-powered lead enrichment pipeline. Clone it, add your API key, and start enriching prospect data immediately.
Best Practices
- Extract from primary sources -- Company websites provide more accurate data than third-party databases
- Use JSON schemas -- Define consistent extraction schemas for standardized CRM fields
- Batch for efficiency -- Use batch scrape when enriching large lead lists
- Check multiple pages -- Do not rely on the homepage alone; extract from about, team, careers, and product pages
- Track freshness -- Record extraction timestamps so you know when to re-enrich
- Respect privacy -- Only extract publicly available information; comply with applicable data regulations
- Prioritize signals -- Use growth indicators (hiring, funding, product launches) to score and prioritize leads
Related Use Cases
- Content Generation -- Generate personalized outreach content using enriched data
- Competitive Intelligence -- Monitor competitors alongside prospects
- Investment & Finance -- Apply enrichment techniques to investment research