GuidesAPI ReferenceChangelog
GuidesAPI ReferenceChangelogLog In
Guides

Revenue Report

The revenue report is for supply account owners (e.g. retailers) to understand where their retail media revenue is coming from, providing full visibility across all advertisers, media, and direct/indirect sales channels.

The revenue report gives insight on generated revenue, delivered impressions and clicks, average rates, and performances.

Endpoints

The revenue report uses an asynchronous endpoint that is used to create the report, and then using the report id to download or view the report status using the following GET endpoint requests.

VerbEndpointDescription
POST/retail-media/reports/revenueGenerate a retailer revenue report
GET/reports/{reportId}/outputDownload Output of a Specific Report
GET/reports/{reportId}/statusGet Status of a Specific Report

Attributes

id

    Data Type: string

    Description: The supply account ID to pull results for

    • Note: The revenue report supports pulling results for a single retailer per call. For Apps with access to multiple retailers, the ids array option is not yet available in this current report version.

    Accepted Values: A single supply account id in a string format


ids

    Data Type: string array

    Description: Campaign ids to report on

    Accepted Values: An array of campaign ids to report on


reportType

    Data Type: string

    Description: the report type allows to specify the report breakdown. It allows to generate the report to view revenue distribution by advertiser, brand, environment, pageCategory, pageType

    Accepted Values: advertiser, brand, environment, productCategory, pageType


revenueType

    Data Type: enum

    Description: The campaign type used to filter report results. If the revenue type filter is not specified, the report will return all existing revenue data for sponsored products and preferred deals within the specified timeframe.

  • Accepted Values: auction, preferred


soldBy

    Data Type: string

    Description: The campaign buy types

    Accepted Values: directSold, indirectSold, privateMarket


salesChannel

    Data Type: enum

    Description:Filter the sales channel the attributed purchase was made through

    Accepted Values: offline, online


campaignSubType

    Data Type: enum

    Description: The campaign subtype booked by the advertiser

    Accepted Values: auctionAndPreferred, lockout


format

    Data Type: enum

    Description: The report format type to return results

    Accepted Values: json, json-compact, json-newline, csv


startDate

    Data Type: date-time

    Description: Earliest day to report; inclusive

    Accepted Values: YYYY-MM-DD


endDate

    Data Type: date-time

    Description: Latest day to report; inclusive

    Accepted Values: YYYY-MM-DD


metrics

    Data Type:string

    Description:Metrics attributes to filter report results

    Accepted Values: impressions, clicks, spend, sales, units, cpo, roas, openAuctionRevenue, preferredDealsRevenue, avgCpc, avgCpm


dimensions

    Data Type:string

    Description:Dimension attributes to filter report results

    Accepted Values: date, campaignId, campaignName, accountId, environment, advProductCategory, brandId, brandName, pageTypeName, advProductName, advProductGtin, advProductMpn, advProductId


timezone

    Data Type: string

    Description: Time zone of the report

  • Accepted Values: database tz syntax , eg. America/New_York, Europe/Paris, Asia/Tokyo, UTC

viewAttributionWindow

    Data Type: string

    Description: View attribution window

  • Accepted Values: 1D, 7D, 14D, 30D, none

clickAttributionWindow

    Data Type: string

    Description: Click attribution window

  • Accepted Values: 7D, 14D, 30D, none

Generate Revenue Report

https://api.criteo.com/{version}/retail-media/reports/revenue

Sample Request

curl -L 'https://api.criteo.com/2024-01/retail-media/reports/revenue' \
-H 'Content-Type: application/json' \
-H 'Accept: text/plain' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
	"data": {
		"type": "<string>",
		"attributes": {
			"endDate": "2024-02-14",
			"startDate": "2024-02-01",
			"reportType": "environment",
			"revenueType": "auction",
			"id": "203209148566716416",
			"metrics": [
				"avgCpm",
				"openAuctionRevenue"
			],
			"dimensions": [
				"brandId",
				"pageTypeName"
			],
			"format": "json",
			"soldBy": "indirectSold",
			"campaignSubType": "auctionAndPreferred",
			"clickAttributionWindow": "7D",
			"viewAttributionWindow": "1D",
			"campaignType": "sponsoredProducts",
			"salesChannel": "online",
			"timezone": "UTC"
		}
	}
}'

Sample Response

