---
title: "GET /crm/deals"
method: GET
path: "/crm/deals"
tags: ["CRM Deals"]
---

# GET /crm/deals

`GET /crm/deals`

## Request

- Base URL: `https://developer.meetergo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.meetergo.com/crm/deals`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - API key in header `x-meetergo-api-user-id`

## Query parameters

- `search` string
- `pipelineId` string
- `stageId` string
- `crmCompanyId` string
- `contactId` string
- `ownerId` string
- `isOpen` boolean
- `isWon` boolean
- `isLost` boolean
- `page` number
- `limit` number
- `sortBy` 'name' | 'value' | 'expectedCloseDate' | 'createdAt' | 'updatedAt'
- `sortOrder` 'ASC' | 'DESC'

## Response `200`

- DealListDto
  - `deals` DealDto[], required
    - `id` string, required
    - `name` string, required
    - `value` number
    - `currency` string
    - `expectedCloseDate` string, date-time
    - `notes` string
    - `crmCompanyId` string
    - `contactId` string
    - `pipelineId` string, required
    - `stageId` string, required
    - `ownerId` string, nullable
    - `companyId` string, required
    - `lostReason` string: Configurable per company, so a key rather than a fixed enum value.
    - `lostReasonNote` string
    - `wonReason` string: The won-side mirror, configurable in the same way.
    - `wonReasonNote` string
    - `wonAt` string, date-time
    - `lostAt` string, date-time
    - `archivedAt` string, date-time, nullable
    - `enteredStageAt` string, date-time, required
    - `customFields` object
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `winProbability` number, required: The probability the deal is forecast with: its own override, else the stage's.
    - `winProbabilityOverride` number, nullable, required: The per-deal value when one is set; null means the stage's applies.
    - `crmCompany` object
      - `id` string, required
      - `name` string, required
      - `domain` string
      - `iconUrl` string
    - `contact` object
      - `id` string, required
      - `firstName` string, required
      - `lastName` string, required
      - `email` string
      - `phoneNumber` string
      - `photoUrl` string, nullable
      - `additionalData` object
    - `stage` object
      - `id` string, required
      - `name` string, required
      - `color` string, required
      - `isWon` boolean, required
      - `isLost` boolean, required
      - `winProbability` number, required
      - `rottingDays` number
    - `contacts` DealContactDto[]
      - `id` string, required
      - `dealId` string, required
      - `contactId` string, required
      - `role` 'primary' | 'decision_maker' | 'influencer' | 'user' | 'other', required
      - `isPrimary` boolean, required
      - `createdAt` string, date-time, required
      - `contact` object
        - `id` string, required
        - `firstName` string, required
        - `lastName` string, required
        - `email` string
        - `phoneNumber` string
        - `photoUrl` string, nullable
        - `additionalData` object
    - `owner` object
      - `id` string, required
      - `givenName` string
      - `familyName` string
      - `email` string, required
    - `isRotting` boolean
    - `signal` DealSignalDto
      - `healthScore` number, required
      - `healthBand` object, required
      - `daysInStage` number, required
      - `daysSinceLastActivity` number, required
      - `daysSinceLastInbound` number, nullable
      - `daysSinceLastOutbound` number, nullable
      - `followUpsSinceLastReply` number, required
      - `hasReplyEver` boolean, required
      - `inboundCount` number, required
      - `outboundCount` number, required
      - `meetingsBooked` number, required
      - `meetingsHeld` number, required
      - `openTaskCount` number, required
      - `overdueTaskCount` number, required
      - `computedAt` string, date-time, required
  - `total` number, required
  - `page` number, required
  - `limit` number, required
  - `totalPages` number, required

## Other responses

- `400`: The request did not validate. `message` lists the constraints that failed.
- `401`: Missing, malformed, or expired credentials.
- `403`: Authenticated, but not allowed: the plan does not include this feature, or the token is scoped away from it.
- `429`: Rate limited. Back off and retry.

---

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