Company Enrichment – Why It's a Two-Step Process and How to Use It
In this article, we’ll walk through how asynchronous split requests work, why Surfe uses them, and how you can work with them confidently.
Company Enrichment is one of the core tools available in Surfe’s API. If you're enriching company data at scale, you might wonder:
“Why does the enrichment happen in two steps?”
Let’s break it down in simple terms, no technical background needed.
Why Two Steps?
To keep things fast and scalable, Surfe’s Company Enrichment API operates asynchronously. This means:
Start an Enrichment: You send a list of company domains.
Check for Results: You get a unique ID to check back later for results.
Why is this helpful? When the system enriches data, it gathers information from various sources. That can take a few seconds, especially when you're enriching multiple companies. Instead of making you wait, we return an enrichmentID right away. You then check back using this ID to get your results once they’re ready.
The API Endpoints you’ll need (bulk or single, it’s the same logic):
Step-by-Step Guide
1. Start Your Company Enrichment Request
Send a POST request to the Start Company Enrichment endpoint.
You can include up to 500 companies per request in the companies array.
Here’s an example request (feel free to copy and use):
curl --location 'https://api.surfe.com/v2/companies/enrich' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"companies": [
{
"domain": "surfe.com",
"externalID": "external-id"
}
],
"notificationOptions": {
"webhookUrl": ""
}
}
Replace YOUR_API_TOKEN with your API key.
Example Response:
{
"message": "Your enrichment has started ✨, estimated time: 1s.",
"enrichmentID": "019841ef-c288-76ab-9311-41392ea079ad",
"enrichmentCallbackURL": "https://api.surfe.com/v2/companies/enrich/019841ef-c288-76ab-9311-41392ea079ad"
}
This tells you that your enrichment is in progress. The enrichmentID is what you’ll use in the next step to check for your results.
2. Check for Results
We have two options to retrieve the results, manually or through webhook notifications.
Use the enrichmentID from the response above to get the final enriched data. You’ll do this using the Get Enrichment Results endpoint.
Example Request:
curl --location 'https://api.surfe.com/v2/companies/enrich/019841ef-c288-76ab-9311-41392ea079ad' \
--header 'Authorization: Bearer YOUR_API_TOKEN
While Processing:
If the enrichment is still in progress, you’ll see something like:
{
"companies": [],
"percentCompleted": 50,
"status": "IN_PROGRESS"
}
You can retry the same request after a few seconds.
Once Completed:
When the enrichment is ready, the status will be COMPLETED, and you’ll receive a full breakdown of each company:
{
"status": "COMPLETED",
"percentCompleted": 100,
"companies": [
{
"externalID": "external-id",
"name": "Surfe",
"description": "Sales teams waste too much time on repetitive admin tasks. Surfe handles everything before the phone call - identifying target accounts, building lead lists, and enriching data.",
"linkedInURL": "https://linkedin.com/company/surfe",
"websites": ["surfe.com"],
"founded": "2020",
"revenue": "10-50M",
"employeeCount": 65,
"industry": "IT Services",
"subIndustry": "Internet Services & Infrastructure",
"isPublic": false,
"followersCountLinkedin": 8896,
"hqCountry": "FR",
"hqAddress": "52 Rue Chaussée D'antin Paris FR 75009",
"keywords": [
"crm updates",
"linkedin sales",
"waterfall enrichment",
"sales automation"
],
"digitalPresence": [
{
"name": "LinkedIn",
"url": "https://www.linkedin.com/company/surfe"
}
],
"fundingRounds": [
{
"name": "Seed Round - Surfe",
"amount": 9999999,
"amountCurrency": "$",
"announcedDate": "2021-01-01",
"leadInvestors": ["Investor A", "Investor B"]
}
],
"status": "COMPLETED"
}
]
}You’ll now have enriched data like:
Company name and description
Website and LinkedIn URL
Industry and sub-industry
Revenue and headcount
HQ address
Digital presence
Funding history
Whether the company is publicly listed
LinkedIn follower count
Keywords associated with the company
Everything you need to supercharge your CRM or sales stack.
We recommend using Webhooks instead of polling for results. Check out the article here: Webhook Notifications
Summary
Initiate: Send your list of company domains.
Wait: You’ll receive an
enrichmentIDinstantly.Retrieve: Use the
enrichmentIDto get your enriched data when it's ready.
If you're enriching multiple companies at once, just include more entries in the companies array — up to 500 per request. Surfe handles the rest.
Need Help?
If you have any questions or need further assistance, feel free to reach out to our support team via Intercom.
