The LinkedIn Company Dataset API queries the indexed LinkedIn company catalog (linkedin_company) with Elasticsearch Query DSL. Search and filter millions of company profiles by name, domain, industry, headcount, country, founding year, and more.
POST-only. Billing is per row (per_row): 1 credit per hit returned in hits[].
Use this endpoint for bulk search, list building, and CRM enrichment at scale. For a single live LinkedIn page scrape, use LinkedIn Company Info (1 credit per call) instead.
POST https://api.piloterr.com/v2/datasets/linkedin/company
Content-Type: application/json
{
"query": {
"bool": {
"must": [{"match_phrase": {"name": "WebAPI Group"}}]
}
},
"size": 10
}
Lookup by website domain:
POST https://api.piloterr.com/v2/datasets/linkedin/company
Content-Type: application/json
{
"query": {"term": {"domain.keyword": "openai.com"}},
"size": 1
}
| Field |
Type |
Required |
Description |
query |
object |
yes |
Elasticsearch Query DSL clause (see examples below) |
size |
integer |
yes |
Max rows to return (each row = 1 credit) |
sort |
array |
no |
Sort fields, e.g. [{"staff_count": "desc"}] |
from_ |
integer |
no |
Pagination offset (0-based) |
| Use case |
query body |
| Company name |
{"match_phrase": {"name": "OpenAI"}} |
| Exact domain |
{"term": {"domain.keyword": "guideflow.com"}} |
| LinkedIn ID |
{"match": {"linkedin_id_numeric": 7050}} |
| Industry filter |
{"match": {"industry": "Software Development"}} |
| Min headcount |
{"range": {"staff_count": {"gte": 500}}} |
| Exclude small cos |
{"bool": {"must_not": [{"term": {"staff_range.keyword": "1-10"}}]}} |
Wrap filters in bool.must / bool.filter / bool.must_not for complex searches.
| Field |
Type |
Description |
name |
string |
Company display name |
domain |
string |
Primary website domain |
website |
string |
Full website URL |
industry |
string |
LinkedIn industry label |
tagline |
string |
Company tagline |
description |
string |
About text |
staff_count |
integer |
Declared employee count |
staff_range |
string |
Size band (1-10, 1k-5k, over-10k, ...) |
linkedin_url |
string |
Canonical LinkedIn company URL |
linkedin_id_numeric |
integer |
Numeric LinkedIn company ID |
linkedin_id_alpha |
string |
LinkedIn slug / universal name |
headquarter_city / headquarter_country |
string |
HQ location |
founded |
integer |
Year founded |
specialities_list |
array |
Speciality tags |
locations_list |
array |
Office location strings |
last_crawled_at |
datetime |
Last dataset refresh |
Top-level response also includes total, max_score, and search_metadata.credits.
|
Dataset (/v2/datasets/linkedin/company) |
Live (/v2/linkedin/company/info) |
| Method |
POST (ES query) |
GET |
| Billing |
1 credit / row |
1 credit per call |
| Best for |
Bulk search, filters, list building |
One company, fresh page data |
| Query DSL |
Yes |
No |
| Live posts / employees |
No |
Yes (scraping endpoints) |
size is required, you always pay for rows returned, not empty searches.
- Use
domain.keyword for exact domain matches (not analyzed domain text field).
- Indexed snapshot: fields may lag live LinkedIn; use LinkedIn Company Info when you need the current page.
- Build ABM target lists filtered by industry, country, and headcount
- Enrich CRM domains with LinkedIn IDs, industry, and staff counts in bulk
- Resolve
linkedin_id_numeric to firmographics for downstream profile enrichment
- Market mapping and competitive intelligence over the full company index