> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# TheirStack: Company Search

> Finding companies by technology stack, firmographics, or hiring signals. Includes SDK V2 guidance, input constraints, response fields, and Deepline credit cost.

Finding companies by technology stack, firmographics, or hiring signals.

> [!NOTE]
>
> Tool ID: `theirstack_company_search`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'theirstack_company_search',
  {
    "expand_technology_slugs": [],
    "order_by": [
      {
        "desc": true,
        "field": "confidence"
      },
      {
        "desc": true,
        "field": "num_jobs_found"
      },
      {
        "desc": true,
        "field": "num_jobs"
      },
      {
        "desc": true,
        "field": "num_jobs"
      },
      {
        "desc": true,
        "field": "employee_count"
      }
    ],
    "company_name_or": []
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute theirstack_company_search --input '{
  "expand_technology_slugs": [],
  "order_by": [
    {
      "desc": true,
      "field": "confidence"
    },
    {
      "desc": true,
      "field": "num_jobs_found"
    },
    {
      "desc": true,
      "field": "num_jobs"
    },
    {
      "desc": true,
      "field": "num_jobs"
    },
    {
      "desc": true,
      "field": "employee_count"
    }
  ],
  "company_name_or": []
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "metadata": {
      "total_results": 1,
      "truncated_results": 0,
      "truncated_companies": 0
    },
    "data": [
      {
        "id": "id_123",
        "name": "Example"
      }
    ]
  }
}
```

Use `deepline describe theirstack_company_search --json` for the latest machine-readable contract.

## Input reference

This endpoint lets you search for companies by technology stack, hiring signals, and firmographics. It returns a list of companies that match the search criteria, along with the jobs and technology objects for each company that match the filters you've passed. Useful resources: [Preview data mode](https://theirstack.com/en/docs/api/preview-data-mode), [Free count mode](https://theirstack.com/en/docs/api/free-count) The response includes both company data and any matching jobs or technologies based on your filters.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.expand_technology_slugs` | `array` | No | `[]` | Specify technology slugs to include detailed technology usage information for each company. The response will include a 'technologies\_found' field containing metrics like confidence score, ranking, and job count for each specified technology. Note: If a technology is not listed for a company, it means that company does not use that technology. This feature is useful for enriching company data with their technology stack details. |
| `payload.order_by` | `array` | No | `[&#123;"desc":true,"field":"confidence"&#125;,&#123;"desc":true,"field":"num_jobs_found"&#125;,&#123;"desc":true,"field":"num_jobs"&#125;,&#123;"desc":true,"field":"num_jobs"&#125;,&#123;"desc":true,"field":"employee_count"&#125;]` | List of column objects. You can pass several columns to order by, in order of priority. Only `field` is required, `desc` is True by default |
| `payload.company_name_or` | `array` | No | `[]` | Only return companies that match these names exactly, case-sensitively. This filter acts as an OR filter, so if you pass more than one company name, it will return companies that match any of the names. |
| `payload.company_name_case_insensitive_or` | `array` | No | `[]` | Only return companies that match these names exactly, case-insensitively. |
| `payload.company_id_or` | `array` | No | `[]` | Only return companies that match these IDs exactly. This filter acts as an OR filter, so if you pass more than one company ID, it will return companies that match any of the IDs. |
| `payload.company_domain_or` | `array` | No | `[]` | Only return companies that match these domains exactly. It accepts full urls ([https://www.google.com/](https://www.google.com/)) and emails ([john.polo@gmail.com](mailto:john.polo@gmail.com)). This filter acts as an OR filter, so if you pass more than one company domain, it will return companies that match any of the domains. |
| `payload.company_domain_not` | `array` | No | `[]` | Only return companies that don't match these domains exactly. It accepts full urls ([https://www.google.com/](https://www.google.com/)) and emails ([john.polo@gmail.com](mailto:john.polo@gmail.com)). |
| `payload.company_name_not` | `array` | No | `[]` | Only return companies that don't match these names exactly, case-sensitively. |
| `payload.company_name_partial_match_or` | `array` | No | `[]` | Company names. Will return companies whose name contain any of the the substrings passed here, case-insensitively. For example, if you pass "google", it will return "Google", "Google LLC", "Google Inc", etc. |
| `payload.company_name_partial_match_not` | `array` | No | `[]` | Company names. Will return companies whose name doesn't contain any of the the substrings passed here, case-insensitively. For example, if you pass 'google', it will exclude 'Google', 'Google LLC', 'Google Inc', etc. |
| `payload.company_linkedin_url_or` | `array` | No | `[]` | Return companies whose LinkedIn URL matches any of the slugs passed here. Can also pass full LinkedIn company URLs. |
| `payload.blur_company_data` | `boolean` | No | `false` | Return blurred company and job fields for preview. Free preview availability depends on workspace eligibility, and preview is unavailable when filtering by company identifiers (company\_name, company\_domain, company\_linkedin\_url, company\_id). Count-only searches are still billable by Deepline: when include\_total\_results=true and limit=1, each returned result is billed even if this flag is true. Learn more at [https://theirstack.com/en/docs/api/preview-data-mode](https://theirstack.com/en/docs/api/preview-data-mode). |
| `payload.property_exists_or` | `array` | No | `[]` | Return companies that have any of these fields not null. For example, if you pass \['domain', 'linkedin\_url'], it will return companies that have a domain OR a linkedin\_url set. |
| `payload.property_exists_and` | `array` | No | `[]` | Return companies that have all of these fields not null. For example, if you pass \['domain', 'linkedin\_url'], it will return companies that have both domain AND linkedin\_url set. |
| `payload.offset` | `integer` | No | `0` | Number of results to skip. Required for [offset-based pagination](https://theirstack.com/en/docs/api-reference/pagination). Minimum: 0. |
| `payload.page` | `integer` | No | `0` | Page number. Required when using [page-based pagination](https://theirstack.com/en/docs/api-reference/pagination). Minimum: 0. |
| `payload.limit` | `integer` | No | `25` | Number of results per page. Maximum 500 per page. Use `page` to fetch additional pages. Minimum: 1. |
| `payload.cursor` | `string` | No | — | Cursor for pagination |
| `payload.company_description_pattern_or` | `array` | No | `[]` | Case-insensitive patterns to match in the company description. Will return companies that match any of the patterns. |
| `payload.company_description_pattern_not` | `array` | No | `[]` | Case-insensitive patterns to match in the company description. Will return companies that match any of the patterns. |
| `payload.company_description_pattern_accent_insensitive` | `boolean` | No | `false` | Set to True to make company description searches accent insensitive. For example, "á" will match "a" as well. |
| `payload.min_revenue_usd` | `integer` | No | — | Minimum company revenue, in USD |
| `payload.max_revenue_usd` | `integer` | No | — | Maximum company revenue, in USD |
| `payload.min_employee_count` | `integer` | No | — | Minimum number of employees in a company |
| `payload.max_employee_count` | `integer` | No | — | Maximum number of employees in a company |
| `payload.min_employee_count_or_null` | `integer` | No | — | Minimum number of employees in a company. If we don't have company size information, we will return it as well. |
| `payload.max_employee_count_or_null` | `integer` | No | — | Maximum number of employees in a company. If we don't have company size information, we will return it as well. |
| `payload.min_funding_usd` | `integer` | No | — | Minimum company funding, in USD |
| `payload.max_funding_usd` | `integer` | No | — | Maximum company funding, in USD |
| `payload.funding_stage_or` | `array` | No | `[]` | Funding stages of companies returned. Possible values: \['angel', 'convertible\_note', 'debt\_financing', 'equity\_crowdfunding', 'other', 'private\_equity', 'seed', 'series\_a', 'series\_b', 'series\_c', 'series\_d', 'series\_e', 'series\_f', 'series\_g', 'series\_h', 'venture\_round\_not\_specified', 'series\_i', 'series\_j', 'undisclosed', 'series\_unknown', 'pre\_seed', 'post\_ipo\_secondary', 'post\_ipo\_equity', 'post\_ipo\_debt', 'non\_equity\_assistance', 'late\_vc', 'initial\_coin\_offering', 'growth\_equity\_vc', See the live schema for the complete constraint. |
| `payload.industry_or` | `array` | No | `[]` | Names of industries, case-insensitive. Results will only include companies that belong to any of the industries specified in this parameter. Available values: [GET /v0/catalog/industries](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_industries_v0) WARNING: Deprecated parameter. Use the industry\_id\_or field instead. |
| `payload.industry_not` | `array` | No | `[]` | Names of industries, case-insensitive. Results will exclude companies that belong to any of the industries specified in this parameter. Available values: [GET /v0/catalog/industries](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_industries_v0) WARNING: Deprecated parameter. Use the industry\_id\_not field instead. |
| `payload.industry_id_or` | `array` | No | `[]` | Industry codes. You can use any of [LinkedIn's Industry Codes V2](https://learn.microsoft.com/en-us/linkedin/shared/references/reference-tables/industry-codes-v2) or [GET /v0/catalog/industries](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_industries_v0) |
| `payload.industry_id_not` | `array` | No | `[]` | Industry ids to exclude.You can use any of [LinkedIn's Industry Codes V2](https://learn.microsoft.com/en-us/linkedin/shared/references/reference-tables/industry-codes-v2) or [GET /v0/catalog/industries](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_industries_v0) |
| `payload.company_tags_or` | `array` | No | `[]` | Return companies that match any of these keywords |
| `payload.company_type` | `"recruiting_agency" \| "direct_employer" \| "all"` | No | — | Filter by company type. Allowed: `recruiting_agency`, `direct_employer`, `all`. |
| `payload.company_investors_or` | `array` | No | `[]` | Investors of the company |
| `payload.company_investors_partial_match_or` | `array` | No | `[]` | Investors of the company. Will return companies for which any of their investors contains any of the substrings passed here. For example, if you pass 'andree', all funds that match it (like 'Andreessen Horowitz', 'Andreessen Horowitz LLC', etc). |
| `payload.company_technology_slug_or` | `array` | No | `[]` | Will return jobs from companies that that have mentioned any of these technologies in their jobs (not necessarily in the jobs returned). Case sensitive. Pass slugs. Check out all the technologies we track at [GET /v0/catalog/technologies](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_technologies_v0). Deprecated: use company\_keyword\_slug\_or instead. |
| `payload.company_technology_slug_and` | `array` | No | `[]` | Will return jobs from companies that that have mentioned all of these technologies in their jobs (not necessarily in the jobs returned). Case sensitive. Pass slugs. Check out all the technologies we track at [GET /v0/catalog/technologies](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_technologies_v0). Deprecated: use company\_keyword\_slug\_and instead. |
| `payload.company_technology_slug_not` | `array` | No | `[]` | Will return jobs from companies that that haven't mentioned any of these technologies in their jobs. Case sensitive. Pass slugs. Check out all the technologies we track at [GET /v0/catalog/technologies](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_technologies_v0). Deprecated: use company\_keyword\_slug\_not instead. |
| `payload.company_keyword_slug_or` | `array` | No | `[]` | Return results from companies that have mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |
| `payload.company_keyword_slug_and` | `array` | No | `[]` | Return results from companies that have mentioned all of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |
| `payload.company_keyword_slug_not` | `array` | No | `[]` | Return results from companies that haven't mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |
| `payload.only_yc_companies` | `boolean` | No | `false` | Only return YC companies |
| `payload.company_location_pattern_or` | `array` | No | `[]` | Return companies whose city matches any of the patterns passed here. Case insensitive. For example, if you pass 'san francisco', it will return companies whose city is 'San Francisco', 'San Francisco Bay Area', etc. |
| `payload.company_country_code_or` | `array` | No | `[]` | Return companies whose HQ country code is any of the ones passed here, case sensitive. Pass ISO2 country codes. |
| `payload.company_country_code_not` | `array` | No | `[]` | Return companies whose HQ country code is not any of the ones passed here, case sensitive. Pass ISO2 country codes. |
| `payload.company_list_id_or` | `array` | No | `[]` | Return companies that belong to any of the company lists passed here |
| `payload.company_list_id_not` | `array` | No | `[]` | Return companies that don't belong to any of the company lists passed here |
| `payload.company_linkedin_url_exists` | `boolean` | No | — | (Use `property_exists_or / property_exists_and` instead) Only return companies with a LinkedIn URL |
| `payload.revealed_company_data` | `boolean` | No | — | This field is deprecated and has no effect. |
| `payload.last_funding_round_date_lte` | `string` | No | — | Only return companies whose last funding round date is before or on this date. Format: 'YYYY-MM-DD' Format: `date`. |
| `payload.last_funding_round_date_gte` | `string` | No | — | Only return companies whose last funding round date is after or on this date. Format: 'YYYY-MM-DD' Format: `date`. |
| `payload.include_total_results` | `boolean` | No | `false` | When enabled, calculates and returns `total_results` and `total_companies` fields in the response. WARNING: This significantly slows down responses as it requires reading the entire dataset. Recommended usage: enable only for the initial request to get totals, then disable for subsequent pagination requests. |
| `payload.job_filters` | `object` | No | — | — |
| `payload.tech_filters` | `object` | No | — | Filter by technologies and buying intent topics detected for the company |
| `payload.keyword_slug_or` | `array` | No | `[]` | Return results from companies that have mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |
| `payload.keyword_slug_and` | `array` | No | `[]` | Return results from companies that have mentioned all of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |
| `payload.keyword_slug_not` | `array` | No | `[]` | Return results from companies that haven't mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |
| `payload.technology_slug_or` | `array` | No | `[]` | Return results from companies that have mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |
| `payload.technology_slug_and` | `array` | No | `[]` | Return results from companies that have mentioned all of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |
| `payload.technology_slug_not` | `array` | No | `[]` | Return results from companies that haven't mentioned any of these keywords in their jobs. Case sensitive. Pass slugs. Check out all the keywords we track at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |

> [!NOTE]
>
> This input schema is too large for an inline display. Read the complete live contract with `deepline describe theirstack_company_search --json`.

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.metadata` | `object` | Yes | — | — |
| `result.data.metadata.total_results` | `integer \| null` | No | — | Total number of results |
| `result.data.metadata.truncated_results` | `integer \| null` | No | `0` | Number of results that were not returned because the user doesn't have enough credits to fetch them all the possible results the API could have returned |
| `result.data.metadata.truncated_companies` | `integer \| null` | No | `0` | Number of companies that were not returned because the user doesn't have enough credits to fetch all the possible results the API could have returned |
| `result.data.metadata.total_companies` | `integer \| null` | No | — | Total number of companies |
| `result.data.data` | `array` | Yes | — | — |
| `result.data.data[].id` | `string` | Yes | — | Company ID |
| `result.data.data[].name` | `string` | Yes | — | Company name |
| `result.data.data[].domain` | `string \| null` | No | — | Company domain |
| `result.data.data[].industry` | `string \| null` | No | — | Industry of the company |
| `result.data.data[].country` | `string \| null` | No | — | Country of the company's HQ |
| `result.data.data[].country_code` | `string \| null` | No | — | ISO2 country code. E.g. "US" |
| `result.data.data[].employee_count` | `integer \| null` | No | — | Number of employees of the company |
| `result.data.data[].logo` | `string \| null` | No | — | Stable CDN-hosted company logo URL suitable for display in applications |
| `result.data.data[].num_jobs` | `integer` | No | `0` | Number of jobs from this company in our database |
| `result.data.data[].num_technologies` | `integer` | No | `0` | Number of technologies mentioned in the jobs of this company |
| `result.data.data[].num_keywords` | `integer` | No | `0` | Number of distinct keywords (technologies + buying intent topics) found in this company's jobs |
| `result.data.data[].num_buying_intent_topics` | `integer` | No | `0` | Number of distinct buying intent topic keywords found in this company's jobs |
| `result.data.data[].possible_domains` | `array` | No | `[]` | List of possible domains for the company |
| `result.data.data[].url` | `string \| null` | No | — | Company domain. Same as the "domain" field. Will be deprecated in the future. |
| `result.data.data[].industry_id` | `integer \| null` | No | — | Code of the industry. One of LinkedIn's Industry Codes V2 from [https://learn.microsoft.com/en-us/linkedin/shared/references/reference-tables/industry-codes-v2](https://learn.microsoft.com/en-us/linkedin/shared/references/reference-tables/industry-codes-v2) |
| `result.data.data[].linkedin_url` | `string \| null` | No | — | — |
| `result.data.data[].num_jobs_last_30_days` | `integer` | No | `0` | Number of jobs from this company in our database posted in the last 30 days |
| `result.data.data[].num_jobs_found` | `integer \| null` | No | — | When filtering companies by jobs, number of jobs found for this company |
| `result.data.data[].yc_batch` | `string \| null` | No | — | If the company went through YC, this is its batch |
| `result.data.data[].apollo_id` | `string \| null` | No | — | ID of the company in Apollo |
| `result.data.data[].linkedin_id` | `string \| null` | No | — | ID of the company in LinkedIn |
| `result.data.data[].url_source` | `string \| null` | No | — | Source of the company URL |
| `result.data.data[].is_recruiting_agency` | `boolean \| null` | No | — | Is a recruiting agency |
| `result.data.data[].founded_year` | `integer \| null` | No | — | Year the company was founded |
| `result.data.data[].annual_revenue_usd` | `number \| null` | No | — | Annual revenue of the company in USD |
| `result.data.data[].annual_revenue_usd_readable` | `string \| null` | No | — | Annual revenue of the company in USD, formated as an easily readable string |
| `result.data.data[].total_funding_usd` | `integer \| null` | No | — | Funding of the company in USD |
| `result.data.data[].last_funding_round_date` | `string \| null` | No | — | Date of the last funding round of the company Format: `date`. |
| `result.data.data[].last_funding_round_amount_readable` | `string \| null` | No | — | Amount of the last funding round of the company, formated as an easily readable string |
| `result.data.data[].employee_count_range` | `string \| null` | No | — | Number range of employees at the company |
| `result.data.data[].long_description` | `string \| null` | No | — | Short description of the company |
| `result.data.data[].seo_description` | `string \| null` | No | — | SEO description of the company, extracted from their website |
| `result.data.data[].city` | `string \| null` | No | — | City of the company's HQ |
| `result.data.data[].postal_code` | `string \| null` | No | — | Postal code of the company's HQ |
| `result.data.data[].company_keywords` | `array \| null` | No | — | Company keywords, related to what the company does. Deprecated: use company\_tags instead. |
| `result.data.data[].company_tags` | `array` | No | `[]` | Company keywords, related to what the company does |
| `result.data.data[].alexa_ranking` | `integer \| null` | No | — | Alexa ranking |
| `result.data.data[].publicly_traded_symbol` | `string \| null` | No | — | — |
| `result.data.data[].publicly_traded_exchange` | `string \| null` | No | — | — |
| `result.data.data[].investors` | `array \| null` | No | — | List of investors in this company |
| `result.data.data[].funding_stage` | `"angel" \| "convertible_note" \| "debt_financing" \| "equity_crowdfunding" \| "other" \| "private_equity" \| "seed" \| "series_a" \| "series_b" \| "series_c" \| "series_d" \| "series_e" \| "series_f" \| "series_g" \| "series_h" \| "venture_round_not_specified" \| "series_i" \| "series_j" \| "undisclosed" \| "series_unknown" \| "pre_seed" \| "post_ipo_secondary" \| "post_ipo_equity" \| "post_ipo_debt" \| "non_equity_assistance" \| "late_vc" \| "initial_coin_offering" \| "growth_equity_vc" \| "grant" \| "early_vc" \| "corporate_round" \| "secondary_market" \| "product_crowdfunding"` | No | — | Latest funding stage of the company Allowed: `angel`, `convertible_note`, `debt_financing`, `equity_crowdfunding`, `other`, `private_equity`, `seed`, `series_a`, `series_b`, `series_c`, `series_d`, `series_e`, `series_f`, `series_g`, `series_h`, `venture_round_not_specified`, `series_i`, `series_j`, `undisclosed`, `series_unknown`, `pre_seed`, `post_ipo_secondary`, `post_ipo_equity`, `post_ipo_debt`, `non_equity_assistance`, `late_vc`, `initial_coin_offering`, `growth_equity_vc`, `grant`, See the live schema for the complete constraint. |
| `result.data.data[].has_blurred_data` | `boolean` | No | `false` | Whether the returned object has company identifiable data blurred or not |
| `result.data.data[].keyword_slugs` | `array` | No | `[]` | Slugs of all keywords (technologies and buying intent topics) found in this company's jobs |

The table shows the first 50 fields. Use the live contract below for every field.

> [!NOTE]
>
> This output schema is too large for an inline display. Read the complete live contract with `deepline describe theirstack_company_search --json`.

## Deepline cost

* Pricing model: `per_result` (per result).
* Estimated Deepline credits: `1.66` per pricing unit.

## Related documentation

* [TheirStack provider guide](https://deepline.com/docs/providers/theirstack/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.