> ## Documentation Index
> Fetch the complete documentation index at: https://developers.criteo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# /2025-10/marketing-solutions/marketplace-performance-outcomes/stats/campaigns

> ## Dimensions
            
Get performance statistics aggregated for _campaigns_. The campaign id appears
in the output as the first column.
            
Aggregation can be done by `hour`, `day`, `month`, or `year` aligned with the user timezone
if provided. The aggregation interval size is controlled by `intervalSize`. The time
interval appears in the output as the second column.
            
## Metrics
            
The metrics reported by this endpoint are
            
.  | Metric Group | Description
---|--------------|------------
A | impressions | Number of times product is shown in a banner
B | clicks | Number of clicks on product
C | cost | Amount spent for clicks on products
D | saleUnits | Number of products sold attributed to clicks
E | revenue | Revenue generated by sales
F | CR = Conversion Rate | salesUnits / clicks
G | CPO = Cost Per Order | cost / salesUnits
H | COS = Cost of Sale | cost / revenue
I | ROAS = Return On Add Spend | revenue / cost
            
The last six metrics can be computed in two ways depending on the policy to count only
the sales that result from clicks on the same sellers product in a banner
(same-seller) or not (any-seller).  Reporting can be controlled by `clickAttributionPolicy`.
            
The 9 (or 15) metric values appear in the output as the final 9 (or 15) columns.
            
## Filtering
            
The results can be filtered by campaign, date or count.
            
Filtering the results to events associated with a specific campaign is done by setting
the `campaignId` filter parameter to the desired value.
            
Filtering the results to events
that happened in a time interval is done by setting the `startDate` and
`endDate` filter parameters using the `yyyy-MM-DD` format. The start date
includes all events timestamped since the beginning of that day while the end
date includes events until the end of day. The maximum duration of the date
range is 1 year. If the aggregation interval is `hour`, then the maximum
duration of the date range is 31 days. Note that month and year aggregate values
may contain partial data for the interval if filtering by date.
            
Filtering the results to a maximum number of data rows is done by setting the
`count` filter parameter. When combined with startDate this can be used to perform
simple pagination.
            
## Response Format
            
The representation format can be specified by MIME values in the Accept header.
For now the only supported values for the accept header is `application/json` and
`text/csv`.
            
```json
{
   "columns": [ "campaignId", "month", "impressions", "clicks", "cost", "saleUnits", "revenue", "cr", "cpo", "cos", "roas" ],
   "data": [
       [168423, "2019-05-01", 3969032, 13410, 1111.295, 985, 190758099, 0.073, 1.128, 0.000, 171653.880 ],
       [168423, "2019-06-01", 8479603, 25619, 2190.705, 740, 152783656, 0.028, 2.960, 0.000, 69741.775 ]
       ],
   "rows": 2
}
```
            
The JSON result is an object with three fields (`columns`, `data`, and `rows`). The
“columns” array acts as the header for the data rows. The categorical dimension
column comes first and consists of the campaign id.
The interval column comes next and defines the aggregation period.  The interval size is
determined by the `intervalSize` parameter. This is followed by either nine or
fifteen metrics columns. The first three metrics (impressions, clicks, and cost)
always appear. The remaining depend on the `clickAttributionPolicy` parameter.
            
The “data” array contains data rows whose values match the entries in the
“columns” array. Id dimensions are numbers while name and date dimensions are strings. The metrics are JSON objects
whose type is number. Some of these are natural numbers (e.g. clicks and
impressions) whereas others are decimal values. A divide by zero yields null. The
currency is assumed to be the local currency established by the advertiser.
            
The “row” value is a count of the number of rows in the data array, and can be
used to check the integrity of the data.
            
Further information on the campaign or seller (e.g. the seller name) can be
obtained from the existing V1 or V2 endpoints using the campaign and/or seller
ID values.



## OpenAPI

````yaml https://api.criteo.com/2025-10/marketingsolutions/open-api-specifications.json get /2025-10/marketing-solutions/marketplace-performance-outcomes/stats/campaigns
openapi: 3.0.1
info:
  title: Criteo API
  description: Criteo API - MarketingSolutions
  version: 2025-10
