Company Enrichment API Benchmark:
6 Providers Tested on 500 Domains

Company enrichment APIs often look similar on feature lists. But the real question is simple: if you send the same domains to different enrichment APIs, which providers actually return useful company data?

To answer that, we tested 6 domain-based company enrichment APIs using the same input dataset. We started with 500 random domains from the Majestic Million. After running a DNS resolution check, 349 domains resolved and were used as the main benchmark set.

This benchmark focuses on coverage and data depth. It is not a full manual accuracy audit.

Disclosure: The data analysis, canonical-field model, and write-up on this page were prepared by Claude Opus 4.7 (Anthropic) and fact-checked with OpenAI GPT-5.5. Every percentage is recomputed from the raw provider JSONL and generator script in the linked GitHub repository, so the numbers can be re-derived independently. CompanyEnrich is one of the six tested providers and wins several categories below — readers should weigh the page on the verifiable data, not on the publisher's identity.

Sample
500
After DNS cleanup
349
Providers
6
Measured
Coverage + Depth

Quick summary

The benchmark measured two things:

  1. Coverage — how many domains returned usable company data
  2. Data depth — how complete the returned company profiles were

The headline finding is that company enrichment APIs differ not only in whether they return a match, but also in what they return after a match. The most honest reading is use-case specific:

  • CompanyEnrich was strongest overall in this sample: highest find rate plus the highest average and median field depth.
  • Apollo was the closest broad runner-up, especially when technologies and funding signals matter.
  • People Data Labs was strongest for LinkedIn URL, employee count, company type, and Crunchbase-link coverage.
  • ContactOut was strongest for revenue and follower count, but its tested profile was narrower outside those areas.
  • Coresignal and Crustdata may still fit narrower workflows, but their all-request coverage was lower in this domain test.
Benchmark detailValue
Initial domains sampled500
DNS-resolved domains tested349
Providers tested6
Input typeDomain
Benchmark typeCompany enrichment coverage + data depth
Dataset sourceMajestic Million
Test dateApril 23, 2026
Benchmark repositoryGitHub

Methodology

1. Domain sampling

We randomly sampled 500 domains from the Majestic Million dataset.

The Majestic Million is a public list of highly ranked domains. Our script randomly selected 500 domains from that file.

Source datasetMajestic Million
Initial sample size500 domains
Sampling methodRandom selection
Scriptmaj.py

2. DNS cleanup

Before testing the enrichment APIs, we ran an A-record DNS resolution check by performing dig A <domain> for each sampled domain.

An A record maps a domain to an IPv4 address, so we looked for at least one returned A record as a basic sign that the domain resolved.

Domains that did not resolve were removed from the main benchmark set.

Initial domains500
DNS-resolved domains349
Removed from main benchmark151

We used the 349 DNS-resolved domains as the main comparison set.

Note: DNS resolution does not guarantee that a domain is an active company website. It only means the domain resolved in the DNS check used for this benchmark.

3. API testing

Each provider received the same 349 domains.

For each provider, we recorded:

  • whether the API returned a usable company profile
  • which fields were returned
  • which fields were populated
  • how many social links were returned
  • which counted firmographic fields were returned
  • whether funding data was returned

4. Definition of "enriched"

A domain was counted as enriched when the response included a company name or company profile object plus at least one supporting signal — website/domain, LinkedIn URL, description, industry, logo, address, employee count, or social URL.

Empty responses, failed responses, and responses without usable company identity data were not counted as enriched.

5. What this benchmark measures

MetricMeaning
Coverage / find ratePercentage of the 349 DNS-resolved domains where the provider returned usable company data
Data depthHow much data was returned for enriched domains
Field fill rateHow often a specific field was populated, calculated as populated records divided by all 349 submitted domains
Social depthHow many social/profile URLs were returned
Firmographic depthCompany Name, Logo URL, Description, Keywords, Industry, Technologies, Address, Phone, Employees, Founded Year, Company Type, and Revenue
Funding depthWhether any funding signal was returned — funding rounds, total funding, or funding stage — counted as one combined canonical field
Unique fieldsFields that one provider returns but others do not

6. What this benchmark does not measure

