API review

OpenFunnel API review

YC-backed, agent-first GTM intelligence API. Credit-metered Agent Primitives (lookalikes, tech-stack-from-job-posts, deep research) plus a platform API that deploys long-running hiring, tech, job-change and LinkedIn signal agents. Hosted OAuth MCP. Best for finding lookalike companies from 1-10 seed domains or a plain-English description, up to 100 sync / 10,000 async.

Verified 25 Oct 2026 · 15 endpoints listed · Official MCP server

What a call costs

The actions you pay for, as OpenFunnel prices them in credits.

ActionCostPer
Search Lookalikes (sync or bulk)1credit per company returned
Search Companies by Tech Stack0.5 (credits page) vs 5 / 10 (API response schema)credits per company; conflict unresolved, read credits_consumed
Deep Researchper-workspace configured priceper successful call
Lookup, options, balance, bulk poll/cancel0free
Empty result set0free
Deep Research that finds nothing / unresolved domain (404)0free

Pricing, plan by plan

US dollars, as OpenFunnel's pricing page shows them on 25 Oct 2026. Monthly and annual billing are shown apart.

Free tier DIY: free, 50,000 credits to start, no credit card; all agent primitives, deploy your own signal agents, work-email and phone enrichment

DIY

$0

Free

50,000 credits to start (one-time grant as worded)

API included

Enterprise / Custom

Custom quote

credit pools + dedicated Forward Deployed Engineer, custom instance, on-prem, full UI, verified email/phone

API included

Rate limits

DIY plan has 'standard rate limits' (numbers not published).

More on limitsLess

Only sign-up/OTP 429 codes are documented (RATE_LIMITED with details.retry_after_seconds; OTP_MAX_ATTEMPTS after 10 tries; codes expire after 24 h). People contact enrichment runs at ~2 s per person because of an upstream 30 requests/minute limit.

How to get an API key

OpenFunnel uses API key. The steps below follow OpenFunnel's own docs.

  1. Create a OpenFunnel account. The DIY plan includes API access.
  2. Self-serve in two calls: POST /api/v1/agent/sign-up {email} → 6-digit code by email → POST /api/v1/agent/verify {email, otp_code} returns the key (existing users get their current key back).
  3. Send it with every request: header X-API-Key: of_... on every call (both OpenAPI specs declare only X-API-Key, required on all 60 platform operations; openfunnel.dev/llms.txt additionally lists X-User-ID, which the specs do not). MCP uses OAuth 2.1.
  4. Make a first call: Lookalike companies from seed_domains (1-10) and/or query, firmographic filters. Keep the key in an environment variable, never in the command.
    curl -X GET "https://api.openfunnel.dev/api/v1/account/search-lookalikes" \
      -H "X-API-Key: $OPENFUNNEL_API_KEY"

Where the docs live

WhatWhere
Documentationdocs.openfunnel.dev
API referencedocs.openfunnel.dev/api-reference/openapi.json
OpenAPI specdocs.openfunnel.dev/agent-primitives/openapi.json
llms.txtdocs.openfunnel.dev/llms.txt
Base URLhttps://api.openfunnel.dev
MCP serverhttps://agents.openfunnel.dev/mcp
SDKsnpm package `openfunnel` (named in metadata)

Strengths and limits

