Back to Bidders

AppNexus

Features

Bidder Code appnexus Prebid.org Member yes
Prebid.js Adapter yes Prebid Server Adapter yes
Media Types display, video, native Multi Format Support check with bidder
TCF-EU Support yes IAB GVL ID 32
GPP Support some (check with bidder) DSA Support yes
USP/CCPA Support yes COPPA Support yes
Supply Chain Support yes Demand Chain Support check with bidder
Safeframes OK check with bidder Supports Deals check with bidder
Floors Module Support yes First Party Data Support no
User IDs all (with commercial activation) ORTB Blocking Support check with bidder
Privacy Sandbox check with bidder Prebid Server App Support check with bidder

Table of Contents

All AppNexus (Xandr) placements included in a single call to requestBids must belong to the same parent Publisher. If placements from two different publishers are included in the call, the AppNexus bidder will not return any demand for those placements.
Note: This requirement does not apply to adapters that are aliasing the AppNexus adapter.

Bid Params

Starting with Prebid.js version 7.36.0, an update was made to the appnexusBidAdapter.js file to support bid params in a lower-case underscore format (eg invCode to inv_code) similar to how the params are formatted for the Prebid Server AppNexus bidder. This change was implemented to streamline publisher setups for both projects instead of maintaining separate versions of the same params depending on what setup is used. To avoid breaking changes, the old ‘camelCase’ format is still currently supported for all AppNexus bid params in the appnexusBidAdapter.js file. If you are using an older version of Prebid.js, you will need to continue to use the older ‘camelCase’ format as appropriate. The table below will reflect both formats, though it’s recommended to use the lower-case underscore format where possible going forward (assuming you’re using a compatible version of Prebid.js).

Name Scope Description Example Type
placement_id (PBS+PBJS) or placementId (PBJS) required The placement ID from AppNexus. You may identify a placement using the invCode and member instead of a placement ID. This parameter can be either a string or integer for Prebid.js, however integer is preferred. Legacy code can retain the string value. Prebid Server requires an integer value. 234234 integer
member optional The member ID from AppNexus. Must be used with invCode. '12345' string
invCode or inv_code optional The inventory code from AppNexus. Must be used with member. 'abc123' string
publisherId or publisher_id optional The publisher ID from AppNexus. It is used by the AppNexus end point to identify the publisher when placement id is not provided and invCode goes wrong. The publisherId parameter can be either a string or integer for Prebid.js, however integer is preferred. 12345 integer
frameworks optional Array of integers listing API frameworks for Banner supported by the publisher. [1,2] array of integer
user optional Object that specifies information about an external user. See User Object for details. user: { age: 25, gender: 0, dnt: true} object
allowSmallerSizes or allow_smaller_sizes optional If true, ads smaller than the values in your ad unit’s sizes array will be allowed to serve. Defaults to false. true boolean
usePaymentRule (PBJS) or use_pmt_rule (PBS+PBJS) optional If true, Appnexus will return net price to Prebid.js after publisher payment rules have been applied. true boolean
keywords optional A set of key-value pairs applied to all ad slots on the page. Mapped to buy-side segment targeting (login required). A maximum of 100 key/value pairs can be defined at the page level. Each tag can have up to 100 additional key/value pairs defined. Values can be empty. See Passing Keys Without Values below for examples. If you want to pass keywords for all adUnits, see Auction Level Keywords for an example. Note that to use keyword with the Prebid Server adapter, that feature must be enabled for your account by an AppNexus account manager. keywords: { genre: ['rock', 'pop'] } object
video optional Object containing video targeting parameters. See Video Object for details. video: { playback_method: ['auto_play_sound_off'] } object
app optional Object containing mobile app parameters. See the App Object for details. app : { id: 'app-id'} object
reserve optional Sets a floor price for the bid that is returned. If floors have been configured in the AppNexus Console, those settings will override what is configured here unless ‘Reserve Price Override’ is checked. See Xandr docs 0.90 float
position optional Identify the placement as above or below the fold. Allowed values: Unknown: unknown; Above the fold: above; Below the fold: below 'above' string
trafficSourceCode or traffic_source_code optional Specifies the third-party source of this impression. 'my_traffic_source' string
supplyType or supply_type optional Indicates the type of supply for this placement. Possible values are web, mobile_web, mobile_app 'web' string
pubClick or pub_click optional Specifies a publisher-supplied URL for third-party click tracking. This is just a placeholder into which the publisher can insert their own click tracker. This parameter should be used for an unencoded tracker. This parameter is expected to be the last parameter in the URL. Please note that the click tracker placed in this parameter will only fire if the creative winning the auction is using AppNexus click tracking properly. 'http://click.adserver.com/' string
extInvCode or ext_inv_code optional Specifies predefined value passed on the query string that can be used in reporting. The value must be entered into the system before it is logged. '10039' string
externalImpId or external_imp_id optional Specifies the unique identifier of an externally generated auction. 'bacbab02626452b097f6030b3c89ac05' string
generate_ad_pod_id optional Signal to AppNexus to split impressions by ad pod and add unique ad pod id to each request. Specific to long form video endpoint only. Supported by Prebid Server, not Prebid JS. true boolean