Not measuredWhy
Full field-level accuracyWe measured whether data was returned, not whether every returned value was manually verified
All possible endpointsSome providers may offer extra data through separate APIs
Person/contact enrichmentThis benchmark focuses on company/domain enrichment
Pricing valuePricing depends on plans, credits, volume, and contract terms
Long-term freshnessResults reflect the test date
Every market segmentA random domain sample does not perfectly represent every region, industry, or company size

Coverage results

Coverage measures how often each provider returned usable company data for the 349 DNS-resolved domains.

Every find-rate percentage below uses the same denominator: 349.

ProviderDomains submittedDomains enrichedNot enrichedFind rate
CompanyEnrich34923611367.6%
Apollo34921513461.6%
People Data Labs34921013960.2%
ContactOut34918516453.0%
Coresignal34917617350.4%
Crustdata34913521438.7%

Coverage takeaway

CompanyEnrich had the highest find rate, enriching 236 of the 349 DNS-resolved domains. Apollo and People Data Labs were close behind at 215 and 210 enriched domains. ContactOut and Coresignal followed at 185 and 176, while Crustdata returned 135 enriched domains.

Several providers are close enough on raw coverage that data depth and field-level coverage are important to read alongside find rate.


Data depth overview

Data depth measures how much usable company data came back after a provider found a company. To keep this concrete, each returned profile was checked against the same 27 canonical benchmark fields. The table below compares average and median field depth.

ProviderAvg fields per returned profileMedian fields per returned profileAvg data points per submitted domain
CompanyEnrich17.9 / 2719 / 2712.1
Apollo15.4 / 2716 / 279.5
People Data Labs13.7 / 2714 / 278.2
Coresignal14.2 / 2715 / 277.2
ContactOut11.5 / 2712 / 276.1
Crustdata6.7 / 277 / 272.6

Data depth takeaway

CompanyEnrich returned the fullest matched profiles, averaging 17.9 of the 27 benchmark fields with a median of 19. It also had the highest per-submitted-domain depth at 12.1 fields, because it combined the highest find rate with the deepest returned profiles.

Apollo was the strongest broad runner-up at 15.4 fields on average and a median of 16. Coresignal matched fewer domains than People Data Labs and ContactOut, but returned slightly more benchmark fields per match than both, so its matched records were deeper even with a lower find rate. The per-submitted-domain column lets you compare profile depth on the same 349-domain basis as the find rate.


Field category comparison

This table groups fields into broader categories. Since each provider uses different raw field names, we first mapped comparable fields into a shared canonical model, then grouped those canonical fields into the buckets below.

Category averages use field-level found counts divided by the 349 submitted domains. A provider does not need to return every field in a category for the category to count. Each canonical field contributes independently to the category average. Fields missing from a provider's tested schema are counted as 0.0% so every displayed percentage uses the same total denominator.

How categories are defined

CategoryWhat it measuresCanonical fields counted
Core identityWhether the response identifies the company and its basic web presence.company_id, name, domain_website, description, logo
FirmographicsBasic company attributes used for account sizing, segmentation, and qualification.industry, employee_count_or_range, revenue, founded_year, company_type
Location / contactGeographic and direct contact details for the company.location, phone, email
SocialsCompany profile URLs and audience signals from social or profile platforms.linkedin, facebook, twitter_x, instagram, youtube, crunchbase, follower_count
TaxonomyClassification fields that describe what the company does in more structured ways.categories, keywords_tags_specialties, naics, sic
TechnologyDetected or returned technologies used by the company.technologies
FundingWhether the response includes any funding signal (rounds, total raised, or stage).funding_data
Org structureWhether the response includes any corporate-relationship signal (parent, subsidiary, or affiliate).corporate_relations

How a category percentage is calculated

A category percentage is the sum of populated canonical fields in the category, divided by 349 submitted domains × number of canonical fields in the category. For firmographics that denominator is 349 × 5, because the bucket contains five canonical fields. If a provider returns only industry and employee count, those count toward the category and the three missing fields drag the average down.

Different providers use different raw field names for the same concept — one might call it estimated_num_employees, another employees. Both map to the same canonical field, employee_count_or_range, before the firmographics average is calculated.

