---
title: "Get Technologies And Buying Intents"
method: GET
path: "/v0/catalog/keywords"
tags: ["Catalog"]
---

# Get Technologies And Buying Intents

`GET /v0/catalog/keywords`

List all keywords tracked by TheirStack, including both technologies and buying intent topics. Search for any keyword and filter by one or more categories.

Calls to this endpoint don't cost you credits.

- To get technologies only: filter with `keyword_type=technology`
- To get only buying intent topics: filter with `keyword_type_not=technology`

**Building an autocomplete?** This endpoint is designed to be queried, not downloaded — there are 42k keywords, so pulling them all is a ~27MB response and should never sit on a user's path:

- On open, with no query: `?limit=50`. Results are sorted by number of companies, so you get the most popular technologies for the empty state. Cache this for hours or a day; it moves slowly.
- As the user types: `?q=snow&limit=10`. This is the search path and ranks the closest matches first.
- Debounce keystrokes by ~200ms so a four-letter query fires one request, not four.

Fetching the full catalog with a large `limit` is only appropriate for an offline, server-side sync — never for a picker.

Response always includes `data` (array of keywords) and `metadata` (total_results, page, limit).

## Query parameters

- `keyword_type` 'technology' | 'software_product' | 'technology_concept' | 'operational_activity' | 'strategic_initiative' | 'metric_or_concept' | 'product_or_service_offered' | 'regulation' | 'threat_or_risk' | 'event' | 'commodity' | 'industry_vertical' | 'physical_equipment' | 'medical_research' | 'government_body'
- `keyword_type_not` KeywordType[], nullable — Exclude keywords of these types
- `name_pattern` string, nullable — Case-insensitive text to search for in the keyword name
- `slug` string[], nullable — Keyword slug of a single keyword
- `slugs` string[], nullable — Keyword slugs of one or many keywords
- `category_pattern` string, nullable — Case-insensitive text to search for in the keyword category. For example, `data` to find 'data tools'.
- `category_slug` string, nullable — Keyword category slug
- `parent_category_slug` string, nullable — Keyword parent category slug
- `parent_category_pattern` string, nullable — Case-insensitive text to search for in the keyword parent category name
- `q` string, nullable — General search query. Searches across keyword name, keyword type, category, and parent category (case-insensitive). Results where the keyword name starts with the query are ranked first.
- `starts_with` string, nullable — Filter keywords whose name starts with this string (e.g. 'A' for glossary). Special value '__other__' selects keywords whose name does not start with letters A-Z.
- `include_metadata` boolean — Deprecated, metadata is always included now
- `page` integer — Page number.
- `limit` integer — Number of results per page

## Response `200`

Successful Response

- CatalogKeywordsResponse
  - `data` KeywordAggregated[]
    - `name` string, required
    - `category` string, nullable — Category of the keyword
    - `type` string, nullable — Type of the keyword (e.g. technology, operational_activity)
    - `slug` string, required — Slug of the keyword
    - `category_slug` string, nullable — Slug of the category of the keyword
    - `parent_category` string, nullable — Parent category of the keyword
    - `parent_category_slug` string, nullable — Slug of the parent category of the keyword
    - `logo` string, nullable — Logo of the keyword
    - `logo_thumbnail` string, nullable — Thumbnail of the keyword
    - `one_liner` string, nullable — One-line description of the keyword
    - `url` string, nullable — URL of the keyword
    - `description` string, nullable — Description of the keyword
    - `jobs` integer, required — Number of jobs found mentioning this keyword
    - `companies` integer, required — Number of companies using this keyword
    - `companies_found_last_week` integer, required — Number of companies found using this keyword in the last week for the first time
  - `metadata` CatalogKeywordsMetadata, required
    - `total_results` integer, required — Total number of keywords
    - `page` integer, required — Current page (0-based)
    - `limit` integer, required — Page size

## Other responses

- `400` — Bad Request
- `402` — Payment Required
- `422` — Unprocessable Content
- `500` — Internal Server Error

---

[API](https://skmtc.net/theirstack/apis/theirstack-api-reference.md) · [All operations](https://skmtc.net/theirstack/apis/theirstack-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/theirstack/theirstack-api-reference/revisions/fa3bfc305677/schema)
