---
title: "TheirStack / Get a company's tech stack"
description: "TheirStack tool theirstack-companies-technologies on looot: input fields, $0.0981 per call, output shape, and code to run it with curl, JavaScript or Python."
sidebar:
  hidden: true
---

{/* Generated by scripts/generate-api-reference.mjs from data/api-reference.json. Do not edit. */}

Lists the technologies a company uses, each with a confidence level (low, medium, high), the number of job posts that mention it, and the first and last dates it was seen. Send company_domain, company_name or company_linkedin_url, and limit (1 to 25). 3 TheirStack credits per company found; no charge when nothing is found. Send one of: company_domain, company_name, company_id, company_linkedin_url.

- **Tool id:** `theirstack-companies-technologies`
- **Provider:** [TheirStack](/providers/theirstack)
- **Job:** [List the tech stack and technologies a company's website uses](/reference/jobs/company-technographics) (`company.technographics`)
- **Price:** $0.0981 per call. A call that fails at the provider costs $0.

## Inputs

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `company_domain` | string | no | Only return companies that match this domain exactly. It accepts full urls (https://www.google.com/) and emails (john.polo@gmail.com). Example: "stripe.com" |
| `company_id` | string | no | Only return companies that match this TheirStack Company ID exactly. This ID is temporary and internal and will change in the future and become stable. Until then, it is only meant to be used internally by our UI (app.theirstack.com). For deduplication logic, use company_domain or company_linkedin_url instead. |
| `company_linkedin_url` | string | no | Return companies whose LinkedIn URL matches this URL exactly. |
| `company_name` | string | no | Only return companies that match this name exactly, case-sensitively. |
| `company_name_or` | array | no | Only return companies that match these names exactly, case-sensitively. Deprecated, use the `company_name` filter instead. |
| `confidence_or` | array | no | Returns technologies with any of these confidence values that the companies use them. Available values: "high", "medium", "low" |
| `first_date_found_gte` | string | no | Only return technologies where the first time they were found was after or on this date. Format: "YYYY-MM-DD" |
| `first_date_found_lte` | string | no | Only return technologies where the first time they were found was before or on this date. Format: "YYYY-MM-DD" |
| `include_total_results` | string | no | 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. |
| `keyword_category_slug_or` | array | no | Return companies that have mentioned any keyword from any of these categories in their jobs. Case sensitive. Pass slugs. Check out all keyword categories at [GET /v0/catalog/keywords/categories](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_categories_v0) |
| `keyword_parent_category_slug_or` | array | no | Return companies that have mentioned any keyword from any of these parent categories in their jobs. Case sensitive. Pass slugs. Check out all keyword categories at [GET /v0/catalog/keywords/categories](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_categories_v0) |
| `keyword_slug_or` | array | no | Return companies that have mentioned any of these keywords (technologies or buying intent topics) in their jobs. Case sensitive. Pass slugs. Check out all keywords at [GET /v0/catalog/keywords](https://theirstack.com/en/docs/api-reference/catalog/get_catalog_keywords_v0) |
| `last_date_found_gte` | string | no | Only return technologies where the last time they were found was after or on this date. Format: "YYYY-MM-DD" |
| `last_date_found_lte` | string | no | Only return technologies where the last time they were found was before or on this date. Format: "YYYY-MM-DD" |
| `limit` | integer | yes | Number of results per page Bounded 1-25 by looot; required, see endpoint description. Example: 5 |
| `max_jobs` | string | no | Maximum number of jobs found by each company using a technology |
| `max_rank` | string | no | The rank measures how common is a technology within its category. The technology most used among similar ones by a company will have a rank of 1, the second: 2, etc. This is useful to filter results by technology and get only results for the primary technology. |
| `min_jobs` | string | no | Minimum number of jobs found by each company using a technology |
| `min_relative_occurrence` | string | no | Minimum value of relative_occurrence_within_category for each technology. Higher values increase the probability that this technology is actually used by the company, because it means a higher percentage of mentions to technologies among this category are of this technology. |
| `offset` | integer | no | Number of results to skip. Required for [offset-based pagination](https://theirstack.com/en/docs/api-reference/pagination). Example: 0 |
| `order_by` | array | no | 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. |
| `page` | integer | no | Page number. Required when using [page-based pagination](https://theirstack.com/en/docs/api-reference/pagination). Example: 0 |
| `technology_category_slug_or` | array | no | Deprecated: use `keyword_category_slug_or` instead. Will return companies that have mentioned any keyword from any of these categories in their jobs. Case sensitive. Pass slugs. |
| `technology_parent_category_slug_or` | array | no | Deprecated: use `keyword_parent_category_slug_or` instead. Will return companies that have mentioned any keyword from any of these parent categories in their jobs. Case sensitive. Pass slugs. |
| `technology_slug_or` | array | no | Deprecated: use `keyword_slug_or` instead. Will return companies that have mentioned any of these technologies in their jobs. Case sensitive. Pass slugs. |

## Output

Shape of the run's `result`, checked against 4 real answers:

```txt
{ data: { jobs, confidence, technology: { logo, name, slug, type, category, cate... ...
```

The shape is cut here. Signed in, `looot inspect theirstack-companies-technologies` prints all of it.

## Run it

Every call needs your API token in `LOOOT_TOKEN`; [Sign in](/get-started/sign-in#use-the-token-in-scripts-and-agents) shows how to get one. Each run also needs a new idempotency key, so a retry never pays twice. With `wait: 30` the answer comes back inline when the run ends within 30 seconds. Otherwise you get the running run back: poll `GET /v1/runs/<runId>`.

Example input with placeholder values:

<CodeGroup>

```bash curl
curl -X POST "https://api.looot.ai/v1/runs" \
  -H "Authorization: Bearer $LOOOT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"endpointId":"theirstack-companies-technologies","input":{"limit":5,"page":0,"offset":0,"max_jobs":null,"max_rank":null,"min_jobs":null,"company_id":"Example Inc","company_name":"Example Inc","company_domain":"stripe.com","company_name_or":[],"last_date_found_gte":null,"last_date_found_lte":null,"company_linkedin_url":"https://www.linkedin.com/in/janedoe","first_date_found_gte":null,"first_date_found_lte":null,"min_relative_occurrence":null},"wait":30}'
```

```js JavaScript
const response = await fetch("https://api.looot.ai/v1/runs", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LOOOT_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    endpointId: "theirstack-companies-technologies",
    input: {
      limit: 5,
      page: 0,
      offset: 0,
      max_jobs: null,
      max_rank: null,
      min_jobs: null,
      company_id: "Example Inc",
      company_name: "Example Inc",
      company_domain: "stripe.com",
      company_name_or: [],
      last_date_found_gte: null,
      last_date_found_lte: null,
      company_linkedin_url: "https://www.linkedin.com/in/janedoe",
      first_date_found_gte: null,
      first_date_found_lte: null,
      min_relative_occurrence: null,
    },
    wait: 30,
  }),
});
const run = await response.json();
console.log(run.status, run.result);
```

```python Python
import os
import uuid

import requests

response = requests.post(
    "https://api.looot.ai/v1/runs",
    headers={
        "Authorization": f"Bearer {os.environ['LOOOT_TOKEN']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "endpointId": "theirstack-companies-technologies",
        "input": {
            "limit": 5,
            "page": 0,
            "offset": 0,
            "max_jobs": None,
            "max_rank": None,
            "min_jobs": None,
            "company_id": "Example Inc",
            "company_name": "Example Inc",
            "company_domain": "stripe.com",
            "company_name_or": [],
            "last_date_found_gte": None,
            "last_date_found_lte": None,
            "company_linkedin_url": "https://www.linkedin.com/in/janedoe",
            "first_date_found_gte": None,
            "first_date_found_lte": None,
            "min_relative_occurrence": None,
        },
        "wait": 30,
    },
    timeout=90,
)
run = response.json()
print(run["status"], run.get("result"))
```

</CodeGroup>

To let looot pick among every provider of this job instead, send `job:company.technographics` as `endpointId`; see [the job page](/reference/jobs/company-technographics).