How specific canonical fields are defined

Location is counted when any mapped component is present — country, state, city, street or full address, postal code, headquarters field, or location array entry. Providers structure location differently, so this measures whether location data was returned, not whether a full postal address was.

Domain and website are combined into a single canonical field, domain_website. Every tested provider populates the two from the same source, so counting them separately would have double-counted the same signal. The combined field counts as present when either was returned.

Industry is counted as a single canonical field. Some providers expose both a primary industry and a multi-industry array, but in this benchmark they are not counted separately when they map to the same source signal. Providers that genuinely return a multi-industry array still receive credit through industry; the additional richness is not measured as a separate field.

Edge cases

When profile arrays contain mixed social links, the Crunchbase field is counted only when the individual value is a Crunchbase URL.

Where providers use placeholder values, those placeholders are treated as missing. This includes numeric 0 for employee count, revenue, founded year, and follower count, plus N/A-style strings for revenue.

ProviderCore identityFirmographicsLocation
contact
SocialsTaxonomyTechnologyFundingOrg
structure
CompanyEnrich67.6%48.1%38.5%34.5%50.5%60.2%9.2%0.9%
Apollo60.5%37.3%35.8%20.2%32.2%61.0%10.6%8.0%
People Data Labs46.0%48.1%18.6%25.4%25.5%0.0%7.2%10.6%
ContactOut39.1%44.7%16.1%14.9%7.6%0.0%5.2%0.0%
Coresignal48.1%34.2%26.0%13.7%24.0%29.8%4.0%0.0%
Crustdata30.0%14.1%0.0%5.4%0.0%0.0%0.0%0.0%

Category takeaway

CompanyEnrich led core identity, location/contact, social web, and taxonomy category averages. Apollo narrowly led technology and also led the merged funding signal at 10.6% — a 5-record gap over CompanyEnrich that is not statistically distinguishable at this sample size.

People Data Labs and CompanyEnrich both round to 48.1% on firmographics, with People Data Labs slightly higher before rounding. CompanyEnrich paired firmographics with stronger contact, taxonomy, and social breadth.

Funding and org structure were the two thinnest categories. Funding signals were sparse for every provider, so the column should be read as partial signal coverage rather than complete funding intelligence. On org structure, People Data Labs led at 10.6%, Apollo reached 8.0% via subsidiaries only, and CompanyEnrich populated subsidiaries for 0.9% of submitted domains; ContactOut, Coresignal, and Crustdata returned no corporate-relation data. Both columns are near-floor across the benchmark, not meaningful differentiators.


Field-level fill rates

The tables below show how often each field was populated across all 349 submitted domains.

These are population rates, not correctness rates. A populated description, keyword, address, phone number, or other field was counted as present, but not manually verified for accuracy.

For every percentage in the main field tables, the calculation is field found / 349 submitted domains. Schema-missing fields are shown as 0.0% instead of N/A to keep the denominator consistent. Placeholder values such as zero employee counts, zero revenue, zero founded years, zero follower counts, and N/A revenue are not counted as found. Crunchbase is counted only for actual Crunchbase URLs, not every URL in a mixed profile array.

Firmographic fields

FieldCompanyEnrichApolloPeople Data LabsContactOutCoresignalCrustdata
Company Name67.6%61.6%60.2%53.0%50.4%38.7%
Logo URL67.6%61.6%0.0%43.0%40.4%34.1%
Description67.3%56.4%50.4%46.7%48.7%0.0%
Keywords / specialties67.3%48.7%36.4%30.4%48.7%0.0%
Industry67.3%53.6%54.2%51.0%49.9%35.5%
Technologies60.2%61.0%0.0%0.0%29.8%0.0%
Location61.6%59.6%55.9%48.4%44.7%0.0%
Phone53.9%47.9%0.0%0.0%21.8%0.0%
Employees50.4%53.3%60.2%52.4%48.7%35.0%
Founded Year43.3%43.6%39.0%35.5%32.7%0.0%
Company Type42.4%0.0%60.2%39.0%39.8%0.0%
Revenue37.0%36.1%27.2%45.6%0.0%0.0%

