Company search API
search_companies
2.5 credits / company returnedFirmographic company search over the company index (~9M companies), ranked by LinkedIn follower count. Supports complex targeting: combine multiple industries/categories to INCLUDE (they OR together — a company matching any of them qualifies) with industries_exclude/categories_exclude to SUBTRACT, plus employee size range, HQ country/region/city, a name substring, has_domain, funding graph filters (stage, total raised, funding date range, investor names), and detected tech stack (must use / must not use). Funding and investor filters restrict to the subset of companies with a funding-graph record (~40% coverage) — an honest data limit. At least one filter is required. Paginate with limit/offset (default 25 per page); the filters echo shows the canonical labels actually applied and the page object tells you if more rows exist. A best-effort `total` (full matching-universe count) rides along when it resolves within a short bound — omitted for broad filters rather than stalling the call; use size_tam with the same filters for an unbounded exact count.
Parameters
| param | type | description |
|---|---|---|
| ads_countries | string[] | Ad MARKETS the ads run in (ISO-2 like "IN", "US", or names) — where the company advertises, distinct from HQ country. Empty = every tracked market. Optional. |
| ads_keywords | string[] | Ad-topic keywords — the company's ADS must mention one (text search of the ad library). Empty = any ad. Optional. |
| ads_platforms | string[] | Ad platforms: "meta" and/or "linkedin". Empty = either. Optional. |
| categories | string[] | Category keywords to INCLUDE — fuzzy-resolved against the granular category vocabulary and OR-combined with any industries. Categories cover the subset of companies carrying category tags. Optional. |
| categories_exclude | string[] | Category keywords to EXCLUDE — fuzzy-resolved against the category vocabulary; companies tagged with a matching category are always subtracted (companies without category tags are dropped too, matching product semantics). Optional. |
| city | string | HQ city (e.g. "Bengaluru", "Austin"). Optional. |
| country | string | HQ country — name or ISO-2 code (e.g. "India", "US"). Optional. |
| funded_after | string | Only companies whose LAST funding round closed on/after this ISO date (YYYY-MM-DD). Optional. |
| funded_before | string | Only companies whose LAST funding round closed on/before this ISO date (YYYY-MM-DD). Optional. |
| funding_stage | string[] | Funding-graph stage(s) to INCLUDE, OR together (e.g. ["series_b"], ["seed","pre_seed"]). Free-form (not a fixed enum) — common values: seed, pre_seed, angel, series_a..series_e, venture, private_equity, debt_financing, grant. Optional. |
| has_domain | boolean | Only companies with a known website domain. Optional. |
| industries | string[] | Industry keywords to INCLUDE. Each entry fuzzy-resolves against BOTH the broad industry vocabulary and the granular category vocabulary; all matches OR together into one include group (a company matching any qualifies). Example: ["payroll", "hr software"]. Optional. |
| industries_exclude | string[] | Industry keywords to EXCLUDE. Each entry fuzzy-resolves against the industry vocabulary; matching companies are always subtracted from the results (companies with no industry on file are kept). Optional. |
| industry | string | Single industry keyword — shorthand for industries: [..]. Matched against BOTH the broad industry vocabulary and the more granular category vocabulary (e.g. "software", "payroll", "warehouse automation") — companies match on either. Optional. |
| investors | string[] | Investor / VC / accelerator names to INCLUDE, OR together — fuzzy-resolved against the investor-name vocabulary (e.g. ["Y Combinator"], ["Sequoia"]). Restricts to companies with a funding-graph record. Optional. |
| limit | integer | Companies per page (default 10, max 100). COST: each company returned costs 2.5 credits (plus a 0.1 base fee per call), so this limit sets the price of the call — ask for what you need. |
| max_funding | number | Maximum total funding raised, USD. Optional. |
| min_funding | number | Minimum total funding raised, USD. Optional. |
| models | string[] | Business-model labels — our GTM model axis, ANDed with everything else ("how they sell"): D2C, SaaS, Marketplace, Ecommerce, B2B, B2C, Subscription, AI-native, PLG / Product-led, Bootstrapped, VC-backed… THE precise filter for model concepts ("d2c companies" → models: ["D2C"]). Optional. |
| models_exclude | string[] | Business-model labels to EXCLUDE. Optional. |
| name_contains | string | Substring of the company name (e.g. "labs"). Optional. |
| offset | integer | Rows to skip for pagination (default 0; offset+limit must not exceed 5000). |
| region | string | HQ state/region as stored on the company index (e.g. "California", "Karnataka"). Optional. |
| require_funded | boolean | Only companies that have raised any funding at all. Ignored when min_funding is also set above 0. Optional. |
| running_ads | boolean | Only companies ACTIVELY RUNNING ADS (Meta/LinkedIn ad libraries — cached index covers India on both platforms and the US on LinkedIn). Compose with ads_countries / ads_platforms / ads_keywords. Optional. |
| sectors | string[] | GTM sector labels to INCLUDE — our own 117-label vertical taxonomy (e.g. "SaaS / Cloud", "D2C / Consumer Brands", "Payments & Fintech", "EdTech & E-Learning"). OR-combined with industries/categories. Case/spacing-forgiving. Optional. |
| sectors_exclude | string[] | GTM sector labels to EXCLUDE. Optional. |
| size_range | string | Employee size bucket, exact values: "1 employee", "2-10 employees", "11-50 employees", "51-200 employees", "201-500 employees", "501-1,000 employees", "1,001-5,000 employees", "5,001-10,000 employees", "10,001+ employees". Compact forms like "51-200" or "1001-5000" are normalized. Optional. |
| tech_not | string[] | Detected technologies the company must NOT use (NONE of these). Same resolution as tech_uses. Optional. |
| tech_source | string: stack | jobs | both | Which detection signal tech_uses/tech_not check: "stack" (website tech-stack scan, default), "jobs" (mentioned in the company's LinkedIn job postings), or "both" (either counts as a match). Optional. |
| tech_uses | string[] | Detected technologies the company MUST use (ALL of these), e.g. ["salesforce"] or ["salesforce","hubspot"]. Resolved against the tech-detection vocabulary (exact name preferred, fuzzy fallback). Optional. |
Call it from your agent (MCP)
Connect once and search_companies appears in your agent’s toolbox next to every other gtm.dev tool. Claude Code:
claude mcp add --transport http gtm https://mcp.gtm.dev \
--header "Authorization: Bearer YOUR_API_KEY"Under the hood, the client sends:
curl -X POST https://mcp.gtm.dev \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search_companies","arguments":{"industries":["payroll","hr software"],"industries_exclude":["staffing"],"country":"US","limit":50}}}'other clients (cursor, claude desktop, openai agents sdk, langchain): mcp setup
Call it over REST
curl -X POST https://api.gtm.dev/v1/tools/search_companies \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"industries":["payroll","hr software"],"industries_exclude":["staffing"],"country":"US","limit":50}'Errors (401, 402, 429, 400) are listed in the REST reference. Calls that error are not billed — see pricing.