---
title: "Search companies by name"
method: GET
path: "/companies/search"
tags: ["Companies"]
---

# Search companies by name

`GET /companies/search`

## Request

- Base URL: `https://joinways.app/api/v1`
- URL: `https://joinways.app/api/v1/companies/search`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://joinways.app/oauth/authorize`, token URL `https://joinways.app/api/oauth/token`, scopes: `mcp.read`)

Quick lookup by name (case-insensitive, contains), for pickers and de-duplication. Not paginated. **Role permission:** none (any member).

## Query parameters

- `q` string, required
- `limit` integer

## Response `200`

Matching companies.

- object[]
  - `id` string, uuid
  - `name` string
  - `website` string, nullable
  - `phone` string, nullable
  - `city` string, nullable
  - `country` string, nullable

## Other responses

- `400`: Validation failed (`invalid_request`). For a body that fails the schema, `details` holds `formErrors` and `fieldErrors`.
- `401`: Missing, invalid, expired or revoked bearer token (`unauthorized`).
- `429`: Too many requests (`rate_limited`). `details.reason`: `per-ip`, `per-account-minute`, `per-account-day`, or `email_rate_limited` (email budget). Always carries `Retry-After`: wait that many seconds.

---

[API](https://skmtc.dev/joinways/apis/joinways-public-api.md) · [All operations](https://skmtc.dev/joinways/apis/joinways-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/joinways/apis/joinways-public-api/revisions/39e84309953e?raw)