Identity, firmographics, and technology takeaway: CompanyEnrich led company name, logo, description, keywords, industry, location, and phone when measured against all 349 submitted domains. Apollo led technologies and founded year. People Data Labs led employees and company type. ContactOut led revenue.

Social URL fields

FieldCompanyEnrichApolloPeople Data LabsContactOutCoresignalCrustdata
LinkedIn55.6%56.7%60.2%53.0%50.4%38.1%
Facebook58.2%45.8%30.7%0.0%0.0%0.0%
X/Twitter52.4%39.0%20.6%0.0%0.0%0.0%
Instagram38.7%0.0%0.0%0.0%0.0%0.0%
YouTube29.5%0.0%0.0%0.0%0.0%0.0%
Crunchbase7.4%0.0%38.1%0.0%4.0%0.0%
Follower count0.0%0.0%28.4%51.6%41.5%0.0%

Social data takeaway: CompanyEnrich had the broadest social URL coverage overall, leading Facebook, X/Twitter, Instagram, and YouTube. People Data Labs led LinkedIn and the tracked Crunchbase signal after filtering mixed profile arrays to Crunchbase URLs. ContactOut was strongest on follower count among the tracked social fields.

Funding

Funding rounds, total funding, and funding stage are counted as a single canonical field, funding_data, that registers as present when any of the three is populated. For every tested provider, "any funding signal" equals the funding-rounds count exactly — funding stage and total funding are subsets of rounds — so treating them as three independent signals overstated funding coverage. The merged signal looks like this:

FieldCompanyEnrichApolloPeople Data LabsContactOutCoresignalCrustdata
Funding data9.2%10.6%7.2%5.2%4.0%0.0%

Funding takeaway: Funding signals were sparse across the entire benchmark. Apollo led the merged signal at 10.6% (37/349) via its funding_events[] array, with CompanyEnrich at 9.2% and People Data Labs at 7.2%. The gap between Apollo and CompanyEnrich is 5 records, which is not statistically distinguishable at this sample size. ContactOut and Coresignal populated funding for fewer than 6% of submitted domains; Crustdata returned no funding data in the tested response.

Org structure

Parent-company, subsidiary, and affiliate signals are counted as a single canonical field, corporate_relations, that registers as present when any of the three is populated. For PDL, the only provider that exposes all three, the affiliates field is a near-superset of parent and subsidiary, so treating them as three independent signals overstated coverage. The merged signal looks like this:

FieldCompanyEnrichApolloPeople Data LabsContactOutCoresignalCrustdata
Corporate relations0.9%8.0%10.6%0.0%0.0%0.0%

Org structure takeaway: People Data Labs led the merged field at 10.6%, populating affiliate-entity links for most of its corporate-relation records, and was the only provider to return parent-company information. Apollo reached 8.0% via its suborganizations[] array (subsidiaries only). CompanyEnrich populated subsidiaries for 3 of 236 matched records (0.9%); ContactOut, Coresignal, and Crustdata returned no corporate-relation data in the tested response. The category is a near-floor signal across the benchmark, not a meaningful differentiator for most domains.


Provider-by-provider analysis

The provider-level picture is easier to read as a compact comparison. The table below summarizes where each provider looked strongest in this sample and where the tested response was weaker.

ProviderFind rateAvg fields per returned profileStrongest signals in this benchmarkMain limitation in this benchmark
CompanyEnrich67.6%17.9 / 27Highest coverage and depth; led core identity, location/contact, social web, taxonomy, company name, logo, description, keywords, industry, location, phone, Facebook, X/Twitter, Instagram, and YouTube.Did not lead every field; Apollo led technologies, founded year, and funding, People Data Labs led employees, LinkedIn, and company type, and ContactOut led revenue and follower count.
Apollo61.6%15.4 / 27Strongest broad runner-up; led technologies, founded year, and the merged funding signal.Company type, Instagram, YouTube, and follower count were unpopulated in the tested response.
People Data Labs60.2%13.7 / 27Led LinkedIn URL, employee count, company type, and actual Crunchbase-link coverage after filtering mixed profile arrays.Logo URL, technologies, phone, Instagram, YouTube, and follower count were unpopulated in the tested endpoint.
ContactOut53.0%11.5 / 27Strongest revenue and follower-count coverage after placeholder values were excluded.Technologies, phone, Facebook, X/Twitter, Instagram, YouTube, and most broader social URLs were unpopulated in the tested response.
Coresignal50.4%14.2 / 27Lower coverage than the top four, but relatively deep matched profiles with company name, LinkedIn, employees, industry, keywords, location, phone, follower count, technologies, and limited funding signals.All-request find rate was lower than CompanyEnrich, Apollo, People Data Labs, and ContactOut, and several tracked social and revenue fields were unpopulated.
Crustdata38.7%6.7 / 27Focused company identity profile; strongest tracked fields were company name, LinkedIn URL, industry, employees, and logo URL.Lowest find rate, lowest returned-profile depth, and narrowest coverage across location, contact, social breadth, funding, and technology fields.

