---
title: "Theirstack Search"
method: POST
path: "/api/sales/theirstack-search"
tags: ["Sales"]
---

# Theirstack Search

`POST /api/sales/theirstack-search`

## Request

- Base URL: `https://api.ruzora.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ruzora.com/api/sales/theirstack-search`
- Auth: HTTP bearer

v2.4 Track A — discover companies actively hiring via TheirStack.

Thin wrapper around theirstack_service.search_companies_hiring that the
`/vibe-prospecting --signal=theirstack` skill calls. Returns the
company list + credit cost; the skill then runs Explorium match-business
+ match-prospects + enrich-prospects on each to fill in emails and
import via /api/sales/import-outbound-batch.

Caller responsibilities (the skill):
  1. Read weekly_injection_target via /api/sales/feature-flags/...
  2. Cap `limit` at remaining_budget_this_week
  3. After this call returns, enrich each company via vpai
  4. POST enriched leads to /api/sales/import-outbound-batch with
     signal_source='theirstack' and signal_metadata containing the
     open_roles/posted_dates returned here

Raw response is also persisted to disk by the service (per the VP
credit-burn lesson — never inspect API responses without persisting).

## Request body

- TheirStackSearchRequest: Search filters for TheirStack company discovery. Credit-burn guards (per /scr Warning #1 + project_vp_credit_burn_lesson memory — $40 mistake on omitted page_size). Bounds match the realistic Phase 0-3 weekly injection ceiling (~70 leads/wk × ~3 credits/co ≈ 210 credits/run cap). Anyone asking for more than 100 companies in one call is either making a mistake or doing something the skill shouldn't do unsupervised.
  - `job_titles` string[], required
  - `countries` string[], nullable
  - `company_sizes` string[], nullable
  - `min_employees` integer, nullable
  - `max_employees` integer, nullable
  - `job_countries` string[], nullable
  - `posted_within_days` integer
  - `limit` integer
  - `exclude_competitors` boolean

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api.md) · [All operations](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/revisions/f9b8223f3ac4?raw)
