Deals for Bidders
Xandr offers the ability to bid on deals with our platform sellers. This page walks you through the bidding process.
Tip
A deal auction can be open or private, depending on how the seller defined the deal. For information about how these different types of auctions work, see Deal Auction Mechanics.
Note
The member cannot be changed after a deal has been created.
Buying deal inventory
Step 1. Configure your system to handle deals
Ensure that your system is configured to read deal IDs in the bid request and format a proper deal-specific bid response. For more information, see the Example Request/Response Chain. Please also make sure to review Deal Auction Mechanics to understand how Xandr conducts auction in different situations.
Step 2. Reach out to your Xandr representative
Once you've configured your system to handle deal ID requests and responses appropriately, reach out to your Xandr representative to enable you for deals on Xandr. Enabling you for deals may involve:
- Validating how you decision and respond to deal requests
- Making you visible to sellers in our system
Step 3. Tell your buyers to start negotiating deals
Your buyers will negotiate deals with sellers directly. Xandr is not involved in the process. Here's the process that your buyers should follow:
- Buyer negotiates a deal with a seller off-line.
- Buyer gives their Xandr member ID to the seller. If they don't know their member ID, you should help them identify it.
- Seller sets up a deal with the buyer within the UI
- Seller gives the deal ID to the buyer.
- Buyer enters the deal ID into your bidder system for targeting.
Step 4. Validate your buyers' deals
Once a buyer has set up a deal with a Xandr seller, you must ensure that your bidder profiles are not blocking any of the parameters that apply to the deal inventory. For example, if a profile is filtering out the seller, creative size, or other parameter that applies to the deal inventory, you will not receive those bid requests. For details about updating or creating bidder profiles, see the Legacy Bidder Profile Service.
Note
We recommend using the Deal Buyer Access Service to validate that the deal exists in Xandr's system. This will help you avoid targeting a deal that is inactive or not what you expected.
Example:
$ curl -b cookies -c cookies 'https://api.adnxs.com/deal-buyer-access?id=63'
{
"response" : {
"status" : "OK" ,
"count" : 1,
"deal" :
"deals" : {
"id" : 63,
"code" : null ,
"name" : "Private deal for buyer 1085 with floor of $2.50" ,
"description" : null ,
"active" : false ,
"start_date" : "2013-12-01 00:00:00" ,
"end_date" : "2013-12-31 23:59:59" ,
"floor_price" : 2.5,
"currency" : "USD" ,
"use_deal_floor" : true ,
"last_modified" : "2013-12-04 20:39:57" ,
"seller" : {
"id" : 100006,
"name" : "Seller 456"
},
"buyer" : {
"id" : 100007,
"bidder_id" : 2,
"name" : "Buyer 456"
},
"type" : {
"id" : 2,
"name" : "Private Auction"
},
"brands" : [
{
"id" : 1
}
],
"ask_price" : 2.75,
"suggested_min_bid_price" : 3
}
}
}
Example request/response chain
Note
This example is for the Xandr integration of the AppNexus Bidding Protocol.
Bid request
{
"bid_request": {
"timestamp": "2014-04-18 17:00:57",
"bidder_timeout_ms": 2000,
"members": [
{
"id": 1417
},
{
"id": 1625
}
],
"test": true,
"member_ad_profile_id": 555216,
"excluded_attributes": [
2033
],
"tags": [
{
"auction_id_64": 5555508250840350700,
"size": "300x250",
"sizes": [
"300x250"
],
"smaller_sizes_allowed": false,
"position": "unknown",
"tag_format": "iframe",
"site_id": 555526,
"creative_formats_map": "111111111011",
"creative_formats": [
"unknown",
"html-url",
"js-url",
"flash",
"image",
"js-raw",
"html-raw",
"html-iframe",
"vast-url",
"unknown",
"unknown"
],
"ad_profile_id": 555180,
"visibility_profile_id": 5553,
"venue_id": 407258,
"pop_max_width": 300,
"pop_max_height": 250,
"pop_is_prepop": false,
"allowed_media_types": [
1
],
"media_subtypes": [
"banner"
],
"estimated_clear_price": 0.913,
"estimated_average_price": 0.456,
"id": 5555354,
"deals": [
{
"id": 555664,
"member_id": 1625,
"floor_cpm": 0.5,
"sizes": [
"300x250",
"300x600"
]
}
]
}
],
"bid_info": {
"user_id_64": 5555037017052493000,
"no_cookies": false,
"payment_rule_id": 555018,
"selling_member_id": 55578,
"no_flash": false,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36",
"browser": 8,
"operating_system": 11,
"operating_system_extended": 81,
"operating_system_family": 4,
"carrier": 1,
"device_type": 1,
"language": 1,
"accepted_languages": "en-US",
"session_freq": 1,
"pub_session_freq": 1,
"ip_address": "555.1.12.54",
"country": "US",
"within_iframe": false,
"device_ids": {
"sha1udid": "d55555c2314f3789198685914c01425034b5d502",
"md5udid": "caf55557c5b39fb4ad68dabc9808bda1"
},
"publisher_id": 555547,
"userdata_json": "{}",
"segments": [
{
"id": 1,
"member_id": 0,
"code": "cookie_birthday",
"provider": "Xandr",
"last_seen_min": 23274134
}
]
}
}
}
Bid response
{
"bid_response":{
"responses":[
{
"member_id":1625,
"price":0.75,
"creative_id":11,
"auction_id_64": 5555508250840350700,
"deal_id": 555664
}
]
}
}
Notify request error codes
Deal-specific error codes, see Bid Error Codes.
Error | ID | **Description |
---|---|---|
NEC_DEAL_NOT_AVAILABLE |
308 | The deal you specified in your response is not currently active. |
NEC_DEAL_NO_MEMBER |
309 | The deal you specified in your response is not available to your member. |
NEC_DEAL_BELOW_FLOOR |
310 | Your bid was not considered in the auction because it is below the deal's ask price. |
NEC_DEAL_BRAND_BANNED |
311 | The brand associated with your creative is not a valid brand for this deal. |