List Opportunities
GET/external/v1/opportunitiesReturns a paginated list of all opportunities/leads in your pipelines. Each opportunity carries its linked contact, pipeline, stage and lifecycle timestamps.
Authentication
Requires opportunities:read permission.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number for pagination |
limit | integer | 50 | Items per page (1-100) |
search | string | - | Search by opportunity title, contact name or company |
stage_id | string | - | Filter by stage |
pipeline_id | string | - | Filter by pipeline |
campaign_id | string | - | Filter by campaign |
owner_user_id | string | - | Filter by assigned user (seller) |
company | string | - | Filter by contact company |
created_after | string (ISO 8601) | - | Only opportunities created on/after this timestamp |
created_before | string (ISO 8601) | - | Only opportunities created on/before this timestamp |
updated_after | string (ISO 8601) | - | Only opportunities updated on/after this timestamp |
updated_before | string (ISO 8601) | - | Only opportunities updated on/before this timestamp |
sort_by | string | created_at | Sort field (created_at, updated_at, title, value) |
sort_order | string | desc | Sort order (asc, desc) |
Incremental sync
Pull only what changed since your last sync: GET /opportunities?updated_after=2026-06-08T00:00:00Z&sort_by=updated_at&sort_order=asc. An invalid date returns 400 VALIDATION_ERROR.
TIP
An opportunity's status is represented by its stage within a pipeline, not by a fixed enum. Use List Pipelines to resolve stage_id / pipeline_id into names.
Request
bash
curl --request GET \
--url "https://app.getraze.com/external/v1/opportunities?pipeline_id=pipe_01&limit=50" \
--header "X-API-Key: YOUR_API_KEY"javascript
const axios = require('axios');
const response = await axios.get('https://app.getraze.com/external/v1/opportunities', {
headers: { 'X-API-Key': 'YOUR_API_KEY' },
params: { pipeline_id: 'pipe_01', limit: 50 }
});
console.log(response.data);python
import requests
response = requests.get(
'https://app.getraze.com/external/v1/opportunities',
headers={'X-API-Key': 'YOUR_API_KEY'},
params={'pipeline_id': 'pipe_01', 'limit': 50}
)
print(response.json())Response
json
{
"success": true,
"data": [
{
"id": "opp_abc123def456",
"title": "Acme Inc - Plan Pro",
"value": 50000.00,
"currency": "BRL",
"probability": 60,
"expected_close_date": "2026-03-31",
"pipeline_id": "pipe_01",
"pipeline_name": "Sales",
"stage_id": "stg_proposal",
"stage_name": "Proposal",
"campaign_id": "camp_xyz789",
"campaign_name": "Q1 Outreach",
"owner_user_id": "usr_123",
"owner_user_name": "Maria Silva",
"owner_user_email": "maria@acme.com",
"sector_id": "sec_01",
"discard_reason_id": null,
"score": 85,
"source": "linkedin",
"notes": "Interested in enterprise plan",
"sent_at": "2026-01-15T10:30:00Z",
"accepted_at": "2026-01-16T09:00:00Z",
"qualifying_started_at": "2026-01-16T09:05:00Z",
"qualified_at": "2026-01-17T11:00:00Z",
"scheduled_at": null,
"won_at": null,
"lost_at": null,
"created_at": "2026-01-15T10:30:00Z",
"updated_at": "2026-01-20T14:00:00Z",
"contact_id": "cnt_abc123",
"contact_name": "John Doe",
"contact_email": "john@example.com",
"contact_phone": "+5511999999999",
"contact_company": "Acme Inc",
"contact_title": "CEO",
"contact_location": "São Paulo, BR",
"contact_profile_url": "https://linkedin.com/in/johndoe",
"contact_profile_picture": "https://cdn.getraze.com/c/abc.jpg"
}
],
"pagination": {
"page": 1,
"per_page": 50,
"total": 85,
"total_pages": 2,
"has_next": true,
"has_prev": false
}
}Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique opportunity identifier |
title | string | Opportunity title |
value | number | Opportunity value |
currency | string | Currency code (BRL, USD, EUR) |
probability | integer | Win probability (%) |
expected_close_date | string | Forecast close date |
pipeline_id / pipeline_name | string | Pipeline of the opportunity |
stage_id / stage_name | string | Current stage |
campaign_id / campaign_name | string | Associated campaign (nullable) |
owner_user_id / owner_user_name / owner_user_email | string | Assigned seller (nullable) |
sector_id | string | Sector/team (nullable) |
discard_reason_id | string | Loss reason when discarded (nullable) |
score | integer | Lead score |
source | string | Lead source |
sent_at … lost_at | string | Lifecycle timestamps per stage (nullable) |
contact_* | string | Linked contact summary |
pagination | object | Pagination metadata |