MindCase
Saurabh Shubham

Buy vs. Build: LinkedIn Company Enrichment

The real crossover point between paying per company and building your own pipeline, plus the cost most DIY estimates leave out.

linkedinproduct
Buy vs. build: LinkedIn company enrichment

Every team that needs LinkedIn company data eventually asks the same question: pay per row, or build a scraper and own it outright. The honest answer depends on two numbers most teams never actually calculate — where your real volume crosses the build cost, and what a "successful" pull actually costs once you count the ones that fail.

What does building your own pipeline actually cost?

Not just engineering time to write the first version. A LinkedIn company scraper needs a rotating proxy budget, session/cookie handling that keeps breaking as LinkedIn's frontend changes, and someone who notices when a selector shifts and the pipeline starts returning empty rows instead of an error. None of that is a one-time build — it's a fixed monthly floor: proxies, maintenance time, and the compliance work of handling personal data under GDPR/CCPA, all of it owed whether you pull 50 companies that month or 50,000.

Buying removes that floor entirely. Companies API and Company Employees API charge only for rows returned — zero cost sitting idle, no maintenance owed between runs.

Where's the real crossover point?

The comparison people actually want isn't "scraper vs. API" in the abstract — it's "at what volume does my fixed engineering floor, divided across records, finally dip below what Mindcase charges per row."

Companies API is $0.004 per company. Company Employees is $0.004 per profile. Say you're pulling firmographics for 2,000 target companies, capped at 40 employees returned per company via maxResults — that's 2,000 × $0.004 + 2,000 × 40 × $0.004 = $328 total. A proxy budget alone for a comparable DIY pull — sized for LinkedIn's blocking behavior, not a friendlier target — typically starts well above that before any engineering time is counted. For bursty, one-off, or irregular pulls, that crossover essentially never arrives: the fixed floor is owed in months you don't run anything.

curl -X POST "https://api.mindcase.co/v1/data/linkedin/companies/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "params": {
    "companies": [
      "https://www.linkedin.com/company/webflow",
      "https://www.linkedin.com/company/notion"
    ]
  }
}'

# $0.004 per company

What does "cost per row" actually mean once pulls start failing?

The number that matters isn't cost per attempt — it's cost per company you actually got usable data back for. A DIY scraper's real unit cost is your fixed monthly floor divided by successful pulls, not requests sent, and success rate is exactly what degrades first once a target site tightens its blocking. A scraper quietly returning empty rows for 30% of a batch doesn't show up as an error — it shows up as a gap in your CRM three weeks later. Companies API and Company Employees API return a status per job and fail the request outright rather than a silent empty payload, so a failure is something you catch immediately, not something you discover downstream.

Run the numbers on what a quiet failure rate does to your build-side math. Say your fixed monthly floor for a DIY pipeline (proxies, a rotating session pool, someone watching for breakage) comes to $1,200, and you're pulling 3,000 companies a month. At a 100% success rate that's $0.40 per company — already close to what Companies API charges. Drop to a 70% success rate, which is a plausible outcome once a target site's blocking tightens, and your real cost per usable row jumps to about $0.57, because the fixed floor is still $1,200 whether 3,000 rows succeeded or 2,100 did. The floor doesn't shrink when your success rate does; only the denominator does.

When does building actually make sense?

Three real cases: you already hold proprietary firmographic data no vendor has (an internal CRM enrichment layer, not LinkedIn itself); your steady-state volume is extreme enough that the crossover point above is genuinely behind you, sustained every month, not just in a good quarter; or a data residency requirement means the pull has to run inside infrastructure you control, not a third party's. Outside those three, the fixed floor is usually paying for infrastructure that isn't your product.

What can't you get from Mindcase?

Two cases. Companies API returns firmographics — employee count, industry, HQ, founded year — not funding or investor data; that's a different category of data Mindcase doesn't carry today. And neither endpoint returns anything from a page that isn't public — a company's private admin-only fields aren't reachable by any vendor, not a Mindcase-specific gap.

Which endpoint should you use for which job?

EndpointInputPriceBest for
Companies APICompany URLs, or search by keyword/filters$0.004 / companyFirmographic data for a target list
Company Employees APIOne company URL per call$0.004 / profileMapping who works at a target account
Domain Lookup APICompany website domains$0.004 / resultTurning a CRM's domain list into LinkedIn URLs first

FAQ

There's no separate free tier, but at $0.004 per row a few hundred test companies costs a few dollars — cheap enough to run your own numbers before committing either way.

Every request pulls live from the source at the moment you call it — no caching, so what you get back matches what's on the page right now.

That row fails and is reported as a failure rather than returned as an empty success — failed rows aren't billed.

Yes — pull firmographics with Companies API, then feed the same company URLs into Company Employees API to map who works there. They're commonly used together.