Skip to content
looot docs
Esc
↑↓navigate↵open⌘Jpreview
On this page

TheirStack / Get a company's tech stack

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.

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.

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
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
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
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. 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. 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:

{ 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 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:

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}'
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);
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"))

To let looot pick among every provider of this job instead, send job:company.technographics as endpointId; see the job page.

Was this page helpful?