Video Object

Name Description Type
minduration Integer that defines the minimum video ad duration in seconds. integer
maxduration Integer that defines the maximum video ad duration in seconds. integer
context A string that indicates the type of video ad requested. Allowed values: "pre_roll"; "mid_roll"; "post_roll"; "outstream". string
skippable Boolean which, if true, means the user can click a button to skip the video ad. Defaults to false. boolean
skipoffset Integer that defines the number of seconds until an ad can be skipped. Assumes skippable setting was set to true. integer
playback_method A string that sets the playback method supported by the publisher. Allowed values: "auto_play_sound_on"; "auto_play_sound_off"; "click_to_play"; "mouse_over"; "auto_play_sound_unknown". string
frameworks Array of integers listing API frameworks supported by the publisher. Allowed values: None: 0; VPAID 1.0: 1; VPAID 2.0: 2; MRAID 1.0: 3; MRAID 2.0: 4; ORMMA: 5; OMID 1.0 6. Array<integer>

User Object

Name Description Example Type
age The age of the user. 35 integer
externalUid or external_uid Specifies a string that corresponds to an external user ID for this user. '1234567890abcdefg' string
segments Specifies the segments to which the user belongs. [1, 2] Array<integer>
gender Specifies the gender of the user. Allowed values: Unknown: 0; Male: 1; Female: 2 1 integer
dnt Do not track flag. Indicates if tracking cookies should be disabled for this auction true boolean
language Two-letter ANSI code for this user’s language. EN string

App Object

AppNexus supports using prebid within a mobile app’s webview. If you are interested in using an SDK, please see Prebid Mobile instead.

Name Description Example Type
id The App ID. 'B1O2W3M4AN.com.prebid.webview' string
device_id Object that contains the advertising identifiers of the user (idfa, aaid, md5udid, sha1udid, or windowsadid). { aaid: "38400000-8cf0-11bd-b23e-10b96e40000d" } object
geo Object that contains the latitude (lat) and longitude (lng) of the user. { lat: 40.0964439, lng: -75.3009142 } object

Custom Targeting keys

AppNexus returns custom keys that can be sent to the adserver through bidderSettings: buyerMemberId, dealPriority, and dealCode. The following snippet demonstrates how to add these custom keys as key-value pairs.

pbjs.bidderSettings = {
  appnexus: {
    adserverTargeting: [
      {
        key: "apn_buyer_memberid", // Use key configured in your adserver
        val: function(bidResponse) {
          return bidResponse.appnexus.buyerMemberId;
        }
      },
      {
        key: "apn_prio", // Use key configured in your adserver
        val: function(bidResponse) {
          return bidResponse.appnexus.dealPriority;
        }
      }, {
        key: "apn_dealcode", // Use key configured in your adserver
        val: function(bidResponse) {
          return bidResponse.appnexus.dealCode;
        }
      }
    ]
  }
}

Auction Level Keywords

