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 companyWhat 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?
| Endpoint | Input | Price | Best for |
|---|---|---|---|
| Companies API | Company URLs, or search by keyword/filters | $0.004 / company | Firmographic data for a target list |
| Company Employees API | One company URL per call | $0.004 / profile | Mapping who works at a target account |
| Domain Lookup API | Company website domains | $0.004 / result | Turning 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.
