POST

Company Search Theirstack API

/v1/run/company_search.theirstack

Build an account list from TheirStack by the technologies, keywords and buying-intent topics a company mentions in its job posts, plus headcount, revenue, funding, industry and location. Billed per company returned.

Category enrichmentRequests / mo -Routing 1 lane ยท no failover
Get ~100 free requests

Pricing

One price, in dollars

pay per request ยท no subscription ยท fallbacks added as the catalog grows
โ†ณ One lane serves this endpoint today, so a failed call has nowhere to fail over to. Failed attempts are never billed. Uptime, latency and traffic are measured through the gateway, last 30 days.

Call it

Make your first request

POST /v1/run/company_search.theirstack ยท same shape for every API
import os, requests

res = requests.post(
    "https://api.getanyapi.com/v1/run/company_search.theirstack",
    headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"},
    json={},
)
print(res.json())
Open in
Get a free key
Sample response
{
  "data": {
    "companies": [
      {
        "alexaRanking": 1,
        "annualRevenueReadable": "example",
        "annualRevenueUsd": 19.99,
        "apolloId": "a1b2c3d4",
        "city": "San Francisco",
        "companyId": "Acme Inc",
        "companyKeywords": [
          "Acme Inc"
        ],
        "companyTags": [
          "Acme Inc"
        ],
        "country": "US",
        "countryCode": "US",
        "domain": "example.com",
        "employeeCount": 12500,
        "employeeCountRange": "example",
        "foundedYear": 2024,
        "fundingStage": "example",
        "hasBlurredData": true,
        "image": "https://example.com/image.jpg",
        "industry": "general",
        "industryId": "general",
        "investors": [
          "example"
        ],
        "isRecruitingAgency": true,
        "keywordSlugs": [
          "alex_rivera"
        ],
        "lastFundingRoundReadable": "example",
        "lastFundingRoundUtc": 12.5,
        "linkedinId": "https://example.com/page",
        "linkedinUrl": "https://example.com/page",
        "longDescription": "A short example description of this item.",
        "name": "Example title",
        "numBuyingIntentTopics": 42,
        "numJobs": 42,
        "numJobsFound": 42,
        "numJobsLast30Days": 42,
        "numKeywords": 42,
        "numTechnologies": 42,
        "possibleDomains": [
          "example.com"
        ],
        "postalCode": "94107",
        "publiclyTradedExchange": "example",
        "publiclyTradedSymbol": "example",
        "seoDescription": "A short example description of this item.",
        "technologiesFound": [
          {
            "category": "general",
            "categorySlug": "alex_rivera",
            "confidence": "a1b2c3d4",
            "firstFoundUtc": 12.5,
            "image": "https://example.com/image.jpg",
            "jobs": 42,
            "jobsLast180Days": 42,
            "jobsLast30Days": 42,
            "jobsLast7Days": 42,
            "lastFoundUtc": 12.5,
            "name": "Example title",
            "parentCategory": "general",
            "parentCategorySlug": "alex_rivera",
            "rankWithinCategory": 1,
            "relativeOccurrenceWithinCategory": 12.5,
            "score": 4.6,
            "slug": "alex_rivera",
            "thumbnail": "https://example.com/image.jpg",
            "type": "general"
          }
        ],
        "technologyNames": [
          "Example title"
        ],
        "technologySlugs": [
          "alex_rivera"
        ],
        "totalFundingUsd": 12500,
        "url": "https://example.com/page",
        "urlSource": "https://example.com/page",
        "ycBatch": "example"
      }
    ],
    "totalCompanies": 12500,
    "totalResults": 12500,
    "truncatedCompanies": 42,
    "truncatedResults": 248
  },
  "found": true
}
Response interface
interface CompanySearchTheirstackResponse {
  data: {
    companies: {
      alexaRanking?: number;
      annualRevenueReadable?: string;
      annualRevenueUsd?: number;
      apolloId?: string;
      city?: string;
      companyId?: string;
      companyKeywords?: string[];
      companyTags?: string[];
      country?: string;
      countryCode?: string;
      domain?: string;
      employeeCount?: number;
      employeeCountRange?: string;
      foundedYear?: number;
      fundingStage?: string;
      hasBlurredData?: boolean;
      image?: string;
      industry?: string;
      industryId?: string;
      investors?: string[];
      isRecruitingAgency?: boolean;
      keywordSlugs?: string[];
      lastFundingRoundReadable?: string;
      lastFundingRoundUtc?: number;
      linkedinId?: string;
      linkedinUrl?: string;
      longDescription?: string;
      name: string;
      numBuyingIntentTopics?: number;
      numJobs?: number;
      numJobsFound?: number;
      numJobsLast30Days?: number;
      numKeywords?: number;
      numTechnologies?: number;
      possibleDomains?: string[];
      postalCode?: string;
      publiclyTradedExchange?: string;
      publiclyTradedSymbol?: string;
      seoDescription?: string;
      technologiesFound?: {
        category?: string;
        categorySlug?: string;
        confidence?: string;
        firstFoundUtc?: number;
        image?: string;
        jobs?: number;
        jobsLast180Days?: number;
        jobsLast30Days?: number;
        jobsLast7Days?: number;
        lastFoundUtc?: number;
        name: string;
        parentCategory?: string;
        parentCategorySlug?: string;
        rankWithinCategory?: number;
        relativeOccurrenceWithinCategory?: number;
        score?: number;
        slug?: string;
        thumbnail?: string;
        type?: string;
      }[];
      technologyNames?: string[];
      technologySlugs?: string[];
      totalFundingUsd?: number;
      url?: string;
      urlSource?: string;
      ycBatch?: string;
    }[];
    totalCompanies?: number;
    totalResults?: number;
    truncatedCompanies?: number;
    truncatedResults?: number;
  } | null;
  found: boolean;
}