servers:
  - url: https://api.criteo.com
security:
  - oauth: []
tags:
  - name: Advertiser
  - name: Analytics
  - name: Audience
  - name: Campaign
  - name: Creative
  - name: Gateway
  - name: Reco
paths:
  /2025-10/marketing-solutions/marketplace-performance-outcomes/stats/campaigns:
    get:
      tags:
        - Campaign
      summary: >-
        /2025-10/marketing-solutions/marketplace-performance-outcomes/stats/campaigns
      description: "## Dimensions\r\n            \r\nGet performance statistics aggregated for _campaigns_. The campaign id appears\r\nin the output as the first column.\r\n            \r\nAggregation can be done by `hour`, `day`, `month`, or `year` aligned with the user timezone\r\nif provided. The aggregation interval size is controlled by `intervalSize`. The time\r\ninterval appears in the output as the second column.\r\n            \r\n## Metrics\r\n            \r\nThe metrics reported by this endpoint are\r\n            \r\n.  | Metric Group | Description\r\n---|--------------|------------\r\nA | impressions | Number of times product is shown in a banner\r\nB | clicks | Number of clicks on product\r\nC | cost | Amount spent for clicks on products\r\nD | saleUnits | Number of products sold attributed to clicks\r\nE | revenue | Revenue generated by sales\r\nF | CR = Conversion Rate | salesUnits / clicks\r\nG | CPO = Cost Per Order | cost / salesUnits\r\nH | COS = Cost of Sale | cost / revenue\r\nI | ROAS = Return On Add Spend | revenue / cost\r\n            \r\nThe last six metrics can be computed in two ways depending on the policy to count only\r\nthe sales that result from clicks on the same sellers product in a banner\r\n(same-seller) or not (any-seller).  Reporting can be controlled by `clickAttributionPolicy`.\r\n            \r\nThe 9 (or 15) metric values appear in the output as the final 9 (or 15) columns.\r\n            \r\n## Filtering\r\n            \r\nThe results can be filtered by campaign, date or count.\r\n            \r\nFiltering the results to events associated with a specific campaign is done by setting\r\nthe `campaignId` filter parameter to the desired value.\r\n            \r\nFiltering the results to events\r\nthat happened in a time interval is done by setting the `startDate` and\r\n`endDate` filter parameters using the `yyyy-MM-DD` format. The start date\r\nincludes all events timestamped since the beginning of that day while the end\r\ndate includes events until the end of day. The maximum duration of the date\r\nrange is 1 year. If the aggregation interval is `hour`, then the maximum\r\nduration of the date range is 31 days. Note that month and year aggregate values\r\nmay contain partial data for the interval if filtering by date.\r\n            \r\nFiltering the results to a maximum number of data rows is done by setting the\r\n`count` filter parameter. When combined with startDate this can be used to perform\r\nsimple pagination.\r\n            \r\n## Response Format\r\n            \r\nThe representation format can be specified by MIME values in the Accept header.\r\nFor now the only supported values for the accept header is `application/json` and\r\n`text/csv`.\r\n            \r\n```json\r\n{\r\n   \"columns\": [ \"campaignId\", \"month\", \"impressions\", \"clicks\", \"cost\", \"saleUnits\", \"revenue\", \"cr\", \"cpo\", \"cos\", \"roas\" ],\r\n   \"data\": [\r\n       [168423, \"2019-05-01\", 3969032, 13410, 1111.295, 985, 190758099, 0.073, 1.128, 0.000, 171653.880 ],\r\n       [168423, \"2019-06-01\", 8479603, 25619, 2190.705, 740, 152783656, 0.028, 2.960, 0.000, 69741.775 ]\r\n       ],\r\n   \"rows\": 2\r\n}\r\n```\r\n            \r\nThe JSON result is an object with three fields (`columns`, `data`, and `rows`). The\r\n“columns” array acts as the header for the data rows. The categorical dimension\r\ncolumn comes first and consists of the campaign id.\r\nThe interval column comes next and defines the aggregation period.  The interval size is\r\ndetermined by the `intervalSize` parameter. This is followed by either nine or\r\nfifteen metrics columns. The first three metrics (impressions, clicks, and cost)\r\nalways appear. The remaining depend on the `clickAttributionPolicy` parameter.\r\n            \r\nThe “data” array contains data rows whose values match the entries in the\r\n“columns” array. Id dimensions are numbers while name and date dimensions are strings. The metrics are JSON objects\r\nwhose type is number. Some of these are natural numbers (e.g. clicks and\r\nimpressions) whereas others are decimal values. A divide by zero yields null. The\r\ncurrency is assumed to be the local currency established by the advertiser.\r\n            \r\nThe “row” value is a count of the number of rows in the data array, and can be\r\nused to check the integrity of the data.\r\n            \r\nFurther information on the campaign or seller (e.g. the seller name) can be\r\nobtained from the existing V1 or V2 endpoints using the campaign and/or seller\r\nID values."
      operationId: GetMarketplaceCampaignsStats
      parameters:
        - name: advertiserId
          in: query
          description: >-
            Filter metrics to this advertiser. Strongly recommended — omitting
            this on large accounts causes timeouts.
          schema:
            type: integer
            format: int32
        - name: campaignId
          in: query
          description: Show only metrics for this campaign (default all campaigns)
          schema:
            type: string
        - name: clickAttributionPolicy
          in: query
          description: >-
            Specify the click attribution policy for salesUnits, revenue, CR,
            CPO, COS, and ROAS
          schema:
            enum:
              - Both
              - SameSeller
              - AnySeller
            type: string
            default: AnySeller
        - name: count
          in: query
          description: Return up to the first count rows of data (default is all rows)
          schema:
            type: integer
            format: int32
        - name: endDate
          in: query
          description: >-
            Filter out all events that occur after date (default is today’s
            date)
          schema:
            type: string
            format: date-time
        - name: intervalSize
          in: query
          description: >-
            Specify the aggregation interval for events used to compute stats
            (default is "day")
          schema:
            enum:
              - Hour
              - Day
              - Month
              - Year
            type: string
            default: Day
        - name: startDate
          in: query
          description: >-
            Filter out all events that occur before date (default is the value
            of `endDate`)
          schema:
            type: string
            format: date-time
        - name: timeZoneId
          in: query
          description: Specify the timezone used in the aggregations (IANA code).
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatsReportMessage'
      security:
        - oauth:
            - MarketingSolutions_Campaign_Read
