Skip to main content
GET
/
api
/
v2
/
tech
/
companies
/
intent-search
/
{job_id}
Poll results
# first page (also shows status)
curl -sS "https://api.openfunnel.dev/api/v2/tech/companies/intent-search/JOB_ID" \
  -H "X-API-Key: YOUR_API_KEY"

# next page
curl -sS "https://api.openfunnel.dev/api/v2/tech/companies/intent-search/JOB_ID?cursor=page_0001" \
  -H "X-API-Key: YOUR_API_KEY"
{
  "job_id": "8bda2224-3772-4430-94d3-69a526872227",
  "status": "completed",
  "manifest": {
    "pages": 1,
    "page_size": 100,
    "count": 50,
    "partial": false,
    "tech": "Snowflake",
    "activity": "migrating off Redshift to Snowflake",
    "companies_scanned": 230,
    "companies_skipped_no_evidence": 4,
    "companies_qualified": 50,
    "total_companies_matched": 8412,
    "credits_consumed": 500
  },
  "error_message": null,
  "rows": [
    {
      "company_slug": "acme-analytics",
      "company_name": "Acme Analytics",
      "post_count": 7,
      "first_posted_at": "2026-02-11T09:30:00Z",
      "last_posted_at": "2026-05-28T17:05:00Z",
      "enriched": true,
      "website": "acme-analytics.com",
      "linkedin_url": "https://www.linkedin.com/company/acme-analytics",
      "employee_count": 850,
      "hq_country_code": "USA",
      "funding_stage": "Series C",
      "intent": {
        "activity": "migrating off Redshift to Snowflake",
        "reason": "The posting describes \"leading our migration from Redshift to Snowflake\" as a core responsibility of the role.",
        "qualified_job": {
          "title": "Senior Data Engineer",
          "url": "https://www.linkedin.com/jobs/view/4012345678",
          "created": "2026-05-28T17:05:00Z",
          "snippet": "…experience leading our migration from Redshift to <em>Snowflake</em>…"
        }
      }
    }
  ],
  "page": "page_0000",
  "next_cursor": null,
  "count": 50
}

Headers

X-API-Key
string
required

Path Parameters

job_id
string
required

The job_id returned by the intent-search submit endpoint.

Query Parameters

cursor
string | null

Page to read, e.g. page_0001 (use the next_cursor from the previous response). Omit for the first page.

Response

Job status, manifest, and one page of results.

Combined job status + one page of results. Check status for completion (not next_cursor), and walk pages with next_cursor.

job_id
string
required
status
string
required

pending, running, completed, or failed.

manifest
TechIntentManifest · object

Job summary; populated once the job completes.

error_message
string | null

Failure reason when status is failed.

rows
TechIntentCompanyRow · object[]

Qualified companies in the requested page.

page
string | null

Name of the page returned, e.g. page_0000.

next_cursor
string | null

Pass as ?cursor= to fetch the next page; null on the last available page.

count
integer
default:0

Number of rows in this page.