Deep Research
X-API-Key — the only required header for this endpoint.Decide whether a single, known company fits your criteria in terms of recent activity and organizational structure as a qualifier.
Combine an activity question (answered from job postings) and a team-composition question (answered from LinkedIn people) in a single call, with cited evidence per stage. Provide a domain plus at least one of activity_question or qualifier_question.
Each parameter is hard-wired to a specific data source — pick the one that matches where the answer lives:
activity_question→ answered from the company’s recent job postings. Use for hiring intent, team expansion, tech-stack adoption visible in JDs, geographic hiring footprint (e.g. “hiring SDRs”, “building an AI platform team”, “hiring engineers experienced with Rust and Kubernetes”, “posting data roles that require Snowflake and dbt”, “expanding in Berlin”).qualifier_question→ answered from LinkedIn people data (current-employee profiles). Use for team composition, roles already filled, org structure (e.g. “has a Head of Security”, “has ≥5 SDRs and a Sales Director”, “has a dedicated AppSec team”).
Pass both when a question spans both signals — each stage runs against its own data source and returns independent evidence.
Each stage returns a natural-language answer suitable for inline display, a boolean qualified verdict, and structured source evidence — sources with job postings for activity (title, URL, location, why-relevant reason) and LinkedIn profiles for qualifier (name, title, LinkedIn URL, seniority, department).
Credits: charged per call, not per source returned. 1 successful call (at least one stage produced a finding) = 1 charge at the per-call price configured for your workspace. A 404 (domain could not be resolved) is free. The exact amount billed is returned in credits_consumed on every response.
Example — single call asking both questions about Stripe:
POST /api/v2/research/deep
{
"domain": "stripe.com",
"activity_question": "rapidly growing their SDR team",
"qualifier_question": "Has at least 5 SDRs/BDRs and a Sales Director"
}
Headers
Your OpenFunnel API key. Get one via Agent Auth.
Body
Inputs for a single Deep Research call.
Provide a domain plus at least one of:
activity_question— answered from the company's recent job postings (hiring intent, team expansion, JD signals).qualifier_question— answered from LinkedIn people data (team composition, roles filled, org shape).
Pick the param whose backing data source contains the answer; pass both when the question spans both signals.
Company website domain to research (e.g. 'stripe.com'). Protocol and www. prefixes are stripped automatically. The domain is resolved to a LinkedIn org via the internal companies index before either stage runs.
"stripe.com"
"notion.so"
"databricks.com"
Answered from the company's recent job postings. Natural-language description of the hiring activity / signal to look for in open roles (e.g. 'rapidly growing their SDR team', 'hiring senior platform engineers in Europe', 'building out an AI / ML team from scratch', 'hiring engineers experienced with Rust and Kubernetes', 'posting data roles that require Snowflake and dbt'). Use this parameter for any question whose answer would be visible in JDs — hiring intent, team expansion, tech-stack adoption, geographic footprint. Pass null or omit to skip this stage.
"rapidly growing their SDR team"
Answered from LinkedIn people data (current-employee profiles). Natural-language criteria about the company's team / org composition (e.g. 'has at least 5 SDRs and a Sales Director', 'employs Kubernetes-experienced platform engineers', 'has a dedicated security team'). Use this parameter for any question about who already works at the company or how the org is shaped — roles filled, team size by function, seniority mix. Pass null or omit to skip this stage.
"Has at least 5 SDRs/BDRs and a Sales Director"
Lookback window (days) used by the activity stage. Has no effect when activity_question is omitted.
1 <= x <= 365Upper bound on the number of recent job postings the activity stage scores with the LLM relevance pass. Higher values raise recall but add latency / token cost (each job is judged by an LLM call). Default 25 is tuned for interactive use; bump it for batch / data-extraction workflows where you want maximum recall. Has no effect when activity_question is omitted.
1 <= x <= 200Response
Research findings with natural-language answers and source evidence.
Top-level Deep Research response.
Echo of the requested domain (normalized).
End-to-end request latency in milliseconds.
Resolved firmographic context for the company. Null only if the domain could not be resolved (in which case the endpoint returns 404 instead).
Findings for the activity question. Null when activity_question was not provided.
Findings for the qualifier question. Null when qualifier_question was not provided.
Credits charged for this call. Charge is recorded in the background after the response is sent. 0 when the call failed before producing any findings.