In the Salesforce UI, a report displays up to 2,000 rows. Via the Reports REST API you can pull up to 100,000 rows programmatically, and exports to CSV/Excel can deliver more depending on the export option you choose.
The relevant limits
| Surface | Row cap |
|---|---|
| Run report in browser UI | 2,000 |
| Reports REST API — runReport | 2,000 |
| Reports REST API — queryMore with detail metadata | up to 100,000 |
| Dashboard component (chart) | 250 data points per chart |
| Export — Formatted Report | 2,000 rows |
| Export — Details Only (CSV) | Up to 1 million rows or 50 MB, depending on edition |
| Scheduled email | 2,000 rows in the email |
What “2,000 rows” actually means
When you run a report in the UI:
- Up to 2,000 row records show in the table
- Subtotals and group totals are calculated across the visible rows
- Beyond 2,000, you’ll see a banner: “Your report’s row limit has been reached. To see all the data, export the report.”
Workarounds
| Need | Path |
|---|---|
| See more than 2,000 in the browser | Add filters to narrow the result; use Tableau CRM / CRM Analytics for big-data analytics |
| Process millions of rows in code | Use SOQL with Database.QueryLocator in Batch Apex; reports aren’t the right tool |
| Export every row | Export → Details Only → CSV (up to 1M rows in Enterprise/Unlimited) |
| Send a wide CSV to a partner | Scheduled report → CSV format → emailed/sent to integration user |
Reports API limits
GET /services/data/v60.0/analytics/reports/{reportId}
- hasDetailRows = true
- returns up to 2,000 records per call
GET /services/data/v60.0/analytics/reports/{reportId}/instances/{instanceId}
- Asynchronous run, can return up to 100,000 rows
For large extractions, use includeDetails=true plus the async report run pattern.
Dashboard component data points
A dashboard chart caps at 250 data points per series. If you group an Opportunity report by Account and have 5,000 accounts, the chart will show the top 250 plus an “Others” aggregate. Reduce groupings or add filters.
Tabular Row Limit
Tabular reports can have a Row Limit setting to feed dashboards. The limit is independent of the 2,000 cap — you can set Row Limit = 10 to get a “Top 10” dashboard component.
When reports aren’t the right tool
If you find yourself fighting the 2,000-row cap regularly, you’ve outgrown reports for that use case. Options:
- Tableau CRM / CRM Analytics for true big-data analytics
- Custom Lightning Component that paginates a SOQL result
- Export to data warehouse (Snowflake, BigQuery) and report there
Common follow-ups
- UI limit raise? — No, 2,000 is the platform cap.
- Async report API limit? — Up to 100,000 rows.
- Excel export limit? — Edition-dependent; commonly 1 million in Enterprise/Unlimited.
Verified against: Salesforce Help — Report Limits. Last reviewed 2026-05-17 for Spring ‘26.