Linked In Company Page
These operations validate the LinkedIn URL of a company and, from a company name plus optional website, look one up. The route decides the kind of page rather than the request body: this tag covers company pages (.../company/, .../school/, .../showcase/) only. A search is answered from public web search over the company name and country supplied; no LinkedIn account, session or credential is used.
Four dimensions are scored:
Completeness: whether a LinkedIn company page URL is present.
Validity: whether the URL follows LinkedIn's accepted format (no existence check).
Consistency: whether the input equals the normalized canonical company form (
.../company/).Accuracy: whether the URL matches the context supplied (company name, optionally website).
The result carries a normalized LinkedIn company page URL and those scores. When the context suggests a mismatch or uncertainty, candidate pages are returned ranked, each with a confidence score and the details read from the search result; a company website supplied in the request is used as a further signal. LinkedIn Profile covers people; the two are priced and permissioned separately.
Submit an asynchronous job to find and validate the LinkedIn page of a COMPANY: send url to validate one, or company_name (with website for precision) to search for one. Returns a job_id — pass it to getLinkedInCompanyPageResult to retrieve the canonical page URL plus accuracy and validity scores.
Two modes:
Validate an existing page — supply
url.Search — supply
company_name, addingwebsitefor precision.
findAndValidateLinkedInProfile covers a PERSON — this operation looks for /company/, /school/ and /showcase/ pages only.
These results are processed from the company website and from public web search: Google results, retrieved through Google Custom Search API or a SERP provider. No LinkedIn account, session or credential is used, and no third-party database is consulted. The company name and country you supply are sent to that search provider, and the company website you supply — or the domain of an email address you supply, which itself never leaves Delpha — is requested directly. A URL you submit for validation is never requested: its format is checked, and it may be searched for through that search provider.
A live-mode call reserves credits and creates a job record retained for 10 days; unless your team has set resolution retention to 0, the call and its result are also recorded in your team's resolution history for the window your team configured (up to 30 days on the free tier, 180 on a paid plan). Re-submitting the same input starts a new job and a new charge, unless the request carries an Idempotency-Key already used with the same body within the last 24 hours — that returns the original job_id and reserves nothing. Test-mode calls are answered from the published fixture table and reserve nothing — see the API documentation's Test mode section.
- : Access to the public API
OAuth 2.0 client-credentials flow (machine-to-machine). Token URL: https://secure.delpha.io/oauth2/token. The api/access scope is all-access: it grants every operation this document publishes. Per-use-case scoping, per-key credit ceilings and expiry are properties of an API key, not of this flow — use an API key when a credential must be restricted.
Payload to submit a new LinkedIn quality job.
LinkedIn company page URL to validate (e.g. https://www.linkedin.com/company/delphainc/). When set, the operation runs in validation mode.
nullExample: https://www.linkedin.com/company/delphainc/Company website (e.g. https://delpha.io/). The strongest signal after the name. Optional.
nullExample: https://delpha.io/Company whose LinkedIn page is being looked up (e.g. Delpha). Required when url is not supplied. Paired with website it narrows the search further.
nullExample: DelphaAn email at the company's domain, used only for its domain as a website signal (e.g. jordan.rivera@delpha.io); the address itself never leaves Delpha. Optional; an address at an unrelated domain points the search at that domain instead.
nullExample: jordan.rivera@delpha.ioCountry of the company, used to disambiguate the match (e.g. France or FR). Accepts an ISO 3166-1 alpha-2 code or a plain English country name. Optional.
nullExample: FranceAccepted / still running — poll the result route with the returned job_id.
Validation error — the request body or query parameters were rejected.
Authentication failed — invalid or missing OAuth 2.0 token or API key.
Payment required — the team has insufficient credits.
Forbidden — the credential is valid but not allowed here: the API key's scopes do not cover this operation, or the operation is not routed in this environment (API Gateway then answers Missing Authentication Token).
Conflict — the Idempotency-Key was already used with a different request body (idempotency_key_reuse: a new key admits the new body, the original body replays the original job), or the original request with this key is still being processed (idempotency_in_progress: the same request answers with the original job once that one is admitted).
Too many requests — one of two limits was exceeded. Your allowance for this operation in the current 60-second window: an Error body with code: rate_limited, Retry-After set to the seconds left in the window, and the quota headers with X-RateLimit-Remaining: 0; nothing is charged. Or the per-operation floor every caller of that operation shares: a GatewayError body with Retry-After: 1 and no quota headers, refused before the API sees the request.
Internal error.
Bad gateway — the upstream service returned an error.
POST /v1/linkedin-company-page HTTP/1.1
Host: api.delpha.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 161
{
"url": "https://www.linkedin.com/company/delphainc/",
"website": "https://delpha.io/",
"company_name": "Delpha",
"email": "jordan.rivera@delpha.io",
"country": "France"
}{
"code": "ok",
"request_id": "c1a2b3d4-0000-4a5b-8c9d-ef0123456789",
"job_id": "21014abc65004d2781d2e0ef4c9fbb46",
"message": "Job submitted",
"status": "SUCCESS",
"status_code": 202
}Fetch the result of a previously submitted findAndValidateLinkedInCompanyPage job by job_id. On success, the result payload contains the canonical company page URL, accuracy and validity scores, and a recommendations array of candidate pages (each carrying url, headline, desc, company_name, location, and a confidence score) when the match is uncertain. In search mode the top-level label and scores are often "No" and 0 while recommendations still holds the candidates. Each candidate carries a desc and a headline; unrelated companies can share a name across countries, so those two fields are what tell them apart.
Reading a result starts no work and adds no charge, but it finalizes the job's accounting once: the job's charge is settled when its result is first delivered, and refunded when the job failed, exceeded its time limit or produced no usable result — a job past its time limit is marked failed by that read. Repeating the call returns the same answer and never charges again.
- : Access to the public API
OAuth 2.0 client-credentials flow (machine-to-machine). Token URL: https://secure.delpha.io/oauth2/token. The api/access scope is all-access: it grants every operation this document publishes. Per-use-case scoping, per-key credit ceilings and expiry are properties of an API key, not of this flow — use an API key when a credential must be restricted.
Opaque job identifier returned by findAndValidateLinkedInCompanyPage.
{"value":"21014abc65004d2781d2e0ef4c9fbb46","summary":"Sample job ID"}Job succeeded — the result payload is populated.
Accepted / still running — poll the result route with the returned job_id.
Validation error — the request body or query parameters were rejected.
Authentication failed — invalid or missing OAuth 2.0 token or API key.
Forbidden — the credential is valid but not allowed here: the API key's scopes do not cover this operation, or the operation is not routed in this environment (API Gateway then answers Missing Authentication Token).
Not found — no job exists for this id, or it belongs to another team.
Conflict — the credit reservation expired before delivery; resubmit.
Too many requests — one of two limits was exceeded. Your allowance for this operation in the current 60-second window: an Error body with code: rate_limited, Retry-After set to the seconds left in the window, and the quota headers with X-RateLimit-Remaining: 0; nothing is charged. Or the per-operation floor every caller of that operation shares: a GatewayError body with Retry-After: 1 and no quota headers, refused before the API sees the request.
Internal error.
Service unavailable — a downstream dependency was unreachable.
Gateway timeout — the job exceeded its processing ceiling.
GET /v1/linkedin-company-page/{job_id} HTTP/1.1
Host: api.delpha.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"code": "ok",
"request_id": "c1a2b3d4-0000-4a5b-8c9d-ef0123456789",
"message": "Job succeeded.",
"status": "SUCCESS",
"status_code": 200,
"result": {
"data_type": "social_network",
"normalized_value": "https://www.linkedin.com/company/delphainc/",
"label": "OK",
"scores": {
"accuracy": 0.8711710601954503,
"completeness": 1,
"consistency": 1,
"validity": 1
},
"recommendations": [
{
"url": "https://www.linkedin.com/company/delphainc/",
"score": 0.8711710601954503,
"headline": "Delpha",
"rank": 1,
"desc": "Delpha · Software Development · Paris, France",
"company_name": "Delpha",
"location": "Paris",
"match_score": 0.8711710601954503,
"ambiguity_n": 1
}
],
"recommendation_status": "confident",
"type": "linkedin"
},
"process_time": 0.123
}Submit 1..100 LinkedIn company page items for asynchronous batch processing as ONE job (never a per-item fan-out). Returns a job_id immediately (202); poll GET /v1/linkedin-company-page/batch/{job_id} for status and results. Each item follows LinkedInCompanyPageSubmitInputBatchItem; see that component for its fields. It uses the runtime validation of POST /v1/linkedin-company-page. A payload with 0 items or more than 100 is rejected with 422.
A live-mode call reserves credits and creates a job record retained for 10 days; unless your team has set resolution retention to 0, the call and its result are also recorded in your team's resolution history for the window your team configured (up to 30 days on the free tier, 180 on a paid plan). Re-submitting the same input starts a new job and a new charge, unless the request carries an Idempotency-Key already used with the same body within the last 24 hours — that returns the original job_id and reserves nothing. Test-mode calls are answered from the published fixture table and reserve nothing — see the API documentation's Test mode section.
- : Access to the public API
OAuth 2.0 client-credentials flow (machine-to-machine). Token URL: https://secure.delpha.io/oauth2/token. The api/access scope is all-access: it grants every operation this document publishes. Per-use-case scoping, per-key credit ceilings and expiry are properties of an API key, not of this flow — use an API key when a credential must be restricted.
Batch envelope for POST /v1/linkedin-company-page/batch: {"items": [...]} (1..100 items, 422 beyond). Each item follows LinkedInCompanyPageSubmitInputBatchItem; see that component for its fields. It uses the runtime validation of POST /v1/linkedin-company-page.
Accepted / still running — poll the result route with the returned job_id.
Authentication failed — invalid or missing OAuth 2.0 token or API key.
Payment required — the team has insufficient credits.
Forbidden — the credential is valid but not allowed here: the API key's scopes do not cover this operation, or the operation is not routed in this environment (API Gateway then answers Missing Authentication Token).
Conflict — the Idempotency-Key was already used with a different request body (idempotency_key_reuse: a new key admits the new body, the original body replays the original job), or the original request with this key is still being processed (idempotency_in_progress: the same request answers with the original job once that one is admitted).
Unprocessable entity — the request is well-formed but cannot be processed: a documented size/shape bound was violated (validation_error), or a legal-ID request names a registry / country Delpha cannot query (unsupported_registry — refused before any credit is reserved; the message lists the supported countries).
Too many requests — one of two limits was exceeded. Your allowance for this operation in the current 60-second window: an Error body with code: rate_limited, Retry-After set to the seconds left in the window, and the quota headers with X-RateLimit-Remaining: 0; nothing is charged. Or the per-operation floor every caller of that operation shares: a GatewayError body with Retry-After: 1 and no quota headers, refused before the API sees the request.
Internal error.
Bad gateway — the upstream service returned an error.
POST /v1/linkedin-company-page/batch HTTP/1.1
Host: api.delpha.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 173
{
"items": [
{
"url": "https://www.linkedin.com/company/delphainc/",
"website": "https://delpha.io/",
"company_name": "Delpha",
"email": "jordan.rivera@delpha.io",
"country": "France"
}
]
}{
"code": "ok",
"request_id": "c1a2b3d4-0000-4a5b-8c9d-ef0123456789",
"job_id": "21014abc65004d2781d2e0ef4c9fbb46",
"item_count": 100,
"message": "Batch submitted",
"status": "SUCCESS",
"status_code": 202
}Poll a batch of LinkedIn company page items submitted via POST /v1/linkedin-company-page/batch. 202 while running (with item_count/processed_count progress); 200 once SUCCEEDED (with counts, a presigned result_url, and result_data inlined when <=1MB); 409 if the credit reservation expired before delivery (resubmit); 500 if the job failed; 504 past the 24h ceiling.
Reading a result starts no work and adds no charge, but it finalizes the job's accounting once: the job's charge is settled when its result is first delivered, and refunded when the job failed, exceeded its time limit or produced no usable result — a job past its time limit is marked failed by that read. Repeating the call returns the same answer and never charges again.
- : Access to the public API
OAuth 2.0 client-credentials flow (machine-to-machine). Token URL: https://secure.delpha.io/oauth2/token. The api/access scope is all-access: it grants every operation this document publishes. Per-use-case scoping, per-key credit ceilings and expiry are properties of an API key, not of this flow — use an API key when a credential must be restricted.
The unique identifier of the LinkedIn company page batch job.
{"value":"21014abc65004d2781d2e0ef4c9fbb46","summary":"Sample job ID"}Job succeeded — the result payload is populated.
Accepted / still running — poll the result route with the returned job_id.
Validation error — the request body or query parameters were rejected.
Authentication failed — invalid or missing OAuth 2.0 token or API key.
Forbidden — the credential is valid but not allowed here: the API key's scopes do not cover this operation, or the operation is not routed in this environment (API Gateway then answers Missing Authentication Token).
Not found — no job exists for this id, or it belongs to another team.
Conflict — the credit reservation expired before delivery; resubmit.
Too many requests — one of two limits was exceeded. Your allowance for this operation in the current 60-second window: an Error body with code: rate_limited, Retry-After set to the seconds left in the window, and the quota headers with X-RateLimit-Remaining: 0; nothing is charged. Or the per-operation floor every caller of that operation shares: a GatewayError body with Retry-After: 1 and no quota headers, refused before the API sees the request.
Internal error.
Service unavailable — a downstream dependency was unreachable.
Gateway timeout — the job exceeded its processing ceiling.
GET /v1/linkedin-company-page/batch/{job_id} HTTP/1.1
Host: api.delpha.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"code": "ok",
"request_id": "c1a2b3d4-0000-4a5b-8c9d-ef0123456789",
"message": "97/100 items succeeded",
"status": "SUCCESS",
"status_code": 200,
"counts": {
"total": 100,
"succeeded": 97,
"failed": 3
},
"result_url": "https://delpha-api-batch.s3.amazonaws.com/batch-results/<job_id>.json?...",
"result_data": {
"job_id": "21014abc65004d2781d2e0ef4c9fbb46",
"usecase": "linkedin-company-page",
"counts": {
"total": 2,
"succeeded": 1,
"failed": 1
},
"items": [
{
"dispatch_key": {
"record_id": "21014abc65004d2781d2e0ef4c9fbb46#0"
},
"result": {
"data_type": "social_network",
"normalized_value": "https://www.linkedin.com/company/delphainc/",
"label": "OK",
"scores": {
"accuracy": 0.8711710601954503,
"completeness": 1,
"consistency": 1,
"validity": 1
},
"recommendations": [
{
"url": "https://www.linkedin.com/company/delphainc/",
"score": 0.8711710601954503,
"headline": "Delpha",
"rank": 1,
"desc": "Delpha · Software Development · Paris, France",
"company_name": "Delpha",
"location": "Paris",
"match_score": 0.8711710601954503,
"ambiguity_n": 1
}
],
"recommendation_status": "confident",
"type": "linkedin"
}
},
{
"dispatch_key": {
"record_id": "21014abc65004d2781d2e0ef4c9fbb46#1"
},
"error": "Processing failed for this item."
}
]
},
"item_count": null,
"processed_count": null,
"process_time": 12.3
}Last updated
Was this helpful?