---
title: "Wallet profile"
method: GET
path: "/v1/wallets/{address}"
tags: ["Wallets"]
---

# Wallet profile

`GET /v1/wallets/{address}`

## Request

- Base URL: `https://crowdintel.xyz/api`
- URL: `https://crowdintel.xyz/api/v1/wallets/{address}`
- Auth: HTTP bearer

**Min tier: `free`.** Wallet profile + stats. `free` keys get the lightweight `wallet_stats`-only profile; `terminal`+ keys get the full dossier (recent trades, alerts, funding cluster).

## Path parameters

- `address` string, required

## Response `200`

Wallet profile. Shape depends on caller tier (lite for `free`, full dossier for `terminal`+).

- WalletProfile: Lite (`free`) or full dossier (`terminal`+). Lite is a subset of the full shape.
  - `address` string
  - `polymarket_name` string, nullable
  - `wallet_type` string, nullable
  - `stats` WalletStats, nullable
    - `total_bets` integer
    - `resolved_bets` integer
    - `win_rate` number, nullable
    - `bayesian_win_rate` number, nullable
    - `total_volume` number, nullable
    - `total_pnl` number, nullable
    - `pnl_source` 'polymarket_api' | 'ledger' | 'none': Where the PnL figure comes from: `polymarket_api` = Polymarket's own profit figure, `ledger` = CrowdIntel on-chain cash ledger (retail wallets), `none` = no trustworthy figure yet (market-maker/whale wallets pending refresh report null/0).
    - `pnl_as_of` string, date-time, nullable: Freshness timestamp of the PnL figure; null when `pnl_source` is `none`.
    - `markets_traded` integer, nullable
  - `recent_trades` Trade[]: Full dossier only.
    - `id` union
      - integer
      - string
    - `tx_hash` string
    - `proxy_wallet` string
    - `condition_id` string, nullable
    - `market_slug` string, nullable
    - `market_title` string, nullable
    - `side` 'BUY' | 'SELL' | 'null', nullable
    - `outcome` string, nullable: What the trader bet on (e.g. 'Yes'), not WIN/LOSS.
    - `price` number, nullable
    - `size` number, nullable
    - `bet_value_usd` number, nullable
    - `trade_timestamp` string, date-time, nullable
  - `alerts` object[]: Full dossier only.
  - `funding_cluster` object, nullable: Full dossier only.

## Other responses

- `400`: Malformed parameters or a rejected guardrail (e.g. unfiltered trades query, cluster blowup, window > 90 days).
- `401`: Missing, invalid, or revoked API key. Returned before the rate limiter runs, so it carries no `X-RateLimit-*` headers.
- `404`: The requested resource was not found.
- `429`: Hourly or monthly rate limit exceeded.

---

[API](https://skmtc.dev/crowdintel/apis/crowdintel-api.md) · [All operations](https://skmtc.dev/crowdintel/apis/crowdintel-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crowdintel/apis/crowdintel-api/revisions/7059cfe9320d?raw)