Important limitations

This benchmark should be read with the following limitations.

1. This is not a full accuracy audit

We measured whether providers returned data and how complete the returned records were. We did not manually verify every value in every returned field.

2. The dataset is one random sample

The test used 500 random domains from the Majestic Million, with 349 DNS-resolved domains used in the final benchmark. Results may differ with another sample, region, company size, industry, or domain type.

3. DNS resolution does not prove active company status

A domain can resolve via DNS but still be parked, inactive, redirected, or not connected to an operating company.

4. Provider APIs change over time

API coverage, schemas, pricing, endpoints, and data sources can change. This benchmark reflects the test date shown above.

5. Some providers may expose more data through other endpoints

This benchmark tested domain enrichment APIs. Some providers may have additional endpoints for funding data, people data, contact data, company search, or account intelligence.

6. Field presence can still overstate usable quality

A field can be present but stale, incomplete, formatted differently, or attached to the wrong company entity. Before choosing a provider for production, run a small manual accuracy review on your own accounts and the exact fields your workflow depends on.


Reproducibility

The reproducibility materials are available in the company-enrichment-api-benchmark GitHub repository. The repository includes the Majestic Million sampling and DNS script, the sampled domain file, raw provider JSONL responses, generated benchmark CSV outputs, the canonical field mapping, and a Python generator that rebuilds the metrics from the raw source files.

To rerun the benchmark calculations, clone the repository and run python3 generate_benchmark_results.py. The generator reads the provider JSONL files under data/ and regenerates the coverage, depth, canonical-field, category, and per-record benchmark outputs.


FAQ

Why 27 canonical fields, and how were they chosen?

We mapped every provider's raw fields onto a shared canonical model so the six APIs can be compared on the same axes. The 27 fields avoid double-counting overlapping source signals: domain and website are counted as one field, industry and multi-industry values are credited through industry, parent-company and subsidiary signals are credited through corporate_relations, and funding rounds, total funding, and stage are credited through funding_data. The goal is to count independent buyer-relevant data points, not multiple names for the same underlying signal.

What does find rate mean?

Find rate is the percentage of submitted domains for which the provider returned usable company data. In this benchmark, find rate is calculated using the 349 DNS-resolved domains: find rate = enriched domains / 349.

How are field percentages calculated?

Field percentages use the same denominator: field found / 349 submitted domains. They are not divided by each provider's returned-record count, and schema-missing fields are shown as 0.0% rather than N/A so every cell uses the same total.

Is this an accuracy benchmark?

No. This benchmark measures coverage and data depth — whether each provider returned company data and which fields were populated. We did not manually verify the values themselves for accuracy, freshness, or correct entity matching. Before choosing a provider for production, run a small accuracy check on your own target accounts.

Tell us what you're building

Every integration is unique. Whether you're enriching CRM data, powering AI agents, or automating lead generation — we'll show you exactly how our API fits.

Technical questions?

Our engineers will join the call.

Pricing concerns?

We'll design a plan that scales with you.

Integration help?

Walk away with working code samples.

Amirali, Co-Founder Amirali, Co-Founder
Zeynep, Partnership Manager Zeynep, Partnership Manager
Ekin, Co-Founder & CTO Ekin, Co-Founder & CTO
CompanyEnrich CompanyEnrich

Get answers, not a sales pitch

Talk to an expert