For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

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

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

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 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 field
    ReportExport field

    date_sort

    Sortable Date

    date_display

    Date

    ActionCost

    Action Cost

    ClickcCost

    Click Cost

    CPCCost

    CPC Cost

    OtherCost

    Other Cost

    TotalCost

    Total Cost

Last updated