How to enrich your CRM with Linkup
Automate company and contact research to populate your CRM with firmographic data, funding history, key personnel, and more.
In This Guide
Overview
CRM enrichment is one of the most impactful applications of Linkup's agentic search. Instead of manually researching companies and contacts, you can automate the process of gathering firmographic data, funding history, key personnel, and more - directly into structured formats ready for your CRM.
Why Linkup for CRM enrichment?
structuredOutputReturns data in JSON schemas that map directly to your CRM fields
deep searchGathers comprehensive company profiles in a single API call
agentic retrievalFinds data across websites, LinkedIn, news, and databases
Configuration
Recommended settings for CRM enrichment
| Parameter | Value | Why |
|---|---|---|
depth | deep | Company research requires multiple retrieval steps |
outputType | structuredOutput | Returns data in your exact CRM schema |
Use Cases
Practical examples with prompts and schemas
Company Enrichment
Enrich company records with firmographic data, funding information, and business descriptions.
You are an expert B2B data researcher. Your task is to gather comprehensive company information for CRM enrichment.
Target company: {company_name}
Domain: {company_domain}
Execute the following steps:
1. First, scrape the company's website ({company_domain}) to extract:
- Company description and value proposition
- Products/services offered
- Any visible client logos or case studies
2. Search for the company's LinkedIn profile and extract:
- Employee count
- Headquarters location
- Industry classification
- Founded year
3. Search for recent funding announcements or press releases about {company_name} to find:
- Latest funding round and amount
- Key investors
- Recent news or milestones
4. Search for the company's leadership team to identify:
- CEO/Founder name
- Other C-level executives
Do not stop until you have attempted all four steps. Return only factual data found—do not infer or estimate.Contact Enrichment
Enrich individual contact records with professional background and current role information.
You are an expert professional researcher. Your task is to gather information about a business contact for CRM enrichment.
Contact: {contact_name}
Company: {company_name}
Execute the following steps:
1. Search for {contact_name} working at {company_name} on LinkedIn to find:
- Current job title
- Professional summary
- Time in current role
2. Search for any public speaking engagements, podcast appearances, or articles authored by {contact_name} to understand their areas of expertise.
3. Search for {contact_name} in recent news or press releases related to {company_name}.
Return only verified, publicly available information. Do not fabricate or assume details.Lead Scoring Data
Gather signals that help prioritize leads based on buying intent, company health, and fit.
You are a B2B sales intelligence analyst. Your task is to gather data points that indicate buying readiness and company health for our sales lead scoring team.
Company: {company_name}
Domain: {company_domain}
Search for and compile the following signals:
1. Recent hiring activity: Search for job postings from {company_name} on their careers page, job boards, or LinkedIn. Note roles being hired.
2. Funding and growth signals: Search for recent funding rounds, revenue milestones, or expansion announcements.
3. Technology signals: Scrape {company_domain} to identify technologies in use (look for integrations mentioned, tech stack references, or tools listed).
4. Trigger events: Search for recent news about {company_name} including new product launches, leadership changes, or strategic initiatives.
Focus on factual signals only. Do not generate scores—return the raw data points.Best Practices
Tips for getting the best results
Do's
- 1Use deep search for comprehensive company profiles
- 2Be explicit about the sequence of searches
- 3Specify exact fields you need
- 4Include the domain when available
- 5Use structuredOutput with a matching schema
Don'ts
- 1Don't use vague prompts - be specific
- 2Don't ask for inferences - request factual data
- 3Don't skip the schema - you'll get unstructured text
Integration Patterns
How to integrate enrichment into your workflow
Batch Enrichment
For enriching many records at once
- Queue company/contact records that need enrichment
- Call Linkup API for each record with structuredOutput
- Map returned JSON directly to CRM fields
- Flag records where key fields returned null
Real-Time Enrichment
For enriching new leads as they arrive
- Trigger Linkup API call when a new lead is created
- Use standard depth for quick enrichment
- Optionally trigger deep search asynchronously
- Update CRM record as data returns
Periodic Refresh
For keeping existing records current
- Schedule enrichment runs for stale records
- Use date filters to find only recent changes
- Compare new data and flag changes for review
Sample Code
Python example for company enrichment
import requests
import json
def enrich_company(company_name: str, domain: str, api_key: str) -> dict:
prompt = f"""
You are an expert B2B data researcher. Gather comprehensive company information.
Target company: {company_name}
Domain: {domain}
1. Scrape {domain} for company description, products, and visible clients.
2. Find LinkedIn profile for employee count, HQ location, industry, founded year.
3. Search for recent funding announcements about {company_name}.
4. Find CEO and key leadership names.
Return only factual data found.
"""
schema = {
"type": "object",
"properties": {
"company_name": {"type": "string"},
"description": {"type": "string"},
"industry": {"type": "string"},
"employee_count": {"type": "string"},
"headquarters": {"type": "string"},
"founded_year": {"type": "integer"},
"latest_funding": {"type": "string"},
"ceo_name": {"type": "string"},
"known_clients": {"type": "array", "items": {"type": "string"}}
}
}
response = requests.post(
"https://api.linkup.so/v1/search",
headers={"Authorization": f"Bearer {api_key}"},
json={
"q": prompt,
"depth": "deep",
"output_type": "structured",
"structuredOutputSchema": json.dumps(schema)
}
)
return response.json()