Search Companies by Tech Stack with Intent
X-API-Key - the only required header for this endpoint.Asynchronous, LLM-verified variant of Search Companies By Tech Stack. Same tech-in-job-postings search, plus an activity you supply - each company’s most recent matching posting is verified against that activity, and only companies whose posting demonstrates the tech being used in the way you described are returned.
Use it when the tech mention alone is too noisy and you care how the tech shows up:
tech=Snowflake+activity=migrating off Redshift to Snowflaketech=Kubernetes+activity=migrating workloads from VMs to Kubernetestech=dbt+activity=building a central analytics engineering team that owns dbt models
The activity acts as a hard filter: if the posting mentions the tech but in a different context (a customer reference, a different product with the same name, an unrelated use-case), the company is dropped. Each returned company carries an intent.reason quoting the exact posting phrases that support the verdict, plus the qualified posting itself (intent.qualified_job).
How it runs
The call returns a job_id immediately and the scan runs as a background job: companies are verified in ranked order (most matching posts first) and the scan early-stops once limit companies qualify - you only pay for what you asked for. A broad activity completes in under a minute; a rare one scans deeper and can take a few minutes.
Poll GET /api/v2/tech/companies/intent-search/{job_id} (“Tech Intent Search Results”, listed under Agent Helpers) until status is completed, then walk the result pages using next_cursor.
Filters & enrichment
All the firmographic filters from Search Companies By Tech Stack work here (hq_country_code, min_employee_count, max_employee_count) and auto-enable enrichment. Set enrich=true without filters to hydrate qualified companies with firmographics (employee count, HQ, website, LinkedIn, industries, funding, revenue).
Credits
Charged per qualified company returned, when the job completes - empty result sets are free. The exact amount is echoed in the manifest’s credits_consumed. Polling is free.
Example - submit a job
curl -sS -X POST "https://api.openfunnel.dev/api/v2/tech/companies/intent-search" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tech": "Snowflake", "activity": "migrating off Redshift to Snowflake", "lookback_days": 180, "limit": 50}'
Example - with firmographic filters
curl -sS -X POST "https://api.openfunnel.dev/api/v2/tech/companies/intent-search" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tech": "Kubernetes", "activity": "migrating workloads from VMs to Kubernetes", "variations": ["K8s"], "limit": 25, "hq_country_code": "USA", "min_employee_count": 200, "max_employee_count": 5000}'
The response returns a job_id; then poll GET /api/v2/tech/companies/intent-search/{job_id} for status and results.
Headers
Body
Request body for the async tech + activity-intent search. Same search inputs as Search Companies By Tech Stack, plus the required activity to verify and a limit on qualified companies.
Technology to search for in job descriptions (e.g. 'Snowflake', 'Kubernetes').
1 - 128The activity intent to verify, e.g. 'migrating off Redshift to Snowflake' or 'building a central analytics engineering team that owns dbt models'. Acts as a HARD filter: a company qualifies only when its job posting mentions the tech in a way consistent with this activity.
1 - 500"migrating off Redshift to Snowflake"
"migrating workloads from VMs to Kubernetes"
Optional alternate phrasings of the tech (e.g. 'K8s' for Kubernetes). Each is OR-matched as a phrase.
Lookback window in days (1–365).
1 <= x <= 365Maximum number of QUALIFIED companies to return. The scan walks the ranked pool and early-stops once this many companies pass intent verification.
1 <= x <= 500When true (default), excludes job posts from the vendor of the technology being searched.
Exclude well-known LinkedIn job aggregators and reposters (jobs-via-*, lensa, ziprecruiter, etc.). ON by default.
Additional LinkedIn company slugs to exclude on top of the default aggregator block-list.
Hydrate qualified companies with firmographics (employee count, website, LinkedIn, HQ, industries, funding, revenue). Auto-enabled when any firmographic filter is set.
Filter by company HQ ISO 3166-1 alpha-3 code (e.g. USA, GBR, IND, DEU). Full list of 250 codes via GET /api/v2/tech/country-options (under Agent Helpers). Auto-enables enrich.
3Inclusive lower bound on company employee count. Auto-enables enrich.
x >= 0Inclusive upper bound on company employee count. Auto-enables enrich.
x >= 0Response
Job accepted. Returns a job_id to poll for status and results.
Returned immediately when a tech intent-search job is submitted.
Async job id. Poll GET /api/v2/tech/companies/intent-search/{job_id} for status and results.
Human-readable next-step hint.
The requested maximum number of qualified companies.
Job status at submit time (always pending).