Skip to main content
Use this when you need the most up-to-date company data and cannot rely on the indexed database — for time-sensitive outreach, competitive monitoring, or verifying stale records. The Company Realtime Enrich API scrapes a company’s LinkedIn profile on demand and returns fresh data. It uses the same request format as Enrich but fetches data live instead of from the indexed database. Every request goes to the same endpoint:
POST https://api.crustdata.com/company/professional_network/enrich/live
Replace YOUR_API_KEY in each example with your actual API key. All requests require the x-api-version: 2025-11-01 header.

Realtime enrich by domain

curl --request POST \
  --url https://api.crustdata.com/company/professional_network/enrich/live \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "domains": ["hubspot.com"],
    "fields": ["basic_info", "headcount"]
  }'
Response trimmed for clarity.

Realtime enrich by LinkedIn URL

curl --request POST \
  --url https://api.crustdata.com/company/professional_network/enrich/live \
  --header 'authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --header 'x-api-version: 2025-11-01' \
  --data '{
    "professional_network_profile_urls": [
      "https://www.linkedin.com/company/mintlify"
    ],
    "fields": ["basic_info"]
  }'

Realtime Enrich vs Enrich

Realtime EnrichEnrich
Endpoint/company/professional_network/enrich/live/company/enrich
Data sourceLive LinkedIn scrapeCrustdata indexed database
FreshnessReal-time (seconds old)Indexed (periodically updated)
LatencyHigher (live scraping)Lower (pre-indexed)
Best forTime-sensitive lookups, stale record refreshGeneral enrichment, batch workflows
Use Realtime Enrich sparingly — it is slower and more expensive than indexed Enrich. For most workflows, indexed Enrich provides sufficiently fresh data.

Request parameters

The request body is the same as Company Enrich:
ParameterTypeRequiredDescription
domainsstring[]Exactly one identifier type requiredWebsite domains to enrich.
professional_network_profile_urlsstring[]Exactly one identifier type requiredLinkedIn company URLs to enrich.
namesstring[]Exactly one identifier type requiredCompany names to enrich.
crustdata_company_idsinteger[]Exactly one identifier type requiredCrustdata company IDs to enrich.
fieldsstring[]NoSpecific field groups to include in the response.
exact_matchbooleanNoSet to true for strict domain matching.
Current platform behavior: Submit exactly one identifier type per request.

No-match behavior

If no company matches the identifier, the API returns 404:
404 — Realtime data not found
{
    "error": {
        "type": "invalid_request",
        "message": "Realtime data not found",
        "metadata": []
    }
}
Unlike indexed Enrich (which returns 200 with empty matches), Realtime Enrich returns 404 when no data is found. See Conventions for the full comparison.

Errors

StatusMeaning
400Invalid request — missing or multiple identifier types, or invalid fields.
401Invalid or missing API key.
403Permission denied or insufficient credits.
404Realtime data not found for the identifier.
500Internal server error. Retry with exponential backoff.

API reference summary

DetailValue
EndpointPOST /company/professional_network/enrich/live
AuthBearer token + x-api-version: 2025-11-01
RequestSame as Company Enrich.
ResponseSame schema as Company Enrich: { "results": [{ "matched_on", "match_type", "matches": [{ "confidence_score", "company_data" }] }] }
Errors400, 401, 403, 404, 500
For shared conventions, error handling, and retry guidance, see Conventions.

What to do next

  • Use indexed enrich for most workflowsCompany Enrich is faster and cheaper for general enrichment.
  • Search for companies — use Company Search to find companies matching structured filters.
  • See more examples — browse Company Examples for ready-to-copy patterns.