Skip to main content

Use case

Research and enrich company data with additional firmographic information and find associated people. Use it for sales outreach, CRM enrichment, lead qualification, or investigative diligence.

Endpoint

API Reference

See the full request/response schema and parameters in the API Reference.

Pricing

See Credits & Pricing Guide for credit costs by tier.

Errors

For error responses (400, 403, 422, etc.), see Handling Errors.

Tiers

The tier parameter controls research depth and cost. To override the default, pass tier in the request body. See Sync usage for an example.
If tier is omitted, low is used. Requests with tier: "high" on an org without high-tier access return 403 — see Handling Errors.

Using the struct field

The struct field defines exactly what data you want back. Each key becomes a field in structured_data, and its value tells the agent what to find. You can pass either a plain-English description or an object with description and type:
The agent uses these descriptions to guide its research. Be specific — "company's primary Instagram handle" returns better results than "social". For supported types, type resolution priority, and casting examples, see Struct & Type Casting.

find_people vs full_org_chart

  • find_people — Finds specific people associated with the company. Pair with people_focus_prompt to filter by role or seniority.
  • full_org_chart — Returns a compact view of employees grouped by department (capped per department). It’s broad coverage of who works where, not a literal reporting tree or an exhaustive employee dump. When true, the response includes a top-level org_chart field.
Use find_people for targeted lead discovery and full_org_chart for department-level visibility.

research_plan vs people_focus_prompt

  • research_plan — Methodology. Tells the agent where to look (e.g., "Check the 'About Us' page and LinkedIn Company People tab").
  • people_focus_prompt — Criteria. Tells the agent who to find (e.g., "Find the VP of Marketing and the CTO").

Timeouts and parallelization

This endpoint performs deep research and is a long-running operation. Typical P95 runtime is about 5 minutes and can reach 10 minutes for complex companies. We are actively working on performance improvements.
  • Set client timeouts appropriately: If you call the sync endpoint, configure your HTTP client with a timeout of at least 15 minutes.
  • Prefer async in production: Use POST /company-intelligence-async and poll GET /job-status/{task_id}.
  • Parallelize for throughput: Submit multiple async jobs in parallel (bounded concurrency) rather than waiting for each to complete sequentially.

Understanding scores

The findings field on the response is deprecated. It currently returns an empty list and will be removed in a future update.

Sync usage

Make a direct request and wait for the response. Enrichment can take several minutes depending on depth of research.

Async pattern

For production workflows, use /company-intelligence-async to submit a job and poll for results. This avoids long-lived HTTP connections during deep research runs. The flow is:
  1. SubmitPOST /company-intelligence-async with the same body as the sync endpoint. Response includes a task_id.
  2. PollGET /job-status/{task_id} until status is completed, failed, or cancelled.
  3. Read result — When completed, the full enrichment is in the result field.
The async start endpoint returns uppercase RUNNING. Subsequent /job-status/{task_id} calls return lowercase statuses. charge_amount is returned in cents, not credits.

Polling example