Connection
- Authentication: API key (TheirStack API key).
In TheirStack (app.theirstack.com): Settings → Workspace → API Keys → “Create API key”. Copy the key. Searches spend API credits (1 per job returned, 3 per company returned or analysed): see theirstack.com/en/pricing for the plans.See TheirStack’s documentation.
Read actions (12)
| Action | Description |
|---|---|
find_keywords | Find the technologies and topics TheirStack tracks, to get the slugs the search filters expect (a read, free). Arguments, all optional: q (string, free text on name, type and category: the best way to search), keyword_type (string, e.g. “technology” for technologies only), name_pattern (string), category_slug (string; see list_keyword_categories), slugs (array of strings, to read specific keywords), page (integer ≥ 0, default 0), limit (integer 1 to 100, default 25). With no argument, returns the most popular technologies. |
find_locations | Find geographic locations (city, region, country) and their ids, to use in the job_location_or filter of search_jobs (a read, free). Arguments, all optional: name (string, search text), country_code (string, 2-letter ISO code), id (integer, one location id), limit (integer 1 to 100, default 5), offset (integer ≥ 0, default 0). |
get_company_buying_intents | Get the buying-intent topics detected for ONE company (a read; spends 3 API credits per company, whatever the number of topics; nothing if there is no answer). For each topic: confidence (low, medium, high), number of jobs mentioning it, first and last dates. Give at least one of company_domain (string, e.g. “stripe.com”), company_name (string, exact, case-sensitive), company_linkedin_url (string). Optional: keyword_slug_or (array of strings, only these topics), keyword_category_slug_or (array of strings), confidence_or (array of “low”, “medium”, “high”), min_jobs (integer), limit (integer 1 to 100, default 25), offset (integer ≥ 0). |
get_company_list_companies | List the companies of one company list, with their profile and the dates they were added and revealed (a read). Arguments: list_id (integer, REQUIRED, from list_company_lists), company_name_partial (string, part of a company name), order_by (“revealed_at” or “name”), order_direction (“asc” or “desc”), limit (integer 1 to 100, default 25), offset (integer ≥ 0). |
get_company_technologies | Get the technologies ONE company uses (a read; spends 3 API credits per company, whatever the number of technologies; nothing if there is no answer). For each technology: confidence (low, medium, high), number of jobs mentioning it, first and last dates. Give at least one of company_domain (string, e.g. “stripe.com”), company_name (string, exact, case-sensitive), company_linkedin_url (string). Optional: keyword_slug_or (array of strings, only these technologies), keyword_category_slug_or (array of strings; see list_keyword_categories), confidence_or (array of “low”, “medium”, “high”), min_jobs (integer), max_rank (integer ≥ 1), limit (integer 1 to 100, default 25), offset (integer ≥ 0). |
get_credit_balance | Get the workspace credit balance: { ui_credits, used_ui_credits, api_credits, used_api_credits, earliest_expiration } (a read, free, no argument). Searches spend api_credits. |
list_company_lists | List the workspace company lists with their id, name, number of companies and creation date (a read, free, no argument). Use the id as list_id in the other list actions. |
list_industries | List the industries with their ids and the number of jobs and companies in each, to use in the industry_or and industry_id_or filters (a read, free). Arguments, all optional: industry (string, case-insensitive text in the name), page (integer ≥ 0, default 0), limit (integer 1 to 100, default 25). |
list_keyword_categories | List the main keyword categories (technologies and buying intents) with their number of keywords and companies (a read, free). Optional argument: category_slug (string, to read only that category). |
list_saved_searches | List the active saved searches of the workspace with their filters, type and dates (a read, free). Arguments, all optional: types (array of “companies” and/or “jobs”), order_by (“name”, “created_at” or “updated_at”), order_direction (“asc” or “desc”). |
search_companies | Search companies by size, revenue, funding, country, industry, the technologies they use and the jobs they post (a read; spends 3 API credits per company returned, max 4 calls per second). Give at least one filter. limit is an integer 1 to 50, default 10: keep it low, every result costs credits. offset is an integer ≥ 0 to read the next results. Company filters: company_name_or, company_name_case_insensitive_or, company_name_partial_match_or, company_domain_or, company_linkedin_url_or, company_id_or, company_id_not, min_employee_count, max_employee_count, min_revenue_usd, max_revenue_usd, min_funding_usd, max_funding_usd, funding_stage_or, industry_or, industry_id_or, company_type, company_country_code_or, company_country_code_not, company_technology_slug_or, company_technology_slug_and, company_technology_slug_not, company_list_id_or, company_list_id_not. Also: job_filters (object, keeps companies that posted matching jobs; REQUIRES one of posted_at_max_age_days, posted_at_gte, posted_at_lte; keys: job_title_or, job_title_not, job_country_code_or, job_country_code_not, job_location_or, posted_at_max_age_days, posted_at_gte, posted_at_lte, job_description_contains_or, job_description_contains_not, workplace_types_or, job_seniority_or, employment_statuses_or, min_salary_usd, max_salary_usd, job_technology_slug_or, job_technology_slug_and, job_technology_slug_not, job_keyword_slug_or, is_closed), min_num_jobs_found (integer ≥ 1, needs job_filters), tech_filters (object: technology_slug_or array of strings, keyword_slug_or array of strings, max_rank integer, min_jobs integer, max_jobs integer, min_relative_occurrence number, confidence_or array of “low”, “medium”, “high”), expand_technology_slugs (array of technology slugs whose detail is added to each company). Example: { “company_country_code_or”: [“FR”], “company_technology_slug_or”: [“snowflake”], “min_employee_count”: 50, “limit”: 5 }. The credit balance is never shown by the search itself: read it with get_credit_balance (free). |
search_jobs | Search job postings (a read; spends 1 API credit per job returned, max 4 calls per second). REQUIRED: at least one of posted_at_max_age_days, posted_at_gte, posted_at_lte (the date window), or a company filter (company_name_or, company_name_case_insensitive_or, company_name_partial_match_or, company_domain_or, company_linkedin_url_or, company_id_or) with fewer than 50 values. limit is an integer 1 to 50, default 10: keep it low, every result costs credits. offset is an integer ≥ 0 to read the next results. Job filters: job_title_or, job_title_not, job_country_code_or, job_country_code_not, job_location_or, posted_at_max_age_days, posted_at_gte, posted_at_lte, job_description_contains_or, job_description_contains_not, workplace_types_or, job_seniority_or, employment_statuses_or, min_salary_usd, max_salary_usd, job_technology_slug_or, job_technology_slug_and, job_technology_slug_not, job_keyword_slug_or, is_closed. Company filters (on the job’s company): company_name_or, company_name_case_insensitive_or, company_name_partial_match_or, company_domain_or, company_linkedin_url_or, company_id_or, company_id_not, min_employee_count, max_employee_count, min_revenue_usd, max_revenue_usd, min_funding_usd, max_funding_usd, funding_stage_or, industry_or, industry_id_or, company_type, company_country_code_or, company_country_code_not, company_technology_slug_or, company_technology_slug_and, company_technology_slug_not, company_list_id_or, company_list_id_not. Each filter has the type given in the schema. Example: { “job_title_or”: [“data engineer”], “posted_at_max_age_days”: 7, “job_country_code_or”: [“FR”], “limit”: 5 }. The credit balance is never shown by the search itself: read it with get_credit_balance (free). |
Write actions (3)
| Action | Description |
|---|---|
add_companies_to_list | Add companies to a company list. Arguments: list_id (integer, REQUIRED, from list_company_lists), company_ids (array of strings, REQUIRED, the id of each company in a search_companies result). Returns the list with its new company count. |
create_company_list | Create an empty company list. Argument: name (string, REQUIRED, the list name). Returns the list with its id; add companies with add_companies_to_list. |
remove_companies_from_list | Remove companies from a company list (only their place in this list goes; the companies and other lists are untouched). Arguments: list_id (integer, REQUIRED, from list_company_lists), company_ids (array of strings, REQUIRED, the id of each company to remove). |
Permissions
Every action above must be explicitly granted to an agent before it can be used. See Permissions for the grant model and Security for how credentials are protected.Last reviewed against the provider API: October 2026.