Companies

Search Companies

Changed on

Search and filter companies by firmographics (industry, country, employee count, revenue), funding, the technologies they use (technographics) and hiring signals (the roles and technologies they are hiring for). Use it to find the companies that match a profile, such as the companies in a country that use a technology or are hiring for a role. Returns the matching companies along with the jobs and technology objects that matched the filters you passed.

It consumes 3 API credits for each company returned in the response.

Useful resources: Preview data mode, Counting results

The response includes both company data and any matching jobs or technologies based on your filters.

post/v1/companies/search

Request

  • Base URL
    https://api.theirstack.com
  • URL
    https://api.theirstack.com/v1/companies/search
  • Auth
    HTTP bearer

Request body

expand_technology_slugsstring[]

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 we haven't detected it in that company's jobs. This feature is useful for enriching company data with their technology stack details.

company_name_orstring[]

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.

company_name_case_insensitive_orstring[]

Only return companies that match these names exactly, case-insensitively.

company_id_orstring[]

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.

company_id_notstring[]

Exclude companies that match these IDs. This filter acts as a NOT filter, so if you pass more than one company ID, it will exclude companies that match any of the IDs.

company_domain_orstring[]

Only return companies that match these domains exactly. It accepts full urls (https://www.google.com/) and emails (andrew@stripe.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.

company_domain_notstring[]

Only return companies that don't match these domains exactly. It accepts full urls (https://www.google.com/) and emails (andrew@stripe.com).

company_name_notstring[]

Only return companies that don't match these names exactly, case-sensitively.

company_name_partial_match_orstring[]

Company names. Will return companies whose name contains any of the substrings passed here, case-insensitively. For example, if you pass "google", it will return "Google", "Google LLC", "Google Inc", etc.

company_name_partial_match_notstring[]

Company names. Will return companies whose name doesn't contain any of the substrings passed here, case-insensitively. For example, if you pass 'google', it will exclude 'Google', 'Google LLC', 'Google Inc', etc.

company_linkedin_url_orstring[]

Return companies whose LinkedIn page matches any of the values passed here. Both forms of LinkedIn company URL work — the vanity slug (https://www.linkedin.com/company/google/) and the numeric company ID (https://www.linkedin.com/company/1038) — as do a bare slug (google) and a bare numeric ID (1038). A numeric value is matched against the company's LinkedIn ID and its slug, so you do not need to know which of the two you are holding. We have a LinkedIn slug for ~26% of companies and a numeric LinkedIn ID for ~14%, so if you have the company's domain, company_domain_or matches more often.

blur_company_databoolean

Enable preview mode to return blurred data without consuming credits in the TheirStack app. Deprecated: preview mode is being retired and will stop working over the API. It still works on paid workspaces created before August 11, 2026 and is not available on any other workspace; new access is only granted to sales intelligence products that preview data to their end users before unlocking it, by opening a support ticket at https://app.theirstack.com/support/new. When enabled, sensitive company fields (name, domain, URLs, descriptions) and job-specific fields (description, URLs) are blurred. Not available when filtering by company identifiers (company_name, company_domain, company_linkedin_url, company_id). Learn more in the preview mode documentation.

property_exists_orstring[]

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.

property_exists_andstring[]

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.

offsetinteger

Number of results to skip. Required for offset-based pagination.

pageinteger

Page number. Required when using page-based pagination.

limitinteger

Number of results per page

cursorstring nullable

Cursor for pagination

company_description_pattern_orstring[]

Case-insensitive patterns to match in the company description. Will return companies that match any of the patterns.

company_description_pattern_notstring[]

Case-insensitive patterns to match in the company description. Will exclude companies that match any of the patterns.

company_description_pattern_accent_insensitiveboolean nullable

Set to True to make company description searches accent insensitive. For example, "á" will match "a" as well.

min_revenue_usdinteger nullable

Minimum company revenue, in USD

max_revenue_usdinteger nullable

Maximum company revenue, in USD

min_employee_countinteger nullable

Minimum number of employees in a company

max_employee_countinteger nullable

Maximum number of employees in a company

min_employee_count_or_nullinteger nullable

Minimum number of employees in a company. If we don't have company size information, we will return it as well.

max_employee_count_or_nullinteger nullable

Maximum number of employees in a company. If we don't have company size information, we will return it as well.

min_funding_usdinteger nullable

Minimum company funding, in USD

max_funding_usdinteger nullable

Maximum company funding, in USD

funding_stage_orstring[]

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']

industry_orstring[]

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. 
industry_notstring[]

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. 
industry_id_orinteger[]

Industry codes. You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries

industry_id_notinteger[]

Industry ids to exclude. You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries

industry_id_not_or_nullinteger[]

Industry ids to exclude. Companies whose industry we don't know are returned as well. You can use any of LinkedIn's Industry Codes V2 or GET /v0/catalog/industries

company_tags_orstring[]

Return companies that match any of these keywords

company_type'recruiting_agency' | 'direct_employer' | 'all' nullable

Filter by company type.

company_investors_orstring[]

Investors of the company

company_investors_partial_match_orstring[]

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

company_technology_slug_orstring[]

Return results from companies that have mentioned any of these technologies in their jobs (in job searches, not necessarily in the jobs returned). Case sensitive. Pass slugs. Check out all the technologies we track at GET /v0/catalog/keywords with keyword_type=technology

company_technology_slug_andstring[]

Return results from companies that have mentioned all of these technologies in their jobs (in job searches, not necessarily in the jobs returned). Case sensitive. Pass slugs. Check out all the technologies we track at GET /v0/catalog/keywords with keyword_type=technology

company_technology_slug_notstring[]

Return results from companies 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/keywords with keyword_type=technology

company_keyword_slug_orstring[]

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

company_keyword_slug_andstring[]

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

company_keyword_slug_notstring[]

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

only_yc_companiesboolean nullable

Only return YC companies

company_location_pattern_orstring[]

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.

company_country_code_orstring[]

Return companies whose HQ country code is any of the ones passed here, case sensitive. Pass ISO2 country codes.

company_country_code_notstring[]

Return companies whose HQ country code is not any of the ones passed here, case sensitive. Pass ISO2 country codes.

company_country_code_not_or_nullstring[]

Return companies whose HQ country code is not any of the ones passed here, case sensitive. Companies whose country we don't know are returned as well. Pass ISO2 country codes.

company_list_id_orinteger[]

Return companies that belong to any of the company lists passed here

company_list_id_notinteger[]

Return companies that don't belong to any of the company lists passed here

company_linkedin_url_existsboolean nullable

(Use property_exists_or / property_exists_and instead) Only return companies with a LinkedIn URL

revealed_company_databoolean nullable

Filter companies (or jobs by their company) by whether the caller's team has them revealed. A company counts as revealed for 90 days after the team reveals it. true returns only revealed companies; false returns only companies the team has not revealed in the last 90 days, including the ones it never revealed.

company_revealed_at_gtestring date-time nullable

Filter companies (or jobs by their company) by when the company was revealed in the caller's account. Returns only companies revealed at or after this ISO-8601 timestamp. Scoped to the caller's team — has no effect for companies the team has never revealed.

company_revealed_at_ltestring date-time nullable

Filter companies (or jobs by their company) by when the company was revealed in the caller's account. Returns only companies revealed at or before this ISO-8601 timestamp. Scoped to the caller's team — has no effect for companies the team has never revealed.

company_not_revealed_at_gtestring date-time nullable

Exclude companies (or jobs by their company) revealed in the caller's account at or after this ISO-8601 timestamp. Combine with company_not_revealed_at_lte to exclude a window. Companies the team never revealed are kept.

company_not_revealed_at_ltestring date-time nullable

Exclude companies (or jobs by their company) revealed in the caller's account at or before this ISO-8601 timestamp. Combine with company_not_revealed_at_gte to exclude a window. Companies the team never revealed are kept.

company_revealed_within_hoursinteger nullable

Return only companies (or jobs by their company) revealed in the caller's account in the last N hours, counted back from when the search runs. 168 is the last 7 days. Saved searches and webhooks resolve the window on every run. It counts every reveal in the window: with N above 90 days (2160 hours) it also returns companies whose 90-day reveal has expired, which cost a credit to see again.

company_not_revealed_within_hoursinteger nullable

Exclude companies (or jobs by their company) revealed in the caller's account in the last N hours, counted back from when the search runs. 168 hides what the team revealed in the last 7 days; companies revealed earlier, or never, are kept. Viewing an already-revealed company again does not restart its window. Unlike revealed_company_data=false, which excludes the whole 90-day reveal period, this only excludes reveals inside the window.

last_funding_round_date_ltestring date nullable

Only return companies whose last funding round date is before or on this date. Format: 'YYYY-MM-DD'

last_funding_round_date_gtestring date nullable

Only return companies whose last funding round date is after or on this date. Format: 'YYYY-MM-DD'

include_total_resultsboolean

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.

min_num_jobs_foundinteger nullable

Minimum number of jobs matching job_filters a company must have to be returned (thresholds the num_jobs_found count). Requires job_filters with a date filter, so the count is always computed over the date-bounded set of matching jobs.

Example request

{
  "order_by": [
    {
      "field": "relevance"
    }
  ],
  "company_name_or": [],
  "company_name_case_insensitive_or": [],
  "company_id_or": [],
  "company_id_not": [],
  "company_domain_or": [],
  "company_domain_not": [],
  "company_name_not": [],
  "company_name_partial_match_or": [],
  "company_name_partial_match_not": [],
  "company_linkedin_url_or": [],
  "property_exists_or": [],
  "property_exists_and": [],
  "limit": 25,
  "job_filters": {
    "job_title_or": [],
    "job_title_not": [],
    "job_title_pattern_and": [],
    "job_title_pattern_or": [],
    "job_title_pattern_not": [],
    "job_country_code_or": [],
    "job_country_code_not": [],
    "job_description_pattern_or": [],
    "job_description_pattern_not": [],
    "job_description_pattern_and": [],
    "job_description_contains_or": [],
    "job_description_contains_not": [],
    "job_description_pattern_case_sensitive_or": [],
    "workplace_types_or": [],
    "job_id_or": [],
    "job_id_not": [],
    "job_seniority_or": [],
    "job_location_pattern_or": [],
    "job_location_pattern_not": [],
    "job_location_or": [],
    "job_location_not": [],
    "url_domain_or": [],
    "url_domain_not": [],
    "employment_statuses_or": [],
    "property_exists_or": [],
    "property_exists_and": []
  }
}

Response

Successful Response

Example response

{
  "metadata": {
    "total_results": 2034,
    "total_companies": 1045
  },
  "data": [
    {
      "id": "google",
      "name": "Google",
      "domain": "google.com",
      "industry": "internet",
      "country": "United States",
      "employee_count": 7543,
      "logo": "https://example.com/logo.png",
      "num_jobs": 746,
      "num_technologies": 746,
      "url": "google.com",
      "linkedin_url": "http://www.linkedin.com/company/google",
      "num_jobs_last_30_days": 34,
      "num_jobs_found": 23,
      "yc_batch": "W21",
      "apollo_id": "5b839bd0324d4445051f9a5a",
      "founded_year": 2019,
      "annual_revenue_usd": 189000000,
      "annual_revenue_usd_readable": "189M",
      "total_funding_usd": 500000,
      "last_funding_round_date": "2020-01-01",
      "last_funding_round_amount_readable": "$1.2M",
      "employee_count_range": "1001-5000",
      "long_description": "Google is a California-based multinational technology company that offers internet-related services such as a search engine, online advertising and cloud computing.",
      "city": "Mountain View",
      "postal_code": "28040",
      "alexa_ranking": 1,
      "publicly_traded_symbol": "GOOG",
      "publicly_traded_exchange": "NASDAQ",
      "keyword_slugs": [
        "kafka",
        "elasticsearch",
        "lead-generation"
      ],
      "technology_slugs": [
        "kafka",
        "elasticsearch"
      ],
      "technology_names": [
        "Kafka",
        "Elasticsearch"
      ],
      "technologies_found": [
        {
          "technology": {
            "name": "PostgreSQL",
            "category": "Relational Database",
            "slug": "kafka",
            "category_slug": "message-queue",
            "parent_category": "Data Stores",
            "parent_category_slug": "data-stores"
          },
          "jobs": 54,
          "company_name": "Google"
        }
      ],
      "jobs_found": [
        {
          "id": 1234,
          "job_title": "Senior Data Engineer",
          "url": "https://example.com/job/1234",
          "source_url": "https://linkedin.com/jobs/view/1234",
          "date_posted": "2021-01-01"
        }
      ],
      "keywords_found": [
        {
          "technology": {
            "name": "PostgreSQL",
            "category": "Relational Database",
            "slug": "kafka",
            "category_slug": "message-queue",
            "parent_category": "Data Stores",
            "parent_category_slug": "data-stores"
          },
          "jobs": 54,
          "company_name": "Google"
        }
      ]
    }
  ]
}

Changes

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      request property reactivated

    • info

      added the new optional request property

    • info

      added the new optional request property