> For a complete page index of the Captain API documentation, fetch https://docs.filesearch.dev/llms.txt?excludeSpec=true

# Search Companies

GET https://api.filesearch.dev/v2/datasets/odyssey/companies/search

Search for companies by name or natural language description.

Supports two modes:

* **Direct lookup**: Short queries (1-3 words) like "Stripe" or "OpenAI" resolve directly
* **Natural language search**: Longer queries like "AI startups in San Francisco raising Series B"
  are translated to structured search queries and return multiple matching companies

**Headers:**

* `Authorization`: Bearer \{api\_key}
* `X-Organization-ID`: Organization UUID

Reference: https://docs.filesearch.dev/reference/datasets/odyssey/companies/companies-search

## Request

### Query parameters

- `q` (string, required) — Company name, domain, or natural language search query (e.g. 'AI startups in San Francisco')
- `limit` (integer, optional, default: 5) — Maximum number of results (default 5)

## Response

### 200

Successful Response

- `query` (string, required)
- `limit` (integer, optional, default: 10)
- `results` (list of CompanySearchResult, optional)
- `search_mode` (string, optional, nullable)
- `total_count` (integer, optional, default: 0)

## Errors

### 400 Bad Request Error

Invalid request

- `error` (string, required)
- `message` (string, required)
- `details` (ErrorResponseV2Details, optional, nullable)
- `path` (string, optional, nullable)
- `success` (boolean, optional, default: false)

### 500 Internal Server Error

Internal server error

- `error` (string, required)
- `message` (string, required)
- `details` (ErrorResponseV2Details, optional, nullable)
- `path` (string, optional, nullable)
- `success` (boolean, optional, default: false)

## Types

### CompanySearchResult

Company search result — surface-level fields for discovery.

- `name` (string, required)
- `description` (string, optional, nullable)
- `employee_count` (integer, optional, nullable)
- `entity_id` (string, optional, nullable)
- `founded` (integer, optional, nullable)
- `industry` (string, optional, nullable)
- `latest_funding_stage` (string, optional, nullable)
- `linkedin_url` (string, optional, nullable)
- `location` (string, optional, nullable)
- `size` (string, optional, nullable)
- `tags` (list of string, optional, nullable)
- `total_funding_raised` (double, optional, nullable) — Total capital raised (incl. debt). Null for large/public companies where the figure is misleading.
- `website` (string, optional, nullable)

### ErrorResponseV2Details

## Examples

**Response**

```json
{
  "query": "credit",
  "limit": 5,
  "results": [
    {
      "name": "Credit",
      "description": "20 años en el sector nos avalan. ¡Estudiamos tu caso!",
      "employee_count": 4,
      "entity_id": null,
      "founded": 2010,
      "industry": "Financial Services",
      "latest_funding_stage": null,
      "linkedin_url": "https://www.linkedin.com/company/credit-house",
      "location": "Passatge de Casanovas, 10; Barcelona, Catalonia 08025, ES",
      "size": "1-10 employees",
      "tags": [
        "finance",
        "clients"
      ],
      "total_funding_raised": null,
      "website": "credit.com"
    }
  ],
  "search_mode": "direct",
  "total_count": 1
}
```

**SDK Code**

```python Python REST
import requests

BASE_URL = "https://api.filesearch.dev"
API_KEY = "your_api_key"

headers = {"Authorization": f"Bearer {API_KEY}"}

response = requests.get(
    f"{BASE_URL}/v2/datasets/odyssey/companies/search",
    headers=headers,
    params={"q": "credit"},
    timeout=60.0
)
print(response.json())
```

```typescript TypeScript REST
const BASE_URL = "https://api.filesearch.dev";
const API_KEY = "your_api_key";

const response = await fetch(`${BASE_URL}/v2/datasets/odyssey/companies/search?q=credit`, {
    method: "GET",
    headers: { "Authorization": `Bearer ${API_KEY}` }
});
console.log(await response.json());
```