It’s possible to pass a set of keywords for the whole request, rather than a particular adUnit. Though they would apply to all adUnits (which include the appnexus bidder) in an auction, these keywords can work together with the bidder level keywords (if for example you want to have specific targeting for a particular adUnit).

Below is an example of how to define these auction level keywords for the appnexus bidder:

pbjs.setConfig({
  appnexusAuctionKeywords: {
    genre: ['classical', 'jazz'],
    instrument: 'piano'
  }
});

Like in the bidder.params.keywords, the values here can be empty. Please see the section immediately below for more details.

Passing Keys Without Values

It’s possible to use the keywords parameter to define keys that do not have any associated values. Keys with empty values can be created in Prebid.js and can also be sent through Prebid Server to AppNexus. The following are examples of sending keys with empty values:

keywords: {
  myKeyword: '',
  myOtherKeyword: ['']
}

The preceding example passes the key myKeyword with an empty value. The key myOtherKeyword contains an empty value array.

You can define keys with values and without values in the same keywords definition. In this next example, we’ve defined the key color with an array of values: red, blue, and green. We’ve followed that with the key otherKeyword with an empty value array.

keywords: {
  color: ['red', 'blue', 'green'],
  otherKeyword: ['']
}

First Party Data

Publishers should use the ortb2 method of setting First Party Data.

At this time however, the appnexus bidder fully reads the First Party Data when using the Prebid Server and Prebid Server Premium endpoints. The client-side version of the appnexus bidder has partial support to read all the various keywords parameters from the First Party Data fields. There is also some special support with the segment fields but only from known sources which are specifically configured. All other First Party Data fields are not read at this time.

PBS/PSP supports all first party data fields: site, user, segments, and imp-level first party data.

User Sync in AMP

If you are syncing user id’s with Prebid Server and are using AppNexus’ managed service, see AMP Implementation Guide cookie-sync instructions for details.

Mobile App Display Manager Version

The AppNexus endpoint expects imp.displaymanagerver to be populated for mobile app sources requests, however not all SDKs will populate this field. If the imp.displaymanagerver field is not supplied for an imp, but request.app.ext.prebid.source and request.app.ext.prebid.version are supplied, the adapter will fill in a value for diplaymanagerver. It will concatenate the two app fields as <source>-<version> fo fill in the empty displaymanagerver before sending the request to AppNexus.

Debug Auction

Enabling the AppNexus Debug Auction feature should only be done for diagnosing the AppNexus auction. Do not enable this feature in a production setting where it may impact users.

To understand what is happening behind the scenes during an auction, you can enable a debug auction by adding an apn_prebid_debug cookie with a JSON string. For example:

{ "enabled": true, "dongle": "QWERTY", "debug_timeout": 1000, "member_id": 958 }

To view the results of the debug auction, add the pbjs_debug=true query string parameter and open your browser’s developer console.

Name Description Example Type
enabled Toggle the debug auction to occur true boolean
dongle Your account’s unique debug password. QWERTY string
member_id The ID of the member running the debug auction 958 integer
debug_timeout The timeout for the debug auction results to be returned 3000 integer

Prebid Server Test Request

The following test parameters can be used to verify that Prebid Server is working properly with the server-side Appnexus adapter. This example includes an imp object with an Appnexus test placement ID and sizes that would match with the test creative.

"imp": [{
  "id": "some-impression-id",
  "banner": {
    "format": [{
      "w": 600,
      "h": 500
    }, {
      "w": 300,
      "h": 600
    }]
  },
  "ext": {
    "appnexus": {
      "placement_id": 13144370
    }
  }
}]

"Send All Bids" Ad Server Keys

These are the bidder-specific keys that would be targeted within GAM in a Send-All-Bids scenario. GAM truncates keys to 20 characters.
hb_pb_appnexus hb_bidder_appnexus hb_adid_appnexus
hb_size_appnexus hb_source_appnexus hb_format_appnexus
hb_cache_host_appnex hb_cache_id_appnexus hb_uuid_appnexus
hb_cache_path_appnex hb_deal_appnexus

Back to Bidders