components:
  schemas:
    StatsReportMessage:
      type: object
      properties:
        columns:
          type: array
          items:
            type: string
          description: >-
            List of column names for the report (e.g. campaignId, sellerId, day,
            impressions, clicks, cost, etc.)
          nullable: true
        data:
          type: array
          items:
            type: array
            items: {}
          description: >-
            Array of data rows, each row is an array of values matching the
            columns order
          nullable: true
        links:
          type: object
          description: Pagination links (empty object if no pagination)
          nullable: true
        rows:
          type: integer
          description: Total number of data rows in the report
          format: int32
          nullable: true
      description: >-
        A tabular stats report with column headers and data rows. Each row in
        'data' is an array of values matching the order of 'columns'.
      example:
        columns:
          - campaignId
          - sellerId
          - sellerName
          - day
          - impressions
          - clicks
          - cost
          - saleUnits
          - revenue
          - cr
          - cpo
          - cos
          - roas
        data:
          - - 436017
            - 10656107
            - AutoShop NYC
            - '2026-04-01'
            - 75
            - 1
            - 0.05
            - 0
            - 0
            - 0
            - null
            - null
            - 0
        rows: 1
        links: {}
  securitySchemes:
    oauth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.criteo.com/oauth2/token
          scopes: {}
        authorizationCode:
          authorizationUrl: https://api.criteo.com/oauth2
          tokenUrl: https://api.criteo.com/oauth2/token
          scopes: {}

````