Migrate to ReportExport

If you export large volumes of report data via the impact.com API, now is the time to switch to the more efficient ReportExport endpoint—especially with upcoming limits to the legacy Reports API.

impact.com currently supports two endpoints for exporting report data via the API: Reports and ReportExport.

  • Reports is an older endpoint, which uses pagination and is inefficient for large data sets.
  • ReportExport doesn’t use pagination and can handle large exports more efficiently.

The Reports page limit

Beginning September 1, 2025, the Reports API endpoint will enforce a page limit on responses. Initially set at 50 pages, this limit is expected to be reduced further over time.

Each page of a Reports API export can contain up to 20,000 records, so this change effectively caps the maximum data returned at 1 million rows.

For more efficient retrieval of large datasets, we highly recommend switching to the ReportExport API endpoint, which returns a complete, unpaginated result, making it a better solution for managing large amounts of data.

Why is the change needed?

For large datasets, using the Reports endpoint’s pagination is inefficient, causing the client to make several calls, each returning a partial recordset. This adds complexity for the API consumer to recombine the data, increasing system load and slowing down result delivery.

In contrast, the ReportsExports endpoint works by queuing a background job that you can track until completion. This approach generally runs faster and returns a single, comprehensive data set, eliminating the need for pagination.

However, this change requires a small update to your API scripts. The examples below show how to update them.

Reports example

Read how to export a report using the Reports endpoint.

The example below shows sample output from the Reports endpoint. The JSON file includes the report data, column headers and report metadata (e.g., pagesize).

{
"@page": "1",
"@numpages": "1",
"@pagesize": "20000",
"@total": "7",
"@start": "0",
"@end": "6",
"@uri": <hidden>,
"@firstpageuri": <hidden>,
"@previouspageuri": "",
"@nextpageuri": "",
"@lastpageuri": <hidden>,
"Records": [
  {
    "date_sort": "",
    "date_display": "May 27, 2025",
    "media_count": "1",
    "Impressions": "0",
    "Clicks": "4139366",
    "Actions": "51443",
    "Revenue": "1462771.7926",
    "ActionCost": "78135.1751",
    "ClickcCost": "0.0000",
    "Calls": "0",
    "CPCCost": "0.0000",
    "OtherCost": "0.0000",
    "TotalCost": "78135.1751",
    "CPC": "0.01887612"
    },
  {
    "date_sort": "",
    "date_display": "May 26, 2025",
    "media_count": "1",
    "Impressions": "0",
    "Clicks": "892547",
    "Actions": "52423",
    "Revenue": "1442777.7131",
    "ActionCost": "77377.9779",
    "ClickcCost": "0.0000",
    "Calls": "0",
    "CPCCost": "0.0000",
    "OtherCost": "0.0000",
    "TotalCost": "77377.9779",
    "CPC": "0.08669345"
  },
  {
    "date_sort": "",
    "date_display": "May 25, 2025",
    "media_count": "1",
    "Impressions": "0",
    "Clicks": "959868",
    "Actions": "54006",
    "Revenue": "1545412.8019",
    "ActionCost": "81698.2616",
    "ClickcCost": "0.0000",
    "Calls": "0",
    "CPCCost": "0.0000",
    "OtherCost": "0.0000",
    "TotalCost": "81698.2616",
    "CPC": "0.08511406"
  },
  {
    "date_sort": "",
    "date_display": "May 24, 2025",
    "media_count": "1",
    "Impressions": "0",
    "Clicks": "898905",
    "Actions": "49707",
    "Revenue": "1390113.7148",
    "ActionCost": "74428.3114",
    "ClickcCost": "0.0000",
    "Calls": "0",
    "CPCCost": "0.0000",
    "OtherCost": "0.0000",
    "TotalCost": "74428.3114",
    "CPC": "0.08279886"
  },
  {
    "date_sort": "",
    "date_display": "May 23, 2025",
    "media_count": "1",
    "Impressions": "0",
    "Clicks": "779053",
    "Actions": "44495",
    "Revenue": "1302177.3778",
    "ActionCost": "68627.1650",
    "ClickcCost": "0.0000",
    "Calls": "0",
    "CPCCost": "0.0000",
    "OtherCost": "0.0000",
    "TotalCost": "68627.1650",
    "CPC": "0.08809050"
  },
  {
    "date_sort": "",
    "date_display": "May 22, 2025",
    "media_count": "1",
    "Impressions": "0",
    "Clicks": "879469",
    "Actions": "50300",
    "Revenue": "1424613.9807",
    "ActionCost": "75676.7852",
    "ClickcCost": "0.0000",
    "Calls": "0",
    "CPCCost": "0.0000",
    "OtherCost": "0.0000",
    "TotalCost": "75676.7852",
    "CPC": "0.08604827"
  },
  {
    "date_sort": "",
    "date_display": "May 21, 2025",
    "media_count": "1",
    "Impressions": "0",
    "Clicks": "927422",
    "Actions": "52863",
    "Revenue": "1535290.1470",
    "ActionCost": "79841.4397",
    "ClickcCost": "0.0000",
    "Calls": "0",
    "CPCCost": "0.0000",
    "OtherCost": "0.0000",
    "TotalCost": "79841.4397",
    "CPC": "0.08608965"
  }
]
}

ReportExport example

Read how to export a report using the ReportExport endpoint.

The ReportExport API endpoint provides the report data and column headers in a CSV file, with no additional report metadata:

Sortable Date,Date,Partners,Impressions,Clicks,Actions,Revenue,Action Cost,Click Cost,Calls,CPC Cost,Other Cost,Total Cost,CPC
,"May 27, 2025",1,0,4139366,51443,1462771.7926,78135.1751,0.0000,0,0.0000,0.0000,78135.1751,0.01887612
,"May 26, 2025",1,0,892547,52423,1442777.7131,77377.9779,0.0000,0,0.0000,0.0000,77377.9779,0.08669345
,"May 25, 2025",1,0,959868,54006,1545412.8019,81698.2616,0.0000,0,0.0000,0.0000,81698.2616,0.08511406
,"May 24, 2025",1,0,898905,49707,1390113.7148,74428.3114,0.0000,0,0.0000,0.0000,74428.3114,0.08279886
,"May 23, 2025",1,0,779053,44495,1302177.3778,68627.1650,0.0000,0,0.0000,0.0000,68627.1650,0.08809050
,"May 22, 2025",1,0,879469,50300,1424613.9807,75676.7852,0.0000,0,0.0000,0.0000,75676.7852,0.08604827
,"May 21, 2025",1,0,927422,52863,1535290.1470,79841.4397,0.0000,0,0.0000,0.0000,79841.4397,0.08608965

Migration steps

Compare the two example files above to gain some insight into the necessary steps to migrate from Reports to ReportExport. If you need help with this process, please reach out to your CSM (or contact support).

  1. Update your integration to download from the ReportExport endpoint, rather than Reports.
  2. Adjust your integration to process ReportExport's CSV file rather than the JSON response from Reports.
  3. Update the report field names where they differ, as shown in the table below:
    Reports fieldReportExport field
    date_sortSortable Date
    date_displayDate
    ActionCostAction Cost
    ClickcCostClick Cost
    CPCCostCPC Cost
    OtherCostOther Cost
    TotalCostTotal Cost