Digital Platform API - Seller Site Domain report
The Seller Site Domain Report is designed to give sellers information about what kind of inventory is coming through a publisher. For example, as a seller, you might distribute placement tags to your publishers and then want to verify that those tags are running on the inventory you intended. In addition, this report allows you to:
- See what kind of inventory is coming through a publisher so you can understand how to value it
- Guarantee a certain degree of inventory quality to managed buyers
- Optimize on domains for managed campaigns
- Understand the business impact of Xandr audit and categorization
Time frame
The report_interval
field in the JSON request can be set to one of the following:
- yesterday
- last_7_days
- last_30_days
- last_month
- month_to_date
Note
None of the available time ranges will include today's data. The latest data will be from yesterday.
Tip
To run a report for a custom time frame, set the start_date
and end_date
fields in your report request. For more details about these fields, see Report Service.
Data retention period
Data retention period for this report is 60 days.
Dimensions
Column | Type | Filter? | Example | Description |
---|---|---|---|---|
month |
time | "2012-08-01" |
The month when an impression occurred on this placement. | |
day |
time | "2012-08-23" |
The day when an impression occurred on this placement. | |
seller_member_id |
int | Yes | 2718 |
The seller's Xandr member ID. |
seller_member_name |
string | "MegaSeller" |
The seller's name. | |
seller_member |
string | "MegaSeller (2718)" |
Deprecated (as of October 17, 2016). | |
content_category_id |
int | Yes | 23 |
The ID of the universal content category associated with the audited domain. |
content_category_name |
string | "Entertainment" |
The name of the universal content category associated with the audited domain. | |
content_category |
string | "Entertainment (23)" |
Deprecated (as of October 17, 2016). | |
site_id |
int | Yes | 223936 |
The ID of the site containing this placement. |
site_name |
string | "Total-Web Email" |
The name of the site where the impression occurred. | |
site |
string | "Total-Web Email (223936)" |
Deprecated (as of October 17, 2016). | |
site_domain |
string | Yes | "gwar-rules-forever.org" |
The domain where the impression occurred. There are two additional values that may appear in place of a domain, specifically: "deals.unknown" or "managed.unknown" . These mean that we didn't receive a valid domain as the referrer. For example, the domain may be blank or otherwise malformed.Note: In some cases, this field will be populated with a domain that is different than where the impression actually occurred, such as an ad server domain. For more information about why this happens, see Passing Domains Across IFrames below. |
placement_id |
int | Yes | 737099 |
The ID of the placement where the impression occurred. Note: placement_id of 0 may appear for 3rd-party impression trackers. For more information about impression trackers, see the Impression Tracker Service. |
placement_name |
string | "Webmail.com ROS 728x90" |
The name of the placement where the impression occurred. | |
placement |
string | "Webmail.com ROS 728x90 (737099)" |
Deprecated (as of October 17, 2016). | |
publisher_id |
int | Yes | 44389 |
The ID associated with the publisher on whose site the impression occurred. |
publisher_name |
string | "LOL - US" |
The name of the publisher on whose site the impression occurred. | |
publisher |
string | "LOL - US (44389)" |
Deprecated (as of October 17, 2016). | |
imp_type_id |
int | Yes | 6 |
The ID for the type of impression. Possible values (associated types in parentheses):1 ("Blank"): No creative served.2 ("PSA"): A public service announcement served because there were no valid bids and no default creative was available.3 ("Default Error"): A default creative served due to a timeout issue.4 ("Default"): A default creative served because there were no valid bids.5 ("Kept"): Your advertiser's creative served on your publisher's site.6 ("Resold"): Your publisher's impression was sold to a third-party buyer.7 ("RTB"): Your advertiser's creative served on third-party inventory.8 ("PSA Error"): A public service announcement served due to a timeout issue or lack of a default creative.9 ("External Impression"): An impression from an impression tracker.10 ("External Click"): A click from a click tracker. |
imp_type_name |
string | "Resold" |
The name of the type of impression that occurred. For possible values and more information about each type, see imp_type_id . |
|
imp_type |
string | "Resold (6)" |
Deprecated (as of October 17, 2016). | |
audit_type_id |
int | Yes | 3 |
The ID of the type of audit performed on the domain where the impression occurred. |
audit_type_name |
string | "By AppNexus" |
The name of the type of audit performed on the domain where the impression occurred. Allowed values: - "By Seller" : The domain was self-audited.- "By AppNexus" : The domain was audited by Xandr.- "By Seller & AppNexus" : The domain was audited by both the seller and Xandr.- "Unknown Audit Type" : This usually means that the domain is unaudited. In some cases, this means that the domain was not auditable for technical reasons. |
|
audit_type |
string | "By Seller (1)" |
Deprecated (as of October 17, 2016). | |
exposed_for_resale_id |
int | Yes | 0 |
An integer that denotes whether this inventory is exposed for resale. Allowed values:0 (False)1 (True) |
exposed_for_resale |
string | "Not Exposed" |
Whether this inventory is exposed for resale. Allowed values: - "Exposed" - "Not Exposed" |
|
domains_exposed_id |
int | Yes | 1 |
An integer that denotes whether this inventory's domains are exposed for targeting by buyers. Allowed values: - 0 (False)- 1 (True) |
domains_exposed |
string | "Exposed" |
Whether this inventory's domains are exposed for targeting by buyers. Allowed values: - "Exposed" - "Not exposed" |
|
supply_type |
string | Yes | mobile_web |
The seller-classified channel to denominate supply in terms of web, mobile-optimized web, and mobile app impressions. Possible values are - 'web' - 'mobile_app' - 'mobile_web' |
mobile_application_id |
string | Yes | ‘343200656’ (iOS) or ‘com.rovio.angrybirds’ (Android) |
A targetable Apple App Store ID, Google Play package name, or Windows application ID. |
mobile_application_name |
string | Yes | Angry Birds |
The name of the mobile application as it appears in the Apple App and Google Play Stores. |
mobile_application |
string | No | Angry Birds (com.rovio.angrybirds) |
Deprecated (as of October 17, 2016). |
fold_position_id |
int | Yes | 0 |
The ID of the fold position, i.e. where on the page the placement is located. Possible values for impressions: - 0 = "unknown"- 1 = "above"- 2 = "below" |
fold_position |
string | Yes | "Unknown" |
The fold position, i.e. where on the page the placement is located. For allowed values, see fold_position_id . |
age_bucket |
string | Yes | "25-34" |
The bucket for the age of the user. See Age Buckets below for possible values. Note: For impressions older than 100 days, the age_bucket will be "unknown" . |
age_bucket_id |
string | No | "3" |
The ID of the age bucket. See Age Buckets below for possible values. Note: For impressions older than than 100 days, the age_bucket_id will be 0 . |
gender |
string | Yes | "m" , "f" , "u" |
The gender of the user. Note: For impressions older than 100 days, gender will be "u" . |
is_remarketing |
int | Yes | 0 , 1 |
If 1 , the campaign is remarketing. If 0 , the campaign is not remarketing.Note: For impressions older than 100 days, is_remarketing will be -1 . |
imps_filtered_reason_id |
int | Yes | "3" |
The numeric ID associated with the reason why the impression request was filtered out by Xandr's inventory quality controls and the auction was not held. See imps_filtered_reason below for more information. |
imps_filtered_reason |
string | Yes | "Invalid Domain" |
The reason why the impression request was filtered out by Xandr's inventory quality controls and the auction was not held. Possible reasons are: - "Invalid Domain" (1) - "Invalid IP" (2) - "Suspected Domain Detection Tampering" (3, 4, 5) - "Unknown" (6, 7) - “White Ops: General IVT” (17) - consists of traffic identified through routine means of filtration, executed through application of lists or with other standardized parameter checks.- “White Ops: Sophisticated IVT” (18) - consists of more difficult to detect situations that require advanced analytics, multi-point corroboration/coordination, significant human intervention, etc., to analyze and identify.- "Valid Impression" (0) is also a valid filtered request reason, but in that case, an auction was held and it was not filtered. |
operating_system_id |
int | Yes | 24 |
The ID of the operating system of the device. - Use Operating System Family service to obtain a list of operating system families. - Use the Operating System Extended service to look up which operating system versions are within a given operating system family. |
operating_system_name |
string | Yes | "Android 2.3.5 Gingerbread" |
The ID of the operating system of the device. - Use Operating System Family service to obtain a list of operating system families. - Use the Operating System Extended service to look up which operating system versions are within a given operating system family. |
operating_system_family_id |
int | Yes | 2 |
The ID of the operating system of the device. - Use Operating System Family service to obtain a list of operating system families. - Use the Operating System Extended service to look up which operating system versions are within a given operating system family. |
operating_system_family_name |
string | Yes | "Android" |
The ID of the operating system of the device. - Use Operating System Family service to obtain a list of operating system families. - Use the Operating System Extended service to look up which operating system versions are within a given operating system family. |
Passing Domains Across IFrames
Serving ads inside of iFrames is preferred by publishers for a number of reasons, to include:
Increased Security: For security reasons, communication between iFrames serving from different domains is prohibited by the browser. This is known as the "Same Origin Policy". For more information, see the W3C's Same Origin Policy page.
Page Load Speed: Page load speed is guaranteed to be unaffected by advertisements inside iFrames because iFrames allow asynchronous loading of both page content and advertisements. This ensures that the user does not have to wait for the rest of the page to load in the event that serving an advertisement happens more slowly than expected.
For these and other reasons, some networks provide their publishers with an iFrame in which to display advertisements. If this iFrame delivers its contents from the network's domain and not the publisher's, it can lead to difficulties in determining the domain on which an impression actually occurred.
For example, a publisher is given a snippet of HTML code to put on their pages that includes an iFrame referencing a network's domain, best-network.net
:
<!-- Publisher's Web Page >
<iframe src="http://best-network.net"> <!-- iFrame Referencing Network Domain >
<script src="http://cooladexchange.net/tag?id=12345"></script> <!-- Ad Exchange Placement serving on Network Domain >
</iframe>
The iFrame is located on the publisher's web page, but it is serving its contents from the network's domain. Because the page and the iFrame are hosted on different domains, the security restrictions of the "Same Origin Policy" apply, and communication between the publisher's page and the network's iFrame is forbidden. Therefore the network is unable to determine the actual domain of the publisher's page. As a result, the network passes along its own domain as the referring URL to the placement.
Age bucket
Bucket ID | Bucket Name |
---|---|
0 |
"unknown" |
1 |
"13-17" |
2 |
"18-24" |
3 |
"25-34" |
4 |
"35-44" |
5 |
"45-54" |
6 |
"55-64" |
7 |
"65+" |
Metrics
Column | Type | Example | Description |
---|---|---|---|
imps |
int | 200942 |
The number of impressions coming through this site or placement. |
clicks |
int | 1982 |
The number of clicks coming through this site or placement. |
network_revenue |
money | 1876.595304 |
The amount of network revenue coming through this site or placement. |
publisher_revenue |
money | 93.489302 |
The amount of publisher revenue coming through this site or placement. |
imps_viewed |
int | 30,450 |
The number of measured impressions that were viewable, per the IAB Viewability definition, which states that an impression is viewable if 50% of the pixels are in-view during 1 consecutive second. |
view_measured_imps |
int | 10,120 |
The total number of impressions that were measured for viewability. |
view_rate |
double | 58% |
The percentage of impressions that were viewable out of the total number of impressions measured for viewability. (Viewed Imps / View Measured Imps) |
view_measurement_rate |
double | 45% |
The percentage of impressions measured for viewability out of the total number of impressions. (View Measured Imps / Imps) |
imps_filtered |
int | 2,024 |
The total number of bid requests for which Xandr did not hold an auction due to inventory quality concerns. See imps_filtered_reason_id and imps_filtered_reason (under Dimensions) for a list of the possible reasons. |
Example
Create a JSON formatted report request
$ cat report-request.json
{
"report": {
"report_type": "seller_site_domain",
"columns": [
"seller_member_id",
"seller_member_name",
"placement_id",
"publisher_id",
"publisher_name",
"imps",
"imp_type_name",
"audit_type_id",
"audit_type_name",
"site_name",
"site_domain",
"exposed_for_resale_id",
"exposed_for_resale",
"domains_exposed_id",
"domains_exposed"
],
"filters": [
"seller_member_id",
"audit_type_id"
],
"report_interval": "last_7_days",
"format": "csv"
}
}
POST
the request to the report service
$ curl -b cookies -X POST -d @report-request.json "https://api.appnexus.com/report"
{
"response": {
"report_id": "8d3697d23c87e5bebd44370630162990",
"status": "OK"
}
}
Download the report data directly to a file
The most common way to download reporting data involves using the report_id
in a call the report-download service, which returns reporting data directly in the file format you specify. In the curl
all below, we use the -o
option to specify that the report be saved in a file named huge-report.csv
. For more details, see the Using cURL section in API Semantics.
$ curl -b cookies -o huge-report.csv "https://api.appnexus.com/report-download?id=8d3697d23c87e5bebd44370630162990"
Note
There is a limit of 100,000 rows per report when you download them as XLSX and Excel file.
Retrieve the report data wrapped in JSON (optional)
You will almost always want to use the method described in Download the report data directly to a file above. However, if for some reason you prefer to receive the reporting data wrapped in a JSON response, you may pass the report_id
to the Report Service directly.
$ curl -b cookies "https://api.appnexus.com/report?id=8d3697d23c87e5bebd44370630162990"