{
    "data": {
        "attributes": {
            "status": "pending",
            "rowCount": 0,
            "fileSizeBytes": 0,
            "md5CheckSum": null,
            "createdAt": "2024-02-14T18:20:25.130Z",
            "expiresAt": null,
            "message": null,
            "id": "xxxxxx-xxxx-xxxx-xxxx-97debd9190bc"
        },
        "id": "xxxxxx-xxxx-xxxx-xxxx-97debd9190bc",
        "type": "StatusResponse"
    },
    "warnings": [
        {
            "traceId": null,
            "traceIdentifier": null,
            "type": "validation",
            "code": "ignored-report-type",
            "instance": null,
            "title": "Report Type has been ignored",
            "detail": "Report Type has been ignored since Dimensions and Metrics has been provided. Please remove them if you want to use one of the templates.",
            "source": null
        }
    ],
    "errors": []
}

Get Status of a Specific Report

https://api.criteo.com/{version}/retail-media/reports/{reportId}/status

Sample Request

curl -L 'https://api.criteo.com/{version}/retail-media/reports/22fa642d-ab8a-463c-a2f6-fb174c2f72dd/status' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <MY_ACCESS_TOKEN>'

Sample Response

{
    "data": {
        "type": "RetailMediaReportStatus",
        "id": "22fa642d-ab8a-463c-a2f6-fb174c2f72dd",
        "attributes": {
            "status": "success",
            "rowCount": 2,
            "fileSizeBytes": 341,
            "md5Checksum": "f43cf2503a31a100f7b81db3c14d3fae",
            "createdAt": "2023-07-10T16:00:32.000Z",
            "expiresAt": "2023-07-17T16:00:32.000Z",
            "message": null
        }
    }
}

Download Output of a Specific Report

https://api.criteo.com/{version}/retail-media/reports/{reportId}/output

Sample Request

curl -X GET "https://api.criteo.com/{version}/retail-media/reports/2e733b8c-9983-4237-aab9-17a42f4267cb/output" \
    -H "Authorization: Bearer <MY_ACCESS_TOKEN>"

Sample Responses

Report broken down by advertiser by JSON

[
    {
        "brandId": -1,
        "pageTypeName": "category",
        "openAuctionRevenue": 0E-8,
        "avgCpm": null
    },
    {
        "brandId": 1234,
        "pageTypeName": "category",
        "openAuctionRevenue": 63.94733334,
        "avgCpm": null
    },
    {
        "brandId": 5678,
        "pageTypeName": "category",
        "openAuctionRevenue": 762.95292406,
        "avgCpm": null
    }
]

Metrics and Dimensions

MetricReport TypesRevenue TypeDescription
dateAll report typesauction, preferredThe date of when revenue was generated
accountIdAdvertiser onlyauction, preferredThe advertiser id
accountNameAdvertiser onlyauction, preferredThe advertiser where revenue originated from
environmentEnvironment onlyauction, preferredThe environment type where revenue was generated
brandIdBrand onlyauction onlyThe brand id
brandNameBrand onlyauction onlyThe brand name
pageTypeNamePage Type onlyauction, preferredThe page type from where revenue was generated
impressionsAll report typesauction, preferredMeasures the number of impressions generated by the advertiser, brand, page type, page category or environment
clicksAll report typesauction, preferredNumber of clicks the advertiser, brand, page type, page category or environment helped generate revenue for the retailer
openAuctionRevenueAll report typesauction, preferredThe total amount of open auction revenue generated on the set date
preferredDealsRevenueAll report typesauction, preferredThe total amount of preferred deals revenue generated on the set date
avgCpcAll report typesauctionAverage cost-per-click calculated by dividing openAuctionRevenue / clicks or preferredDealsRevenue / clicks
avgCPM All report typespreferredAverage cost per mille calculated by diving
preferredDealsRevenue / impressions * 1000
roasAll report typesauction, preferredReturn-on-ad-spend (ROAS), calculated by dividing sales / openAuctionRevenue or sales / preferredDealsRevenue
unitsAll report typesauction, preferredNumber of units attributed to the generated revenue
salesAll report typesauction, preferredNumber of sales attributed to the generated revenue

Responses

ResponseDescription
🔵 200Call executed with success
🔴 400Common Validation Errors
- endDate cannot be more than 100 days from startDate - Using a date range with more than 100 days apart
- reportType invalid - calling an unsupported report type will throw a 400 error
- timeZone must be a valid timezone - using a time zone value that is not listed in the list tz database time zones
- format invalid - using an unsupported file format