Full parameter and response reference - every field, type, and example for this endpoint.

Reference

Request, response, and price

Last verified 2026-09-03 ยท uptime and latency measured over 30d
POST /v1/run/company_search.theirstack
curl -X POST https://api.getanyapi.com/v1/run/company_search.theirstack \
  -H "Authorization: Bearer $ANYAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"companyDomainOr":["posthog.com"],"limit":1}'
FieldTypeExample value
Request body
companyCountryCodeNotarrayReturn companies whose HQ country code is not any of the ones passed here, case sensitive. Pass ISO2 country codes.
companyCountryCodeOrarrayReturn companies whose HQ country code is any of the ones passed here, case sensitive. Pass ISO2 country codes.
companyDescriptionPatternAccentInsensitivebooleanSet to True to make company description searches accent insensitive. For example, "รก" will match "a" as well.
companyDescriptionPatternNotarrayCase-insensitive patterns to match in the company description. Will return companies that match any of the patterns.
companyDescriptionPatternOrarrayCase-insensitive patterns to match in the company description. Will return companies that match any of the patterns.
companyDomainNotarrayOnly return companies that don't match these domains exactly. It accepts full urls (https://www.google.com/) and emails (john.polo@gmail.com).
companyDomainOrarray["posthog.com"]Only return companies that match these domains exactly. It accepts full urls (https://www.google.com/) and emails (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.
companyIdOrarrayOnly 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.
companyInvestorsOrarrayInvestors of the company
companyInvestorsPartialMatchOrarrayInvestors 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).
companyKeywordSlugAndarrayReturn 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
companyKeywordSlugNotarrayReturn 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
companyKeywordSlugOrarrayReturn 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
companyLinkedinUrlExistsboolean(Use `property_exists_or / property_exists_and` instead) Only return companies with a LinkedIn URL
companyLinkedinUrlOrarrayReturn companies whose LinkedIn URL matches any of the slugs passed here. Can also pass full LinkedIn company URLs.
companyListIdNotarrayReturn companies that don't belong to any of the company lists passed here
companyListIdOrarrayReturn companies that belong to any of the company lists passed here
companyLocationPatternOrarrayReturn 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.
companyNameCaseInsensitiveOrarrayOnly return companies that match these names exactly, case-insensitively.
companyNameNotarrayOnly return companies that don't match these names exactly, case-sensitively.
companyNameOrarrayOnly 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.
companyNamePartialMatchNotarrayCompany 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.
companyNamePartialMatchOrarrayCompany 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.
companyTagsOrarrayReturn companies that match any of these keywords
companyTechnologySlugAndarrayWill 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. Deprecated: use company_keyword_slug_and instead.
companyTechnologySlugNotarrayWill 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. Deprecated: use company_keyword_slug_not instead.
companyTechnologySlugOrarrayWill 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. Deprecated: use company_keyword_slug_or instead.
companyTypestringFilter by company type.
expandTechnologySlugsarraySpecify 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.
fundingStageOrarrayFunding 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', 'grant', 'early_vc', 'corporate_round', 'secondary_market', 'product_crowdfunding']
includeTotalResultsbooleanWhen 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.
industryIdNotarrayIndustry ids to exclude.You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries
industryIdOrarrayIndustry codes. You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries
industryNotarrayNames 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 WARNING: Deprecated parameter. Use the industry_id_not field instead.
industryOrarrayNames 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 WARNING: Deprecated parameter. Use the industry_id_or field instead.
jobFiltersstring
keywordSlugAndarrayReturn 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
keywordSlugNotarrayReturn 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
keywordSlugOrarrayReturn 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
lastFundingRoundDateGtestringOnly return companies whose last funding round date is after or on this date. Format: 'YYYY-MM-DD'
lastFundingRoundDateLtestringOnly return companies whose last funding round date is before or on this date. Format: 'YYYY-MM-DD'
limitinteger1Rows to return on this page, up to TheirStack's maximum of 500. Every row returned is billed.
maxEmployeeCountintegerMaximum number of employees in a company
maxEmployeeCountOrNullintegerMaximum number of employees in a company. If we don't have company size information, we will return it as well.
maxFundingUsdintegerMaximum company funding, in USD
maxRevenueUsdintegerMaximum company revenue, in USD
minEmployeeCountintegerMinimum number of employees in a company
minEmployeeCountOrNullintegerMinimum number of employees in a company. If we don't have company size information, we will return it as well.
minFundingUsdintegerMinimum company funding, in USD
minRevenueUsdintegerMinimum company revenue, in USD
offsetintegerNumber of results to skip. Required for offset-based pagination.
onlyYcCompaniesbooleanOnly return YC companies
orderByarrayList of column objects. You can pass several columns to order by, in order of priority. Only `field` is required, `desc` is True by default
pageintegerPage number. Required when using page-based pagination.
propertyExistsAndarrayReturn 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.
propertyExistsOrarrayReturn 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.
techFiltersstringFilter by technologies and buying intent topics detected for the company
technologySlugAndarrayReturn 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
technologySlugNotarrayReturn 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
technologySlugOrarrayReturn 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
Response
dataobjectThe matching rows plus TheirStack's result counters.
data.companiesobject[]Matching companies with TheirStack's firmographic record and the technology and keyword slugs found in their job posts.
data.companies[].alexaRankingintegerAlexa traffic rank for the company website.
data.companies[].annualRevenueReadablestringEstimated annual revenue as a display string, e.g. 4.2M.
data.companies[].annualRevenueUsdnumberEstimated annual revenue in USD.
data.companies[].apolloIdstringApollo's identifier for the same company.
data.companies[].citystringHeadquarters city.
data.companies[].companyIdstringTheirStack's own company identifier.
data.companies[].companyKeywordsstring[]Keywords TheirStack assigns the company.
data.companies[].companyTagsstring[]Tags TheirStack assigns the company.
data.companies[].countrystringHeadquarters country.
data.companies[].countryCodestringISO 3166-1 alpha-2 country code.
data.companies[].domainstringPrimary company domain.
data.companies[].employeeCountintegerEmployees TheirStack currently counts.
data.companies[].employeeCountRangestringEmployee headcount band, e.g. 201-500.
data.companies[].foundedYearintegerYear the company was founded.
data.companies[].fundingStagestringMost recent funding stage, e.g. series_b.
data.companies[].hasBlurredDatabooleanTrue when TheirStack redacted part of the record on this plan.
data.companies[].imagestringCompany logo URL.
data.companies[].industrystringCompany industry.
data.companies[].industryIdstringTheirStack's identifier for that industry.
data.companies[].investorsstring[]Investors TheirStack records for the company.
data.companies[].isRecruitingAgencybooleanTrue when TheirStack classifies the company as a recruiting agency rather than a direct employer.
data.companies[].keywordSlugsstring[]Keyword slugs found in the company's job posts. These are the values the keyword filters take.
data.companies[].lastFundingRoundReadablestringMost recent round size as a display string, e.g. $15M.
data.companies[].lastFundingRoundUtcnumberUTC epoch timestamp in seconds (Unix time) of the most recent funding round. Multiply by 1000 for a JS Date in milliseconds.
data.companies[].linkedinIdstringCompany LinkedIn numeric id.
data.companies[].linkedinUrlstringCompany LinkedIn page URL.
data.companies[].longDescriptionstringCompany description as the company writes it.
data.companies[].namestringCompany name.
data.companies[].numBuyingIntentTopicsintegerDistinct buying-intent topics detected in the company's job posts.
data.companies[].numJobsintegerJob posts TheirStack holds for the company, all time.
data.companies[].numJobsFoundintegerJob posts of this company that matched your job filters, when you sent any.
data.companies[].numJobsLast30DaysintegerJob posts published in the last 30 days.
data.companies[].numKeywordsintegerDistinct keywords detected in the company's job posts.
data.companies[].numTechnologiesintegerDistinct technologies detected in the company's job posts.
data.companies[].possibleDomainsstring[]Every domain TheirStack associates with the company.
data.companies[].postalCodestringHeadquarters postal code.
data.companies[].publiclyTradedExchangestringExchange the company lists on.
data.companies[].publiclyTradedSymbolstringStock ticker, for listed companies.
data.companies[].seoDescriptionstringMeta description from the company's website.
data.companies[].technologiesFoundobject[]The technologies from your technology filters that this company was matched on. Empty unless you filtered by technology.
data.companies[].technologiesFound[].categorystringCategory the technology sits in.
data.companies[].technologiesFound[].categorySlugstringSlug for that category.
data.companies[].technologiesFound[].confidencestringHow sure TheirStack is that the company uses it: high, medium or low.
data.companies[].technologiesFound[].firstFoundUtcnumberUTC epoch timestamp in seconds (Unix time) the technology was first seen. Multiply by 1000 for a JS Date in milliseconds.
data.companies[].technologiesFound[].imagestringTechnology logo URL.
data.companies[].technologiesFound[].jobsintegerJob posts mentioning the technology, all time.
data.companies[].technologiesFound[].jobsLast180DaysintegerJob posts mentioning it in the last 180 days.
data.companies[].technologiesFound[].jobsLast30DaysintegerJob posts mentioning it in the last 30 days.
data.companies[].technologiesFound[].jobsLast7DaysintegerJob posts mentioning it in the last 7 days.
data.companies[].technologiesFound[].lastFoundUtcnumberUTC epoch timestamp in seconds (Unix time) the technology was last seen. Multiply by 1000 for a JS Date in milliseconds.
data.companies[].technologiesFound[].namestringTechnology name.
data.companies[].technologiesFound[].parentCategorystringParent category.
data.companies[].technologiesFound[].parentCategorySlugstringSlug for that parent category.
data.companies[].technologiesFound[].rankWithinCategoryintegerRank among the company's technologies in the same category, 1 being the most used.
data.companies[].technologiesFound[].relativeOccurrenceWithinCategorynumberShare of the company's mentions within this category that are of this technology, 0 to 1.
data.companies[].technologiesFound[].scorenumberTheirStack's own relevance score for the match.
data.companies[].technologiesFound[].slugstringTechnology slug. This is the value the technology filters take.
data.companies[].technologiesFound[].thumbnailstringSmaller technology logo URL.
data.companies[].technologiesFound[].typestringWhether the row is a technology or a buying-intent keyword.
data.companies[].technologyNamesstring[]Human-readable names for those technologies.
data.companies[].technologySlugsstring[]Technology slugs found in the company's job posts. These are the values the technology filters take.
data.companies[].totalFundingUsdnumberTotal capital raised, in USD.
data.companies[].urlstringCompany website URL.
data.companies[].urlSourcestringWhere TheirStack sourced the company website URL.
data.companies[].ycBatchstringY Combinator batch, e.g. W20, for companies that went through it.
data.totalCompaniesintegerDistinct companies matching the filters. TheirStack computes it only when you send includeTotalResults.
data.totalResultsintegerRows matching the filters across all pages. TheirStack computes it only when you send includeTotalResults, and omits it otherwise.
data.truncatedCompaniesintegerCompanies TheirStack withheld because the plan's result ceiling was reached.
data.truncatedResultsintegerRows TheirStack withheld because the plan's result ceiling was reached.
foundbooleanFalse when nothing matched the filters.
Price
Price per request (ceiling)USD$9.96
Price /1k resultsUSD$199.20

FAQ

About the Company Search Theirstack API

The AnyAPI Company Search Theirstack API returns Company Search theirstack data as normalized JSON from one POST call to /v1/run/company_search.theirstack. Build an account list from TheirStack by the technologies, keywords and buying-intent topics a company mentions in its job posts, plus headcount, revenue, funding, industry and location. Billed per company returned. AnyAPI returns one normalized schema whichever source serves it. It costs $199.20 per 1,000 results, and never more than $9.96 for a single request, in US dollars with no subscription and no monthly minimum.

It costs $199.20 per 1,000 results, and never more than $9.96 for a single request, in US dollars with no subscription and no monthly minimum. You fund one USD wallet, each call draws it down, and a failed request costs $0.

Build an account list from TheirStack by the technologies, keywords and buying-intent topics a company mentions in its job posts, plus headcount, revenue, funding, industry and location. Billed per company returned. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.

Get started

Two ways to start on AnyAPI

Humans fund a USD wallet and pay per request. Agents point a coding agent at one URL and onboard themselves.

Get ~100 free requests
Works with
Terminal agentsClaude CodeCursorCodexMCP clients