> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.pixalate.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pixalate.com/_mcp/server.

# Retrieve rows from a single analytics report

GET https://api.pixalate.com/api/v2/analytics/reports/{reportId}

The purpose of this API is to provide the ability for Pixalate Analytics subscribers to ingest analytics data into their own internal systems. The response is a JSON formatted object containing a list of report items.

Reference: https://docs.pixalate.com/api-reference/analytics-reports/get-analytics-report

## Authentication

- `x-api-key` header (required) — Authentication and authorization is achieved by supplying your Pixalate provided API key in the header of the request. An API key may be obtained by signing up for an account on the [Pixalate developer website](https://developer.pixalate.com).As of April 2023, Pixalate supports an API-key based authentication method for the Analytics Report API. If you have been provided with username and password credentials during your onboarding to access the Report API, please visit our documentation here to get started. If you have been provided with an API key, the documentation on this page will guide you on how to integrate.

## Request

### Path parameters

- `reportId` (string, required) — The report's unique identifier. To request the default analytics report, use the term default as the report identifier.

### Query parameters

- `timeZone` (integer, optional) — The time zone in which to sync the report data. The timezone is the number of minutes from GMT. Default is 0.
- `start` (integer, optional) — Which item in the results from which to start.
- `limit` (integer, optional) — The total number of items to return. Default is 20.
- `q` (string, optional) — A URL encoded query to run to retrieve data. It uses a simplified SQL SELECT syntax as follows: \<p> \[ *column* \[ \<code>,\</code>*column...* ] ] \[ \<code>WHERE\</code> *expression* ] \[ \<code>GROUP BY\</code> *column* \[ ,*column...* ] ] \[ \<code>ORDER BY\</code> *column* \[ \<code>DESC\</code> ] ] \</p> \<p> Note: All characters and their values are case sensitive. \</p> \<table> \<tbody> \<tr> \<td>\<em>column\</em>\</td> \<td>\<em>dimension\</em> or \<em>metric\</em>\</td> \</tr> \<tr> \<td>\<em>dimension\</em>\</td> \<td>One of the set of dimension identifiers available for the specified report. See Dimensions schema below.\</td> \</tr> \<tr> \<td>\<em>metric\</em>\</td> \<td>One of the set of metric identifiers available for the specified report. See Metrics schema below.\</td> \</tr> \<tr> \<td>\<em>expression\</em>\</td> \<td>One of the following: \<em>dimension operator literal\</em>, or \<em>metric comparator literal\</em>, or \<code>(\</code>\<em>expression\</em>\<code>)\</code>, or \<em>expression\</em> \<code>AND\</code> \<em>expression\</em>, or \<em>expression\</em> \<code>OR\</code> \<em>expression\</em>, or \<code>CONTAINS\</code> \<code>(\</code>\<em>dimension\</em>, or \<em>literal\</em>\<code>)\</code>\</td> \</tr> \<tr> \<td>\<em>operator\</em>\</td> \<td>\<code>=\</code>, or \<code>!=\</code>\</td> \</tr> \<tr> \<td>\<em>comparator\</em>\</td> \<td>\<code>=\</code>, or \<code>>\</code>, or \<code>\<\</code>\</td> \</tr> \<tr> \<td>\<em>literal\</em>\</td> \<td>\<em>number\</em>, or\</em> \<em>string\</em>, or \<em>date\</em>\</td> \</tr> \<tr> \<td>\<em>number\</em>\</td> \<td>An integer or decimal number.\</td> \</tr> \<tr> \<td>\<em>string\</em>\</td> \<td>A text string surrounded by single quotes.\</td> \</tr> \<tr> \<td>\<em>date\</em>\</td> \<td>A date as \<em>yyyy\</em>-\<em>mm\</em>-\<em>dd\</em> format surrounded by single quotes.\</td> \</tr> \</tbody> \</table>
- `exportUri` (boolean, optional) — Setting this flag to true indicates that the API returns a URI to the CSV data as an Internet resource rather than the data itself. While the resulting resource is public, the URI contains a randomly generated identifier that ensures the data is relatively secure unless the URI itself is made public by the user.
- `isAsync` (boolean, optional) — If set to true, a CSV URI response is returned immediately. However, this will return a 404 Not Found HTTP status code until the service completes processing the report. Note that this parameter is only recognized when the _exportUri_ parameter is also supplied as true. Note also that the _limit_ parameter is ignored when this parameter is set to true.
- `isLargeResultSet` (boolean, optional) — If set to true, then processing is handled identically as if the _isAsync_ parameter is set to true. However, the returned CSV file contains a single column with each row being a URL to a CSV file that contains part of the data. Large results that set ORDER BY may cause an 400 Bad Request HTTP status code. To resolve, try removing the ORDER BY clause. Note that this parameter is only recognized when the _exportUri_ parameter is also supplied as true. Note also that the _limit_ parameter is ignored when this parameter is set to true.
- `pretty` (boolean, optional) — If true, return pretty JSON. Default is false.

## Response

### 200

OK

- `numFound` (integer, optional) — The total number of report items.
- `docs` (list of Item, optional) — A list of report items.

## Errors

### 400 Bad Request Error

Bad Request - Invalid parameters in request.

- `any`

### 401 Unauthorized Error

Unauthorized - Invalid API Key.

- `any`

### 403 Forbidden Error

Forbidden - Rate plan expired or quota has been exhausted.

- `any`

### 500 Server Error

Server Error - The API experienced an internal error. Contact support.

- `any`

## Types

### Item

Metrics report the numbers used for quantitative measurement in relation to the reported attributes of dimension. For example, the impressions metric indicates the total number of impressions for each dimension's given row. Many of the metrics available via the API align with the metrics available in Pixalate's dashboard reporting.

- `adDomain` (string, optional) — Detected Domain of site where ad was displayed
- `adSize` (string, optional) — Size of the ad
- `adTrafficSource` (string, optional) — Domain of which referred visitor to ad domain
- `advertiserId` (string, optional) — Advertiser identifier
- `areaCode` (string, optional) — Visitor’s area code
- `browserName` (string, optional) — Visitor’s browser name
- `campaignId` (string, optional) — Campaign identifier
- `city` (string, optional) — Visitor’s city
- `countryCode` (string, optional) — Visitor’s country code
- `countryName` (string, optional) — Visitor’s country name
- `day` (string, optional) — Date
- `deviceBrandName` (string, optional) — Visitor’s device brand name
- `deviceModelId` (string, optional) — Visitor’s device identifier
- `deviceMarketingName` (string, optional) — Visitor’s device marketing name
- `deviceTrafficType` (string, optional) — Visitor’s Detected device Traffic type
- `deviceType` (string, optional) — Visitor’s device type
- `dma` (string, optional) — Designated Market Area
- `fraudType` (string, optional) — Fraud Traffic Type
- `ipv6Type` (string, optional) — IPv6 Type
- `kv1` (string, optional) — Creative Size
- `kv2` (string, optional) — Page URL
- `kv3` (string, optional) — \<p>User ID
- `kv4` (string, optional) — \<p>User IP (can be IPv4 or IPv6)
- `kv5` (string, optional) — (Custom)
- `kv6` (string, optional) — (Custom UTM Value)
- `kv7` (string, optional) — Seller ID
- `kv8` (string, optional) — (Custom UTM Value)
- `kv9` (string, optional) — Content Duration
- `kv10` (string, optional) — ISP
- `kv12` (string, optional) — Placement ID
- `kv13` (string, optional) — Content ID
- `kv14` (string, optional) — MRAID Version
- `kv15` (string, optional) — Geographic Region
- `kv16` (string, optional) — Latitude
- `kv17` (string, optional) — Longitude
- `kv18` (string, optional) — App ID or Bundle ID
- `kv19` (string, optional) — Device ID
- `kv20` (string, optional) — Device ID (additional if needed)
- `kv21` (string, optional) — Device ID (additional if needed)
- `kv22` (string, optional) — Device ID (additional if needed)
- `kv23` (string, optional) — Carrier ID
- `kv24` (string, optional) — Supply Type
- `kv25` (string, optional) — App Name
- `kv26` (string, optional) — Device OS
- `kv27` (string, optional) — Useragent
- `kv28` (string, optional) — Device manufacturer/model
- `kv32` (string, optional) — App ID
- `kv44` (string, optional) — Video Play Status
- `kv52` (string, optional) — SSAI integration
- `kv55` (string, optional) — Serialized supply chain object
- `lineItemId` (string, optional) — Line item identifier
- `organization` (string, optional) — Organization Name
- `os` (string, optional) — Visitor’s operating system
- `partnerId` (string, optional) — Partner identifier
- `placementId` (string, optional) — Creative identifier
- `postalCode` (string, optional) — Visitor’s postal code
- `publisherId` (string, optional) — Publisher identifier
- `regionCode` (string, optional) — Visitor’s region code
- `segment` (string, optional) — Segment
- `siteId` (string, optional) — Site identifier
- `adultRisk` (enum, optional) — Adult Risk (Brand Safety)
  - Allowed values: `low`, `medium`, `high`
- `drugRisk` (enum, optional) — Drug Risk (Brand Safety)
  - Allowed values: `low`, `medium`, `high`
- `alcoholRisk` (enum, optional) — Alcohol Risk (Brand Safety)
  - Allowed values: `low`, `medium`, `high`
- `advisoriesRisk` (enum, optional) — Advisories Risk (Brand Safety)
  - Allowed values: `low`, `medium`, `high`
- `hateRisk` (enum, optional) — Hate Risk (Brand Safety)
  - Allowed values: `low`, `medium`, `high`
- `offensiveRisk` (enum, optional) — Offensive Risk (Brand Safety)
  - Allowed values: `low`, `medium`, `high`
- `gamblingRisk` (enum, optional) — Gambling Risk (Brand Safety)
  - Allowed values: `low`, `medium`, `high`
- `violenceRisk` (enum, optional) — Violence Risk (Brand Safety)
  - Allowed values: `low`, `medium`, `high`
- `impressions` (integer, optional) — Gross Ad Counts
- `shareOfImpressions` (double, optional) — Share of Gross Ad Counts %
- `ssaiImpressions` (integer, optional) — Gross SSAI Ad Counts
- `ssaiImpressionsRate` (double, optional) — Gross SSAI Ad Counts %
- `ssaiTransparentImpressions` (integer, optional) — Gross SSAI Transparent Ad Counts
- `ssaiTransparentImpressionsRate` (double, optional) — Gross SSAI Transparent Ad Counts %
- `ipv6Impressions` (integer, optional) — Gross IPv6 Ad Counts
- `ipv6ImpressionsRate` (double, optional) — Gross IPv6 Ad Counts %
- `duplicateImps` (integer, optional) — Gross Duplicate Ad Counts
- `duplicateImpsRate` (double, optional) — Gross Duplicate Ad Counts %
- `nonGivtImpressions` (integer, optional) — Ad Counts
- `shareOfNonGivtImpressions` (double, optional) — Share of Ad Counts %
- `nonGivtSsaiImpressions` (integer, optional) — SSAI Ad Counts
- `nonGivtSsaiImpressionsRate` (double, optional) — SSAI Ad Counts %
- `nonGivtSsaiTransparentImpressions` (integer, optional) — SSAI Transparent Ad Counts
- `nonGivtSsaiTransparentImpressionsRate` (double, optional) — SSAI Transparent Ad Counts %
- `nonGivtIpv6Impressions` (integer, optional) — IPv6 Ad Counts
- `nonGivtIpv6ImpressionsRate` (double, optional) — IPv6 Ad Counts %
- `nonGivtDuplicateImps` (integer, optional) — Duplicate Ad Counts
- `nonGivtDuplicateImpsRate` (double, optional) — Duplicate Ad Counts %
- `nonGivtSivtImpressions` (integer, optional) — Net Ad Counts
- `shareOfNonGivtSivtImpressions` (double, optional) — Share of Net Ad Counts %
- `nonGivtSivtSsaiImpressions` (integer, optional) — Net SSAI Ad Counts
- `nonGivtSivtSsaiImpressionsRate` (double, optional) — Net SSAI Ad Counts %
- `nonGivtSivtSsaiTransparentImpressions` (integer, optional) — Net SSAI Transparent Ad Counts
- `nonGivtSivtSsaiTransparentImpressionsRate` (double, optional) — Net SSAI Transparent Ad Counts %
- `nonGivtSivtIpv6Impressions` (integer, optional) — Net IPv6 Ad Counts
- `nonGivtSivtIpv6ImpressionsRate` (double, optional) — Net IPv6 Ad Counts %
- `nonGivtSivtDuplicateImps` (integer, optional) — Net Duplicate Ad Counts
- `nonGivtSivtDuplicateImpsRate` (double, optional) — Net Duplicate Ad Counts %
- `givtImpressions` (integer, optional) — GIVT Ad Counts
- `givtImpsRate` (double, optional) — GIVT Ad Counts %
- `shareOfGivtImpressions` (double, optional) — Share of GIVT Ad Counts %
- `givtIpv6Impressions` (integer, optional) — IPv6 GIVT Ad Counts
- `givtIpv6ImpressionsRate` (double, optional) — IPv6 GIVT Ad Counts %
- `sivtImpressions` (integer, optional) — SIVT Ad Counts
- `sivtImpsRate` (double, optional) — SIVT Ad Counts %
- `shareOfSivtImpressions` (double, optional) — Share of SIVT Ad Counts %
- `shareOfGivtSivtImpressions` (double, optional) — Share of IVT Ad Counts %
- `sivtIpv6Impressions` (integer, optional) — IPv6 SIVT Ad Counts
- `sivtIpv6ImpressionsRate` (double, optional) — IPv6 SIVT Ad Counts %
- `givtSivtIpv6Impressions` (integer, optional) — IPv6 IVT Ad Counts
- `givtSivtIpv6ImpressionsRate` (double, optional) — IPv6 IVT Ad Counts %

## Examples

**Response**

```json
{
  "numFound": 1,
  "docs": [
    {
      "adDomain": "example.org",
      "adSize": "320x50",
      "adTrafficSource": "Discovery",
      "advertiserId": "1263B",
      "areaCode": "650",
      "browserName": "AppleWebKit",
      "campaignId": "160529",
      "city": "Macon",
      "countryCode": "US",
      "countryName": "UnitedStates",
      "day": "2023-01-16",
      "deviceBrandName": "Apple",
      "deviceModelId": "AppleIphonev",
      "deviceMarketingName": "AppleIphone",
      "deviceTrafficType": "app",
      "deviceType": "mobile",
      "dma": "503",
      "fraudType": "maskedIp",
      "ipv6Type": "6to4",
      "kv1": "320x50",
      "kv2": "https://www.example.com/2322222/example.html",
      "kv3": "74b724ec10",
      "kv4": "192.168.1.0",
      "kv5": "U.S. Dept. of Commerce - NOAA - NMFS",
      "kv6": "IAB19-29",
      "kv7": "5",
      "kv8": "example_ex2",
      "kv9": "45.0",
      "kv10": "AT&T Wireless",
      "kv12": "78768/6177",
      "kv13": "8907892376",
      "kv14": "1,2",
      "kv15": "OMAHA",
      "kv16": "65.0",
      "kv17": "-147.5",
      "kv18": "1523297725",
      "kv19": "e499",
      "kv20": "2279d822",
      "kv21": "9dffe499822227",
      "kv22": "9dff87e499",
      "kv23": "iPhone:Apple",
      "kv24": "Mobile_InApp_Video",
      "kv25": "Example Player",
      "kv26": "iPhone OS",
      "kv27": "Mozilla/5.0 (Linux; Android 7.1.2; AFTMM Build/NS6295; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/106.0.5249.170 Mobile Safari/537.36",
      "kv28": "Apple_iPhone SE",
      "kv32": "637671",
      "kv44": "string",
      "kv52": "string",
      "kv55": "1.0,1!example.com,219,1,c1554a1301!example2.com,3290857094",
      "lineItemId": "23",
      "organization": "ComcastCable",
      "os": "MacOSX(iPhone)",
      "partnerId": "examp",
      "placementId": "872093903",
      "postalCode": "101773",
      "publisherId": "examplemedia",
      "regionCode": "11",
      "segment": "5778,2374",
      "siteId": "7714",
      "adultRisk": "medium",
      "drugRisk": "medium",
      "alcoholRisk": "medium",
      "advisoriesRisk": "medium",
      "hateRisk": "medium",
      "offensiveRisk": "medium",
      "gamblingRisk": "medium",
      "violenceRisk": "medium",
      "impressions": 107638742,
      "shareOfImpressions": 1,
      "ssaiImpressions": 3552420,
      "ssaiImpressionsRate": 0.33,
      "ssaiTransparentImpressions": 1333924,
      "ssaiTransparentImpressionsRate": 0.01239,
      "ipv6Impressions": 38132536,
      "ipv6ImpressionsRate": 0.35426,
      "duplicateImps": 4644646,
      "duplicateImpsRate": 0.04315,
      "nonGivtImpressions": 106485383,
      "shareOfNonGivtImpressions": 1,
      "nonGivtSsaiImpressions": 3469267,
      "nonGivtSsaiImpressionsRate": 0.03258,
      "nonGivtSsaiTransparentImpressions": 1325682,
      "nonGivtSsaiTransparentImpressionsRate": 0.01245,
      "nonGivtIpv6Impressions": 38075513,
      "nonGivtIpv6ImpressionsRate": 0.35757,
      "nonGivtDuplicateImps": 4314329,
      "nonGivtDuplicateImpsRate": 0.04052,
      "nonGivtSivtImpressions": 99896454,
      "shareOfNonGivtSivtImpressions": 1,
      "nonGivtSivtSsaiImpressions": 2761628,
      "nonGivtSivtSsaiImpressionsRate": 0.02764,
      "nonGivtSivtSsaiTransparentImpressions": 1182730,
      "nonGivtSivtSsaiTransparentImpressionsRate": 0.01184,
      "nonGivtSivtIpv6Impressions": 35873185,
      "nonGivtSivtIpv6ImpressionsRate": 0.3591,
      "nonGivtSivtDuplicateImps": 3668854,
      "nonGivtSivtDuplicateImpsRate": 0.03673,
      "givtImpressions": 1153359,
      "givtImpsRate": 0.01072,
      "shareOfGivtImpressions": 1,
      "givtIpv6Impressions": 57023,
      "givtIpv6ImpressionsRate": 0.00053,
      "sivtImpressions": 6588929,
      "sivtImpsRate": 0.06121,
      "shareOfSivtImpressions": 1,
      "shareOfGivtSivtImpressions": 1,
      "sivtIpv6Impressions": 2202328,
      "sivtIpv6ImpressionsRate": 0.02046,
      "givtSivtIpv6Impressions": 2259351,
      "givtSivtIpv6ImpressionsRate": 0.02099
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.pixalate.com/api/v2/analytics/reports/default"

querystring = {"limit":"20","q":"impressions,nonGivtViews,nonGivtViewsRate,nonGivtViewability,viewability,givtSivtRate,sivtRate,givtRate WHERE day>='2023-01-16' AND day<='2023-01-16' ORDER BY impressions DESC","start":"0","timeZone":"0"}

headers = {"x-api-key": "<apiKey>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.pixalate.com/api/v2/analytics/reports/default?limit=20&q=impressions%2CnonGivtViews%2CnonGivtViewsRate%2CnonGivtViewability%2Cviewability%2CgivtSivtRate%2CsivtRate%2CgivtRate+WHERE+day%3E%3D%272023-01-16%27+AND+day%3C%3D%272023-01-16%27+ORDER+BY+impressions+DESC&start=0&timeZone=0';
const options = {method: 'GET', headers: {'x-api-key': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.pixalate.com/api/v2/analytics/reports/default?limit=20&q=impressions%2CnonGivtViews%2CnonGivtViewsRate%2CnonGivtViewability%2Cviewability%2CgivtSivtRate%2CsivtRate%2CgivtRate+WHERE+day%3E%3D%272023-01-16%27+AND+day%3C%3D%272023-01-16%27+ORDER+BY+impressions+DESC&start=0&timeZone=0"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-api-key", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.pixalate.com/api/v2/analytics/reports/default?limit=20&q=impressions%2CnonGivtViews%2CnonGivtViewsRate%2CnonGivtViewability%2Cviewability%2CgivtSivtRate%2CsivtRate%2CgivtRate+WHERE+day%3E%3D%272023-01-16%27+AND+day%3C%3D%272023-01-16%27+ORDER+BY+impressions+DESC&start=0&timeZone=0")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.pixalate.com/api/v2/analytics/reports/default?limit=20&q=impressions%2CnonGivtViews%2CnonGivtViewsRate%2CnonGivtViewability%2Cviewability%2CgivtSivtRate%2CsivtRate%2CgivtRate+WHERE+day%3E%3D%272023-01-16%27+AND+day%3C%3D%272023-01-16%27+ORDER+BY+impressions+DESC&start=0&timeZone=0")
  .header("x-api-key", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.pixalate.com/api/v2/analytics/reports/default?limit=20&q=impressions%2CnonGivtViews%2CnonGivtViewsRate%2CnonGivtViewability%2Cviewability%2CgivtSivtRate%2CsivtRate%2CgivtRate+WHERE+day%3E%3D%272023-01-16%27+AND+day%3C%3D%272023-01-16%27+ORDER+BY+impressions+DESC&start=0&timeZone=0', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.pixalate.com/api/v2/analytics/reports/default?limit=20&q=impressions%2CnonGivtViews%2CnonGivtViewsRate%2CnonGivtViewability%2Cviewability%2CgivtSivtRate%2CsivtRate%2CgivtRate+WHERE+day%3E%3D%272023-01-16%27+AND+day%3C%3D%272023-01-16%27+ORDER+BY+impressions+DESC&start=0&timeZone=0");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["x-api-key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.pixalate.com/api/v2/analytics/reports/default?limit=20&q=impressions%2CnonGivtViews%2CnonGivtViewsRate%2CnonGivtViewability%2Cviewability%2CgivtSivtRate%2CsivtRate%2CgivtRate+WHERE+day%3E%3D%272023-01-16%27+AND+day%3C%3D%272023-01-16%27+ORDER+BY+impressions+DESC&start=0&timeZone=0")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```