---
title: "Search for a trader's public profile by wallet address"
method: GET
path: "/search-traders"
tags: ["Trader Analytics"]
---

# Search for a trader's public profile by wallet address

`GET /search-traders`

## Request

- Base URL: `https://data.kairos.trade`
- URL: `https://data.kairos.trade/search-traders`
- Auth: API key in header `X-Client-Id` and API key in header `X-Api-Key` and API key in header `X-Api-Secret`

Fetches public profile information (display name, pseudonym, bio, avatar, X/Twitter handle, verification badge, associated user IDs) for a wallet address from the upstream provider. Provider is auto-detected from address format when omitted — Ethereum (0x...) addresses default to Polymarket and Solana addresses default to Kalshi; auto-detection maps **every** 0x address to Polymarket, so other EVM venues (Opinion, predictfun, ...) must pass `provider` explicitly. `provider`, when given, is validated against the central provider registry shared with `/trader-stats`; any registered provider is accepted, and non-Polymarket venues currently receive a synthetic (service-generated) profile rather than a live upstream fetch. This is a live provider read, not served from cached data. **Auth**: accepts an admin secret (`X-Admin-Secret`), an API key (`X-Client-Id` + `X-Api-Key` + `X-Api-Secret`), or a first-party JWT (Authorization header or `turnkey_session_jwt` cookie). No API-key scope is required — any valid credential can read a public profile. Rate-limited by the `heavy` group at 10 requests/minute, matching `/trader-stats`, because every call is a live upstream provider read.

## Query parameters

- `address` string, required
- `provider` string

## Response `200`

Trader search result. `profile` is null if no profile was found; `error` carries a provider-supplied message in that case.

- TraderSearchResponse: Result of a trader-profile search. `profile` is null (with `error` populated) when the provider found no profile for the address.
  - `provider` string, required
  - `address` string, required
  - `profile` TraderSearchProfile, required: Public trader profile fields returned by the upstream provider.
    - `proxyWallet` string, nullable
    - `name` string, nullable
    - `pseudonym` string, nullable
    - `bio` string, nullable
    - `profileImage` string, nullable
    - `xUsername` string, nullable
    - `verifiedBadge` boolean, required
    - `displayUsernamePublic` boolean, required
    - `createdAt` string, date-time, nullable
    - `users` TraderSearchUserInfo[], required
      - `id` string, required
      - `creator` boolean, required: Whether this user record has market-creator privileges.
      - `mod` boolean, required: Whether this user record has moderator privileges.
  - `error` string, nullable, required: Provider-supplied error message when no profile was found.

## Other responses

- `400`: Missing/blank `address` or an invalid `provider`.
- `401`: No valid credential presented — missing/invalid API-key headers, or an invalid/expired session token.
- `403`: Authenticated but not permitted. Three distinct causes: the session user is not invited (`Invite required`), the API key lacks the operation's scope, or API-key access to the requested venue is switched off (`API access is disabled for <provider>`). Admin and API-key callers bypass the invite check; session and admin callers bypass scope and venue checks.
- `422`: Request failed FastAPI parameter validation.
- `429`: Rate limit exceeded for this route's sliding window, keyed on the session `sub` when authenticated and on the trusted client IP otherwise. Honor `Retry-After`. A per-API-key data ceiling (set per credential) rejects with `{"detail": "API key data rate limit exceeded"}` instead of the `error` envelope below.
- `502`: Upstream provider error searching for the trader.

---

[API](https://skmtc.dev/kairos/apis/kairos-data-api.md) - [All operations](https://skmtc.dev/kairos/apis/kairos-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kairos/apis/kairos-data-api/revisions/cf6b76079e38?raw)
