> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atako.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# TheirStack

> Connect TheirStack to your Atako agents — 12 read and 3 write actions.

Let your agents find companies that are hiring and the technologies they use with TheirStack: search job postings and companies by role, technology, country, size or funding, read the technology stack and buying-intent topics of a company, look up keywords, locations and industries, and manage company lists.

## Connection

* **Authentication**: API key (TheirStack API key).

> [!NOTE]
>
> 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](https://theirstack.com/en/docs/api-reference).

## 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](https://docs.atako.ai/integrations/permissions.md) for the grant model and [Security](https://docs.atako.ai/integrations/security.md) for how credentials are protected.

***

*Last reviewed against the provider API: October 2026.*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.