# 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.

Read the [best practices for exporting reports](/brand-api-reference/reference/report-export/best-practices-for-exporting-reports.md) to learn more.

### The `Reports` page limit

Beginning **September 1, 2025**, the `Reports` API endpoint enforces 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.

![](https://files.readme.io/e6189a72b6961cef535a73cfbe474527503b871ffe66204c78e0698c86724ee7-undraw_financial-data_lbci.png)

#### Why is the change needed?

Using the `Reports` endpoint’s pagination is inefficient for large datasets, 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 `ReportExport` 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`).

```json
{
"@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](/brand-api-reference/reference/report-export/report-export.md).

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

```csv
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](https://app.impact.com/support/portal.ihtml?createTicket=true)).

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`       |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://integrations.impact.com/brand-api-reference/reference/report-export/migrate-to-reportexport.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
