Company Search Theirstack API
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
Pricing
One price, in dollars
pay per request ยท no subscription ยท fallbacks added as the catalog growsCall it
Make your first request
POST /v1/run/company_search.theirstack ยท same shape for every APIimport 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())
{
"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
}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 30dcurl -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}'| Field | Type | Example value |
|---|---|---|
| Request body | ||
| companyCountryCodeNot | array | Return companies whose HQ country code is not any of the ones passed here, case sensitive. Pass ISO2 country codes. |
| companyCountryCodeOr | array | Return companies whose HQ country code is any of the ones passed here, case sensitive. Pass ISO2 country codes. |
| companyDescriptionPatternAccentInsensitive | boolean | Set to True to make company description searches accent insensitive. For example, "รก" will match "a" as well. |
| companyDescriptionPatternNot | array | Case-insensitive patterns to match in the company description. Will return companies that match any of the patterns. |
| companyDescriptionPatternOr | array | Case-insensitive patterns to match in the company description. Will return companies that match any of the patterns. |
| companyDomainNot | array | Only return companies that don't match these domains exactly. It accepts full urls (https://www.google.com/) and emails (john.polo@gmail.com). |
| companyDomainOr | array | ["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. |
| companyIdOr | array | 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. |
| companyInvestorsOr | array | Investors of the company |
| companyInvestorsPartialMatchOr | array | 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). |
| companyKeywordSlugAnd | array | 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 |
| companyKeywordSlugNot | array | 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 |
| companyKeywordSlugOr | array | 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 |
| companyLinkedinUrlExists | boolean | (Use `property_exists_or / property_exists_and` instead) Only return companies with a LinkedIn URL |
| companyLinkedinUrlOr | array | Return companies whose LinkedIn URL matches any of the slugs passed here. Can also pass full LinkedIn company URLs. |
| companyListIdNot | array | Return companies that don't belong to any of the company lists passed here |
| companyListIdOr | array | Return companies that belong to any of the company lists passed here |
| companyLocationPatternOr | array | 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. |
| companyNameCaseInsensitiveOr | array | Only return companies that match these names exactly, case-insensitively. |
| companyNameNot | array | Only return companies that don't match these names exactly, case-sensitively. |
| companyNameOr | array | 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. |
| companyNamePartialMatchNot | array | 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. |
| companyNamePartialMatchOr | array | 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. |
| companyTagsOr | array | Return companies that match any of these keywords |
| companyTechnologySlugAnd | array | 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. Deprecated: use company_keyword_slug_and instead. |
| companyTechnologySlugNot | array | 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. Deprecated: use company_keyword_slug_not instead. |
| companyTechnologySlugOr | array | 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. Deprecated: use company_keyword_slug_or instead. |
| companyType | string | Filter by company type. |
| expandTechnologySlugs | array | 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. |
| fundingStageOr | array | 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', 'grant', 'early_vc', 'corporate_round', 'secondary_market', 'product_crowdfunding'] |
| includeTotalResults | boolean | 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. |
| industryIdNot | array | Industry ids to exclude.You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries |
| industryIdOr | array | Industry codes. You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries |
| industryNot | array | 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 WARNING: Deprecated parameter. Use the industry_id_not field instead. |
| industryOr | array | 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 WARNING: Deprecated parameter. Use the industry_id_or field instead. |
| jobFilters | string | |
| keywordSlugAnd | array | 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 |
| keywordSlugNot | array | 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 |
| keywordSlugOr | array | 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 |
| lastFundingRoundDateGte | string | Only return companies whose last funding round date is after or on this date. Format: 'YYYY-MM-DD' |
| lastFundingRoundDateLte | string | Only return companies whose last funding round date is before or on this date. Format: 'YYYY-MM-DD' |
| limit | integer | 1Rows to return on this page, up to TheirStack's maximum of 500. Every row returned is billed. |
| maxEmployeeCount | integer | Maximum number of employees in a company |
| maxEmployeeCountOrNull | integer | Maximum number of employees in a company. If we don't have company size information, we will return it as well. |
| maxFundingUsd | integer | Maximum company funding, in USD |
| maxRevenueUsd | integer | Maximum company revenue, in USD |
| minEmployeeCount | integer | Minimum number of employees in a company |
| minEmployeeCountOrNull | integer | Minimum number of employees in a company. If we don't have company size information, we will return it as well. |
| minFundingUsd | integer | Minimum company funding, in USD |
| minRevenueUsd | integer | Minimum company revenue, in USD |
| offset | integer | Number of results to skip. Required for offset-based pagination. |
| onlyYcCompanies | boolean | Only return YC companies |
| orderBy | array | 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 | Page number. Required when using page-based pagination. |
| propertyExistsAnd | array | 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. |
| propertyExistsOr | array | 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. |
| techFilters | string | Filter by technologies and buying intent topics detected for the company |
| technologySlugAnd | array | 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 |
| technologySlugNot | array | 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 |
| technologySlugOr | array | 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 |
| Response | ||
| data | object | The matching rows plus TheirStack's result counters. |
| data.companies | object[] | Matching companies with TheirStack's firmographic record and the technology and keyword slugs found in their job posts. |
| data.companies[].alexaRanking | integer | Alexa traffic rank for the company website. |
| data.companies[].annualRevenueReadable | string | Estimated annual revenue as a display string, e.g. 4.2M. |
| data.companies[].annualRevenueUsd | number | Estimated annual revenue in USD. |
| data.companies[].apolloId | string | Apollo's identifier for the same company. |
| data.companies[].city | string | Headquarters city. |
| data.companies[].companyId | string | TheirStack's own company identifier. |
| data.companies[].companyKeywords | string[] | Keywords TheirStack assigns the company. |
| data.companies[].companyTags | string[] | Tags TheirStack assigns the company. |
| data.companies[].country | string | Headquarters country. |
| data.companies[].countryCode | string | ISO 3166-1 alpha-2 country code. |
| data.companies[].domain | string | Primary company domain. |
| data.companies[].employeeCount | integer | Employees TheirStack currently counts. |
| data.companies[].employeeCountRange | string | Employee headcount band, e.g. 201-500. |
| data.companies[].foundedYear | integer | Year the company was founded. |
| data.companies[].fundingStage | string | Most recent funding stage, e.g. series_b. |
| data.companies[].hasBlurredData | boolean | True when TheirStack redacted part of the record on this plan. |
| data.companies[].image | string | Company logo URL. |
| data.companies[].industry | string | Company industry. |
| data.companies[].industryId | string | TheirStack's identifier for that industry. |
| data.companies[].investors | string[] | Investors TheirStack records for the company. |
| data.companies[].isRecruitingAgency | boolean | True when TheirStack classifies the company as a recruiting agency rather than a direct employer. |
| data.companies[].keywordSlugs | string[] | Keyword slugs found in the company's job posts. These are the values the keyword filters take. |
| data.companies[].lastFundingRoundReadable | string | Most recent round size as a display string, e.g. $15M. |
| data.companies[].lastFundingRoundUtc | number | UTC epoch timestamp in seconds (Unix time) of the most recent funding round. Multiply by 1000 for a JS Date in milliseconds. |
| data.companies[].linkedinId | string | Company LinkedIn numeric id. |
| data.companies[].linkedinUrl | string | Company LinkedIn page URL. |
| data.companies[].longDescription | string | Company description as the company writes it. |
| data.companies[].name | string | Company name. |
| data.companies[].numBuyingIntentTopics | integer | Distinct buying-intent topics detected in the company's job posts. |
| data.companies[].numJobs | integer | Job posts TheirStack holds for the company, all time. |
| data.companies[].numJobsFound | integer | Job posts of this company that matched your job filters, when you sent any. |
| data.companies[].numJobsLast30Days | integer | Job posts published in the last 30 days. |
| data.companies[].numKeywords | integer | Distinct keywords detected in the company's job posts. |
| data.companies[].numTechnologies | integer | Distinct technologies detected in the company's job posts. |
| data.companies[].possibleDomains | string[] | Every domain TheirStack associates with the company. |
| data.companies[].postalCode | string | Headquarters postal code. |
| data.companies[].publiclyTradedExchange | string | Exchange the company lists on. |
| data.companies[].publiclyTradedSymbol | string | Stock ticker, for listed companies. |
| data.companies[].seoDescription | string | Meta description from the company's website. |
| data.companies[].technologiesFound | object[] | The technologies from your technology filters that this company was matched on. Empty unless you filtered by technology. |
| data.companies[].technologiesFound[].category | string | Category the technology sits in. |
| data.companies[].technologiesFound[].categorySlug | string | Slug for that category. |
| data.companies[].technologiesFound[].confidence | string | How sure TheirStack is that the company uses it: high, medium or low. |
| data.companies[].technologiesFound[].firstFoundUtc | number | UTC epoch timestamp in seconds (Unix time) the technology was first seen. Multiply by 1000 for a JS Date in milliseconds. |
| data.companies[].technologiesFound[].image | string | Technology logo URL. |
| data.companies[].technologiesFound[].jobs | integer | Job posts mentioning the technology, all time. |
| data.companies[].technologiesFound[].jobsLast180Days | integer | Job posts mentioning it in the last 180 days. |
| data.companies[].technologiesFound[].jobsLast30Days | integer | Job posts mentioning it in the last 30 days. |
| data.companies[].technologiesFound[].jobsLast7Days | integer | Job posts mentioning it in the last 7 days. |
| data.companies[].technologiesFound[].lastFoundUtc | number | UTC epoch timestamp in seconds (Unix time) the technology was last seen. Multiply by 1000 for a JS Date in milliseconds. |
| data.companies[].technologiesFound[].name | string | Technology name. |
| data.companies[].technologiesFound[].parentCategory | string | Parent category. |
| data.companies[].technologiesFound[].parentCategorySlug | string | Slug for that parent category. |
| data.companies[].technologiesFound[].rankWithinCategory | integer | Rank among the company's technologies in the same category, 1 being the most used. |
| data.companies[].technologiesFound[].relativeOccurrenceWithinCategory | number | Share of the company's mentions within this category that are of this technology, 0 to 1. |
| data.companies[].technologiesFound[].score | number | TheirStack's own relevance score for the match. |
| data.companies[].technologiesFound[].slug | string | Technology slug. This is the value the technology filters take. |
| data.companies[].technologiesFound[].thumbnail | string | Smaller technology logo URL. |
| data.companies[].technologiesFound[].type | string | Whether the row is a technology or a buying-intent keyword. |
| data.companies[].technologyNames | string[] | Human-readable names for those technologies. |
| data.companies[].technologySlugs | string[] | Technology slugs found in the company's job posts. These are the values the technology filters take. |
| data.companies[].totalFundingUsd | number | Total capital raised, in USD. |
| data.companies[].url | string | Company website URL. |
| data.companies[].urlSource | string | Where TheirStack sourced the company website URL. |
| data.companies[].ycBatch | string | Y Combinator batch, e.g. W20, for companies that went through it. |
| data.totalCompanies | integer | Distinct companies matching the filters. TheirStack computes it only when you send includeTotalResults. |
| data.totalResults | integer | Rows matching the filters across all pages. TheirStack computes it only when you send includeTotalResults, and omits it otherwise. |
| data.truncatedCompanies | integer | Companies TheirStack withheld because the plan's result ceiling was reached. |
| data.truncatedResults | integer | Rows TheirStack withheld because the plan's result ceiling was reached. |
| found | boolean | False when nothing matched the filters. |
| Price | ||
| Price per request (ceiling) | USD | $9.96 |
| Price /1k results | USD | $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.
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.