Get Deals
Retrieve deals with flexible filtering, sorting, and pagination. Returns deal objects with all their properties and relationships. Use this for real-time data access and integrations.
Copy for AI context
Copy for AI context
Overview
Use this endpoint to programmatically access your deal data with real-time filtering and pagination. Unlike bulk export which generates a CSV file, this endpoint returns JSON objects immediately and is ideal for:- Building custom dashboards and reports
- Syncing deal data to external systems
- Real-time data access for integrations
- Paginating through large datasets
Pagination
Column Selection
* or name them explicitly: full-text search vectors, sync bookkeeping, sharing configuration, and raw aggregate blobs (e.g. fts, joined_fts, keywords, sync_run_id, client_id, org_sharing_enabled, processing_in_progress). The close_date column is returned under that name (it maps to the internal proposal_due field); you may request it as either close_date or proposal_due.The relational columns drivers, competitors, and features return flattened arrays (see Drivers, competitors, and features below) and are included with *. summary returns the complete structured deal-story object.CRM properties, custom metrics, and custom answers
GET/deals and bulk export accept the same dynamic column selectors:
null when the deal has no corresponding value.
Search
Filters
GET and bulk export use the same canonical filter names and semantics. GET passes arrays and objects as JSON-encoded query parameters; bulk export sends the same values as native JSON in its request body. Simple booleans such asanalyzed=true do not need JSON array encoding.
Deal Identification
Deal Attributes
Date & Amount
Competitive Intelligence
Analysis
Legacy filter aliases
Existing integrations do not need to change immediately. Both GET and bulk export continue to accept these earlier internal names:deal_analyzed=["true"].
Win-Loss Scores
Filters for deal analysis scores (range queries):CRM Filters (Advanced)
Segments
Sorting
created_at- Creation dateclose_date- Expected/actual close dateamount- Deal valuename- Deal namewl_product_fit_score- Product fit scorewl_sales_execution_score- Sales execution scorewl_relationship_score- Relationship scorewl_price_sensitivity_score- Price sensitivity scorewl_competitive_intensity_score- Competitive intensity scorewl_customer_fit_score- Customer fit scorewl_messaging_fit_score- Messaging fit scorewl_messaging_accuracy_score- Messaging accuracy score
Response Format
Standard Response
Returns an array of deal objects with all requested fields:Drivers, competitors, and features
These three are relational fields, returned as flattened arrays (included with*, or by requesting the drivers, competitors, and features columns):
Summary
summary returns the complete structured deal story, including executive_summary, deal_overview, decision_drivers, competitive_landscape, key_quotes, lessons_learned, and recommendations. It is null for deals that haven’t been analyzed yet. Legacy plain-text summaries are returned as strings.
Count Response
Whencount=true, returns only the total count:
CRM Filters
For advanced filtering using CRM-specific properties:is,is notis greater than,is less thanis greater than or equal to,is less than or equal tois before,is after(for dates)contains,does not contain(for text)
Rate Limits
Examples
Best Practices
- Use Pagination: Always paginate through large datasets rather than requesting all at once
- Select Columns: Use the
columnsparameter to only fetch fields you need - Cache Counts: If you need counts frequently, cache them with appropriate TTL
- Filter Server-Side: Apply filters in the API request rather than fetching all data and filtering client-side
- Handle Rate Limits: Implement exponential backoff when you receive 429 responses
- Use Bulk Export for Large Datasets: If you need to analyze thousands of deals, use the bulk export endpoint instead
Comparison: Get Deals vs Bulk Export
Error Responses
Authorizations
API key from Hindsight dashboard
Query Parameters
Number of deals per page
x <= 100Zero-based page index
If true, returns only the total count
Column to sort by
created_at, updated_at, close_date, amount, name Sort direction
asc, desc Comma-separated list of columns to return
Fuzzy search across deal names
JSON array of deal stages
JSON array of owner IDs
JSON object: {"from": "2026-01-01", "to": "2026-03-31"}
JSON object: {"min": 10000, "max": 100000}
Response
Successful response
Hindsight deal ID
"deal_123"
Deal name
"Acme Corp - Enterprise License"
Deal value
50000
Current deal stage ID
"negotiation"
Previous deal stage ID
"qualification"
Expected or actual close date (internal field name: proposal_due)
"2026-03-15"
Deal creation timestamp
Deal owner ID
Salesforce Opportunity ID
HubSpot Deal ID
Whether deal has been analyzed
Whether analysis has been verified
Type of deal
"New Business"
Geographic region
Array of competitor associations
Array of deal drivers/reasons
Product fit score (1-5)
Sales execution score (1-5)
Relationship score (1-5)
