Skip to content

User-Level Ad Revenue API

Use this API to retrieve user-level revenue data. You can retrieve this data aggregated for a particular user or with one row per impression.

User-level revenue data is available eight hours after UTC day end. So, for example, data for UTC 2019-01-01 is available on UTC 2019-01-02 after 08:00.

You can share user-level and impression-level ad revenue data with your mobile measurement partner of choice, such as Adjust, AppsFlyer, GameAnalytics or Singular, for all supported networks. Starting in SDK version 10.3.0, you can also access impression-level user revenue data on the client side. You can read more about this in Platform > Overview > Advanced Settings.

There is also a Server-to-Server Impression Revenue API by which MAX posts data to a tracking URL of your choosing whenever it records a MAX impression. See the S2S Impression Revenue API documentation page for more information.

Request Format

Target URL«report-key»&date=«report-day»&platform=«app-platform»&application=«app-package-name»&store_id=«app-store-ID»&aggregated=«is-aggregated»

Request Parameters

aggregatedWhether the data should be aggregated (per user) or not (per impression). Defaults to true.false
api_keyReport Key, for authentication.tgCe3d7SFRU0S…304ZKs6ba
applicationApplication package name (for Android) or bundle ID (for iOS). (You cannot use this parameter if you define store_id)com.mycompany.application
dateDay to return data for, in «YYYY»-«MM»-«DD» format.2019-02-06
platformApplication platform: android, fireos, or
store_idThe numeric portion of the iTunes ID on iOS, or the app’s package name on Android. If you do not know the iTunes ID, use the bundle ID instead. You cannot use this parameter if you define application.1207472156

This API has a request window of 45 days. Make sure the date parameters are within the last 45 days.

Response Format

Response Body

"status": 200,
"url": "[…]927dd"
"ad_revenue_report_url": "[…]927dd"

Response Parameters

ad_revenue_report_urlLocation of the CSV file with all revenue including estimated Meta Audience Network Bidding data.
fb_estimated_revenue_urlLocation of the CSV file with only estimated Meta Audience Network Bidding data. Please note that these numbers may differ from actuals since Meta Audience Network Bidding data is calculated using estimated revenue data. This option is only available on aggregated requests.
statusStatus of the request: 200 if a user report can be accessed.
urlLocation of the CSV file that excludes estimated Meta Bidding data.

User-Level Revenue Data CSV Format


Ad Unit ID,Placement,IDFA,IDFV,User Id,Impressions,Revenue


Ad FormatINTER, BANNER, REWARD (Non-Aggregated only).
Ad PlacementThe placement ID of the external ad network that showed the ad (Non-Aggregated only).
Ad Unit IDID of the MAX Ad Unit from which the revenue was generated.
Ad Unit NameName of the MAX Ad Unit from which the revenue was generated (Non-Aggregated Only).
CountryThe two-letter country code of the impression (Non-Aggregated only).
Custom DataCustom data passed in from the integration.
DateTime of the impression (Non-Aggregated only).
Device TypePHONE, TABLET (Non-Aggregated only).
IDFAAdvertising identifier: IDFA for iOS devices, GAID for Android devices.
IDFVIdentifier for vendor.
ImpressionsThe number of ads displayed to the user (Aggregated only).
NetworkThe Ad Network that generated the impression. Ad Network values can be found in the “Network API Name” column of this table. (Non-Aggregated ad_revenue_report_url Only)
PlacementThe Ad Placement Name where the user generated impressions and revenue.
RevenueThe revenue generated by the user, in USD, expressed with six-decimal precision.
User IDOptional ID of the user, set via the AppLovin SDK. (See the “Setting an Internal User ID” section below.)
WaterfallMAX ad unit waterfall name (Non-Aggregated only).

Setting an Ad Placement Name

The following code snippets show you how you can add a placement name to an ad unit. The value of the placement name replaces the {PLACEMENT} macro in postback requests:

AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
UAppLovinMAX::CreateBanner(«ad-unit-ID», «position»);
UAppLovinMAX::SetBannerPlacement(«ad-unit-ID», «placement»);
MaxSdk.CreateBanner(«ad-unit-ID», «position»);
MaxSdk.SetBannerPlacement(«ad-unit-ID», "«placement»");
AppLovinMAX.createBanner(«ad-unit-ID», «position»);
AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
AppLovinMAX.createBanner(«ad-unit-ID», «position»);
AppLovinMAX.set_banner_placement(«ad-unit-ID», «placement»);
adViewAd.setPlacement( "«placement»" );
JavaScript (Cordova)
AppLovinMAX.createBanner(«ad-unit-ID», «position»);
AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
JavaScript (React Native)
AppLovinMAX.createBanner(«ad-unit-ID», «position»);
AppLovinMAX.setBannerPlacement(«ad-unit-ID», «placement»);
adView.setPlacement( "«placement»" )
applovin.create_banner(«ad-unit-ID», «position»)
applovin.set_banner_placement(«ad-unit-ID», «placement»)
adView.placement = @"«placement»";
[adView loadAd];
adView.placement = "«placement»"

Setting an Internal User ID

The following code snippets show how to tag users with your own internal User ID. The maximum size of the User ID string is 8192 characters.


Custom Data

The following code snippets show you how to add custom String data to postbacks. This String data replaces the {CUSTOM_DATA} macro in these postbacks. AppLovin recommends that your string contain fewer than 8192 characters.

Banners & MRECs
MaxSdk.SetBannerCustomData("«ad-unit-ID»", "«custom-data»"); // Banners
MaxSdk.SetMRecCustomData("«ad-unit-ID»", "«custom-data»"); // MRECs
MaxSdk.ShowInterstitial(«adUnitIdentifier», «placement», «custom data»);
Rewarded Ads
MaxSdk.ShowRewardedAd(«adUnitIdentifier», «placement», «custom data»);
Native Ads
nativeAdLoader.setCustomData( "«custom data»" );