Where it fits

  • Finding lookalike companies from 1-10 seed domains or a plain-English description, up to 100 sync / 10,000 async
  • Finding companies by the technologies named in their job postings (credits page: 0.5 credit per company; response schema: 5-10, unresolved)
  • Deploying hiring/tech/job-change/social-listening/competitor-engagement signal agents via /api/v2/signal/deploy/*
  • Qualifying one known company against your criteria with Deep Research

Where it falls short

  • Generic high-volume raw lead list sourcing; vendor says it is optimised for high-context trigger-based GTM

Worth knowing

  • Two API surfaces with two specs and two MCP URLs: Agent Primitives (agents.openfunnel.dev/mcp) and the platform V1 Client APIs (mcp.openfunnel.dev/mcp). Pick the right one for the task
  • search-lookalikes limit defaults to 10 (max 100) and has no offset. Use the bulk endpoint for more, never loop the sync one
  • A bulk job with null next_cursor may still be running; check status
  • locations must be ISO 3166-1 alpha-3 (USA, GBR), never alpha-2
  • Credit cost of deploying platform signal agents and enrichment jobs is not published; Deep Research price is per-workspace. Read credits_consumed on every response
5 moreShow fewer
  • Product has pivoted since our April 2026 notes: public pricing is now DIY-free + Enterprise only; older (2026-04-15) describes the earlier UI/agent product
  • Auth header is X-API-Key, not Bearer. openfunnel.dev/llms.txt also asks for X-User-ID, but neither OpenAPI spec defines it
  • Tech-stack search price conflicts inside OpenFunnel's own docs: 0.5 credit/company on the credits page vs 5 (10 with enrich or any firmographic filter) in the endpoint's response schema. Budget for the higher figure until measured
  • Self-serve signup was down on 2026-10-25 (HTTP 500 'Failed to send verification email' on API and web signup), so nothing here is live-tested
  • Signal deploy bodies accept max_credit_limit; set it, because deploy credit costs are unpublished

Who should use it

Use OpenFunnel for
Finding lookalike companies from 1-10 seed domains or a plain-English description, up to 100 sync / 10,000 async
Look elsewhere for
Generic high-volume raw lead list sourcing; vendor says it is optimised for high-context trigger-based GTM

If OpenFunnel is not the answer

Other Signals tools in this directory, each with its own review.

Before you build

Four things to settle first, each read off OpenFunnel's own pages.

  • Confirm the API is on your planThe DIY plan includes API access. Free tier: DIY: free, 50,000 credits to start, no credit card.
  • Keep the key out of your codeAPI key. It is sent as: header X-API-Key: of_... on every call (both OpenAPI specs declare only X-API-Key, required on all 60 platform operations; openfunnel.dev/llms.txt additionally lists X-User-ID, which the specs do not). MCP uses OAuth 2.1..
  • Design around the rate limitDIY plan has 'standard rate limits' (numbers not published).
  • Know the catch before you scaleTwo API surfaces with two specs and two MCP URLs: Agent Primitives (agents.openfunnel.dev/mcp) and the platform V1 Client APIs (mcp.openfunnel.dev/mcp). Pick the right one for the task

Want us to build it for you?

Tell us what you want OpenFunnel to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.

Read from openfunnel.dev/pricing, docs.openfunnel.dev/api-reference/openapi.json and docs.openfunnel.dev/agent-primitives/authentication. Verified 25 Oct 2026.

All 15 endpointsFor developers: method, path, what it does and what it costs.

Base URL: api.openfunnel.dev

Bulk and async: search-lookalikes-bulk (async job up to 10,000); batch enrich jobs; lookup-companies 100 per call

Webhooks: Views can carry a webhook_notifications action that POSTs new insight alerts to an HTTPS URL; the create response returns an HMAC webhook_secret exactly once. Alerts fire only for new insights from signal runs, not the existing backlog. Also listed under Enterprise managed integrations.

15 endpoints
MethodPathWhat it doesCost
GET/api/v1/account/search-lookalikesLookalike companies from seed_domains (1-10) and/or query, firmographic filters1 credit per company returned
POSTasync/api/v1/account/search-lookalikes-bulkSame search up to 10,000 results1 credit per company returned, billed on completion; cancel caps spend
GET/api/v1/account/search-lookalikes-bulk/{job_id}Poll + page bulk results (POST.../cancel to stop early)free
GET/api/v2/tech/companiesCompanies whose recent job postings mention a technologyCONFLICT: credits page says 0.5 credit per company; the endpoint's own response schema (CompaniesResponse.credits_consumed) says 5 credits per company without enrichment and 10 with enrichment or any firmographic filter. Not testable (no key). Read credits_consumed.
POST/api/v2/research/deepQualify one known company (activity + org structure)1 charge per successful call at a per-workspace price (not published); 404 (domain unresolved) and calls with no findings are free
POST/api/v1/account/lookup-companiesResolve up to 100 names/domains/LinkedIn URLs to canonical recordsfree
GET/api/v1/account/firmographic-optionsAccepted filter values (also GET /api/v2/tech/country-options)free
GET/api/v1/credits/balanceAllowance, consumed, remainingfree
POSTasync/api/v2/signal/deploy/{type}Deploy a long-running signal agent. 21 types: hiring-for-role, hiring-for-initiative, hiring-for-concepts, hiring-spike-*, relative-hiring-spike-*, first-hire-for-role, job-post-first-time-mention, people-hired-*, job-change, tech-stack, tech-stack-first-mention, tech-stack-spike, tech-use-case, company-social-listening, people-social-listening, linkedin-engagement, linkedin-activity (competitor reps warming ICPs), trait-onlynot published; body accepts max_credit_limit to cap spend
POST/api/v1/account/get-account-listList accounts found by signals/ICPs (plus POST /api/v2/account/batch, GET /api/v2/account/filters, POST /api/v2/account/filtered-accounts, GET /api/v1/account/{account_id}/timeline)Not stated
POSTasync/api/v1/enrich/peopleEnrich people with contact info (async job; also /enrich/account, /enrich/accounts, /enrich/fast-people-enrichment, /enrich/deep-enrich, /people/verify)not published (phones cost 'additional credits per phone found')
POSTasync/api/v1/crm/sync-accounts-jobSync accounts (and /sync-people-job) to CRM; poll /crm/check-job-statusNot stated
GET/api/v1/insights/alertsRecent alerts for saved Views (Views CRUD at /api/v1/views)Not stated
POST/api/v1/icp/createCreate ICP (also /icp/list, /icp/update, /icp/options)Not stated
POSTasync/api/v1/enrich/accountsBatch firmographic enrichment of company domains (async; poll GET /api/v1/enrich/accounts/{job_id})Not stated