Deep Research
Decide whether a single, known company fits your criteria in terms of recent activity and organizational structure as a qualifier.
X-API-Key - the only required header for this endpoint.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.
If you are not sure which domain OpenFunnel has indexed for a company, call Lookup Companies first. It accepts company names, domains, and LinkedIn URLs and returns the normalized company/domain records you can pass into Deep Research.
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, count/spike questions, first-time hiring or first-time JD mentions, and recent-hire intent.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”).
Activity question examples by category:
- Single-role hiring: “Is this company hiring SDRs based on recent job postings?”; “Do their recent job postings show developer relations engineer hiring?”
- Initiative/team buildout: “Do their job descriptions suggest they are building an AI customer support automation team?”; “Do recent postings indicate they are staffing a data governance program?”
- Tech/vendor/concept mentions: “Are they posting roles that mention Snowflake in at least 5 job descriptions in the last 90 days?”; “Do their job postings mention Salesforce more than 3 times this month?”
- Role-count hiring: “Have they posted more than 5 SDR roles in the last 90 days?”; “Are they expanding platform engineering with at least 4 platform engineer postings in the last 60 days?”
- Concept-count hiring: “Are they building around AI automation, with at least 4 related job postings this quarter?”; “Are they staffing generative AI work, with 6 or more related job postings in the last six months?”
- Relative spikes: “Does their recent job activity show a spike in SDR hiring?”; “Are data engineer postings up 40% week over week?”; “Are Kubernetes mentions in their job descriptions up 80%?”
- Recent-hire intent: “Does recent hiring activity suggest they brought someone in to build outbound sales?”; “Does recent hiring suggest they brought in a leader to stand up product security?”
- First-time signals: “Is this the first time their job postings mention Kubernetes?”; “Are they hiring Solutions Engineers for the first time?”; “Does this look like their first Head of Data hire?”
Qualifier question examples by category:
- Named team / product ownership: “Which engineers are in the Dropbox Dash team?”; “Which VP + sales people are in the AWS Textract team?”
- Recent people changes: “New joiners in sales in the last 60 days”; “Any recent GTM engineering hires in sales in the last 90 days?”
- Team-size / count checks: “Do they have more than 2 customer support people?”; “Do they have at least 5 SDRs/BDRs?”
- Seniority / role coverage: “Do they have a VP or Head of Data Platform?”; “Do they have a Head of Security?”
- Specialized teams / skills: “Do they have a dedicated AppSec / product-security team?”; “Do they employ Kubernetes-experienced platform engineers?”
Pass both activity_question and qualifier_question 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. Activity evidence is returned in activity.sources; qualifier evidence is returned in qualifier.sources. Job sources include title, URL, location, created timestamp, and why-relevant reason. People sources include name, title, LinkedIn URL, seniority, department, and start date when available.
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.
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-visible tech/vendor signals, count/spike signals, first-time hiring or first-time JD mentions).qualifier_question- answered from LinkedIn people data (team composition, named teams/products, roles already filled, recent joiners, team-size checks, org shape).
Pick the param whose backing data source contains the answer; pass both when the question spans both signals. If the company domain is ambiguous or does not resolve, use POST /api/v1/account/lookup-companies first to find the normalized domain OpenFunnel has indexed.
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. If this does not resolve, use Lookup Companies to find the normalized indexed domain.
"stripe.com"
"notion.so"
"databricks.com"
Answered from the company's recent job postings. Natural-language description of the activity signal to look for in open roles. Use this for hiring intent, team expansion, tech-stack or vendor adoption visible in JDs, geographic hiring footprint, count/spike questions, first-time hiring, first-time job-post mentions, or recent-hire intent. Examples: Is this company hiring SDRs based on recent job postings?, Do their job descriptions suggest they are building an AI customer support automation team?, Are they posting roles that mention Snowflake in at least 5 job descriptions in the last 90 days?, Have they posted more than 5 SDR roles in the last 90 days?, Are data engineer postings up 40% week over week?, Is this the first time their job postings mention Kubernetes?. Pass null or omit to skip this stage.
"Is this company hiring SDRs based on recent job postings?"
Answered from LinkedIn people data (current-employee profiles). Natural-language criteria about who already works at the company or how the org is shaped. Use this for team composition, named teams/products, roles already filled, seniority coverage, team-size/count checks, recent joiners or start-date questions, and skill/team specialization. Examples: Which engineers are in the Dropbox Dash team?, New joiners in sales in the last 60 days, Do they have more than 2 customer support people?, Has at least 5 SDRs/BDRs and a Sales Director, Has a dedicated AppSec / product-security team. Pass null or omit to skip this stage.
"Which engineers are in the Dropbox Dash team?"
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. Stage-level activity.sources and qualifier.sources contain cited evidence.
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. Matching job source links are returned in activity.sources.
Findings for the qualifier question. Null when qualifier_question was not provided. Matching people source links are returned in qualifier.sources.
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.