Skip to main content
POST
/
v2
/
query
/
stats
v2 Stats Query
curl --request POST \
  --url https://api.globalwebindex.com/v2/query/stats \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "question": "q20",
  "datapoints": [
    "q20_3",
    "q20_1",
    "q20_5",
    "q20_6",
    "q20_7",
    "q20_4",
    "q20_2"
  ],
  "suffixes": [
    "1",
    "2",
    "3"
  ],
  "splitter": "waves",
  "segments": [
    "q1_2019",
    "q2_2019",
    "q3_2019",
    "q4_2019"
  ],
  "segmented_base": true,
  "audiences": [
    {
      "id": "133",
      "name": "my_audience",
      "expression": {
        "and": [
          {
            "question": "q2",
            "datapoints": [
              "q2_1",
              "q2_2"
            ],
            "min_count": 1,
            "not": false
          },
          {
            "question": "q20",
            "datapoints": [
              "q20_2"
            ],
            "min_count": 1,
            "suffixes": [
              "1",
              "2",
              "3"
            ],
            "not": false
          }
        ]
      }
    }
  ],
  "locations": [
    "s2_1",
    "s2_44"
  ],
  "waves": [
    "q1_2019",
    "q2_2019",
    "q3_2019",
    "q4_2019"
  ],
  "base_audience": {
    "id": "123",
    "name": "base_audience",
    "expression": {
      "and": [
        {
          "question": "q2",
          "datapoints": [
            "q2_1",
            "q2_2"
          ],
          "min_count": 1,
          "not": false
        },
        {
          "question": "q20",
          "datapoints": [
            "q20_2"
          ],
          "min_count": 1,
          "suffixes": [
            "1",
            "2",
            "3"
          ],
          "not": false
        }
      ]
    }
  }
}
'
import requests

url = "https://api.globalwebindex.com/v2/query/stats"

payload = {
"question": "q20",
"datapoints": ["q20_3", "q20_1", "q20_5", "q20_6", "q20_7", "q20_4", "q20_2"],
"suffixes": ["1", "2", "3"],
"splitter": "waves",
"segments": ["q1_2019", "q2_2019", "q3_2019", "q4_2019"],
"segmented_base": True,
"audiences": [
{
"id": "133",
"name": "my_audience",
"expression": { "and": [
{
"question": "q2",
"datapoints": ["q2_1", "q2_2"],
"min_count": 1,
"not": False
},
{
"question": "q20",
"datapoints": ["q20_2"],
"min_count": 1,
"suffixes": ["1", "2", "3"],
"not": False
}
] }
}
],
"locations": ["s2_1", "s2_44"],
"waves": ["q1_2019", "q2_2019", "q3_2019", "q4_2019"],
"base_audience": {
"id": "123",
"name": "base_audience",
"expression": { "and": [
{
"question": "q2",
"datapoints": ["q2_1", "q2_2"],
"min_count": 1,
"not": False
},
{
"question": "q20",
"datapoints": ["q20_2"],
"min_count": 1,
"suffixes": ["1", "2", "3"],
"not": False
}
] }
}
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
question: 'q20',
datapoints: ['q20_3', 'q20_1', 'q20_5', 'q20_6', 'q20_7', 'q20_4', 'q20_2'],
suffixes: ['1', '2', '3'],
splitter: 'waves',
segments: ['q1_2019', 'q2_2019', 'q3_2019', 'q4_2019'],
segmented_base: true,
audiences: [
{
id: '133',
name: 'my_audience',
expression: {
and: [
{question: 'q2', datapoints: ['q2_1', 'q2_2'], min_count: 1, not: false},
{
question: 'q20',
datapoints: ['q20_2'],
min_count: 1,
suffixes: ['1', '2', '3'],
not: false
}
]
}
}
],
locations: ['s2_1', 's2_44'],
waves: ['q1_2019', 'q2_2019', 'q3_2019', 'q4_2019'],
base_audience: {
id: '123',
name: 'base_audience',
expression: {
and: [
{question: 'q2', datapoints: ['q2_1', 'q2_2'], min_count: 1, not: false},
{
question: 'q20',
datapoints: ['q20_2'],
min_count: 1,
suffixes: ['1', '2', '3'],
not: false
}
]
}
}
})
};

fetch('https://api.globalwebindex.com/v2/query/stats', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.globalwebindex.com/v2/query/stats",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'question' => 'q20',
'datapoints' => [
'q20_3',
'q20_1',
'q20_5',
'q20_6',
'q20_7',
'q20_4',
'q20_2'
],
'suffixes' => [
'1',
'2',
'3'
],
'splitter' => 'waves',
'segments' => [
'q1_2019',
'q2_2019',
'q3_2019',
'q4_2019'
],
'segmented_base' => true,
'audiences' => [
[
'id' => '133',
'name' => 'my_audience',
'expression' => [
'and' => [
[
'question' => 'q2',
'datapoints' => [
'q2_1',
'q2_2'
],
'min_count' => 1,
'not' => false
],
[
'question' => 'q20',
'datapoints' => [
'q20_2'
],
'min_count' => 1,
'suffixes' => [
'1',
'2',
'3'
],
'not' => false
]
]
]
]
],
'locations' => [
's2_1',
's2_44'
],
'waves' => [
'q1_2019',
'q2_2019',
'q3_2019',
'q4_2019'
],
'base_audience' => [
'id' => '123',
'name' => 'base_audience',
'expression' => [
'and' => [
[
'question' => 'q2',
'datapoints' => [
'q2_1',
'q2_2'
],
'min_count' => 1,
'not' => false
],
[
'question' => 'q20',
'datapoints' => [
'q20_2'
],
'min_count' => 1,
'suffixes' => [
'1',
'2',
'3'
],
'not' => false
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

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

func main() {

url := "https://api.globalwebindex.com/v2/query/stats"

payload := strings.NewReader("{\n \"question\": \"q20\",\n \"datapoints\": [\n \"q20_3\",\n \"q20_1\",\n \"q20_5\",\n \"q20_6\",\n \"q20_7\",\n \"q20_4\",\n \"q20_2\"\n ],\n \"suffixes\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"splitter\": \"waves\",\n \"segments\": [\n \"q1_2019\",\n \"q2_2019\",\n \"q3_2019\",\n \"q4_2019\"\n ],\n \"segmented_base\": true,\n \"audiences\": [\n {\n \"id\": \"133\",\n \"name\": \"my_audience\",\n \"expression\": {\n \"and\": [\n {\n \"question\": \"q2\",\n \"datapoints\": [\n \"q2_1\",\n \"q2_2\"\n ],\n \"min_count\": 1,\n \"not\": false\n },\n {\n \"question\": \"q20\",\n \"datapoints\": [\n \"q20_2\"\n ],\n \"min_count\": 1,\n \"suffixes\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"not\": false\n }\n ]\n }\n }\n ],\n \"locations\": [\n \"s2_1\",\n \"s2_44\"\n ],\n \"waves\": [\n \"q1_2019\",\n \"q2_2019\",\n \"q3_2019\",\n \"q4_2019\"\n ],\n \"base_audience\": {\n \"id\": \"123\",\n \"name\": \"base_audience\",\n \"expression\": {\n \"and\": [\n {\n \"question\": \"q2\",\n \"datapoints\": [\n \"q2_1\",\n \"q2_2\"\n ],\n \"min_count\": 1,\n \"not\": false\n },\n {\n \"question\": \"q20\",\n \"datapoints\": [\n \"q20_2\"\n ],\n \"min_count\": 1,\n \"suffixes\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"not\": false\n }\n ]\n }\n }\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")

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

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

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.globalwebindex.com/v2/query/stats")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"question\": \"q20\",\n \"datapoints\": [\n \"q20_3\",\n \"q20_1\",\n \"q20_5\",\n \"q20_6\",\n \"q20_7\",\n \"q20_4\",\n \"q20_2\"\n ],\n \"suffixes\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"splitter\": \"waves\",\n \"segments\": [\n \"q1_2019\",\n \"q2_2019\",\n \"q3_2019\",\n \"q4_2019\"\n ],\n \"segmented_base\": true,\n \"audiences\": [\n {\n \"id\": \"133\",\n \"name\": \"my_audience\",\n \"expression\": {\n \"and\": [\n {\n \"question\": \"q2\",\n \"datapoints\": [\n \"q2_1\",\n \"q2_2\"\n ],\n \"min_count\": 1,\n \"not\": false\n },\n {\n \"question\": \"q20\",\n \"datapoints\": [\n \"q20_2\"\n ],\n \"min_count\": 1,\n \"suffixes\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"not\": false\n }\n ]\n }\n }\n ],\n \"locations\": [\n \"s2_1\",\n \"s2_44\"\n ],\n \"waves\": [\n \"q1_2019\",\n \"q2_2019\",\n \"q3_2019\",\n \"q4_2019\"\n ],\n \"base_audience\": {\n \"id\": \"123\",\n \"name\": \"base_audience\",\n \"expression\": {\n \"and\": [\n {\n \"question\": \"q2\",\n \"datapoints\": [\n \"q2_1\",\n \"q2_2\"\n ],\n \"min_count\": 1,\n \"not\": false\n },\n {\n \"question\": \"q20\",\n \"datapoints\": [\n \"q20_2\"\n ],\n \"min_count\": 1,\n \"suffixes\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"not\": false\n }\n ]\n }\n }\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.globalwebindex.com/v2/query/stats")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"question\": \"q20\",\n \"datapoints\": [\n \"q20_3\",\n \"q20_1\",\n \"q20_5\",\n \"q20_6\",\n \"q20_7\",\n \"q20_4\",\n \"q20_2\"\n ],\n \"suffixes\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"splitter\": \"waves\",\n \"segments\": [\n \"q1_2019\",\n \"q2_2019\",\n \"q3_2019\",\n \"q4_2019\"\n ],\n \"segmented_base\": true,\n \"audiences\": [\n {\n \"id\": \"133\",\n \"name\": \"my_audience\",\n \"expression\": {\n \"and\": [\n {\n \"question\": \"q2\",\n \"datapoints\": [\n \"q2_1\",\n \"q2_2\"\n ],\n \"min_count\": 1,\n \"not\": false\n },\n {\n \"question\": \"q20\",\n \"datapoints\": [\n \"q20_2\"\n ],\n \"min_count\": 1,\n \"suffixes\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"not\": false\n }\n ]\n }\n }\n ],\n \"locations\": [\n \"s2_1\",\n \"s2_44\"\n ],\n \"waves\": [\n \"q1_2019\",\n \"q2_2019\",\n \"q3_2019\",\n \"q4_2019\"\n ],\n \"base_audience\": {\n \"id\": \"123\",\n \"name\": \"base_audience\",\n \"expression\": {\n \"and\": [\n {\n \"question\": \"q2\",\n \"datapoints\": [\n \"q2_1\",\n \"q2_2\"\n ],\n \"min_count\": 1,\n \"not\": false\n },\n {\n \"question\": \"q20\",\n \"datapoints\": [\n \"q20_2\"\n ],\n \"min_count\": 1,\n \"suffixes\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"not\": false\n }\n ]\n }\n }\n}"

response = http.request(request)
puts response.read_body
{
  "meta": {
    "type": "DATAPOINTS-SEGMENTS",
    "question": "q20",
    "splitter": "waves"
  },
  "data": [
    {
      "datapoint": "q20_3",
      "waves": [
        "q1_2019",
        "q2_2019",
        "q3_2019",
        "q4_2019"
      ],
      "metrics": {
        "positive_size": 123,
        "positive_sample": 123,
        "audience_index": 123,
        "audience_percentage": 123,
        "audience_sample": 123,
        "audience_size": 123,
        "datapoint_percentage": 123,
        "datapoint_sample": 123,
        "datapoint_size": 123
      },
      "segment": "q1_2019",
      "audience": "133",
      "suffixes": [
        1,
        2,
        3
      ]
    }
  ]
}
{
"error": "some_error",
"error_type": "empty_expression",
"code": 400,
"message": "Message readable by customer."
}
{
"error": "some_error",
"error_type": "empty_expression",
"code": 400,
"message": "Message readable by customer."
}
{
"error": "some_error",
"error_type": "empty_expression",
"code": 403,
"meta": {
"forbidden_codes": {
"questions": [
{
"code": "q2",
"datapoints": [
"q1_1"
],
"origin": "question"
}
],
"locations": [
"s2_44"
],
"waves": [
"q1_2019"
]
}
}
}
{
"error": "some_error",
"error_type": "empty_expression",
"code": 400,
"message": "Message readable by customer."
}

Authorizations

Authorization
string
header
required

Body

application/json

Chart builder query.

Question, audiences and filters as parameters for chart builder metrics.

question
string
required

Question code to define datapoint scope.

Example:

"q20"

datapoints
string[]

Datapoint codes to limit scopes of interest.

Example:
[
"q20_3",
"q20_1",
"q20_5",
"q20_6",
"q20_7",
"q20_4",
"q20_2"
]
suffixes
string[]

Suffixes to extend datapoint codes for more detailed responses.

Example:
["1", "2", "3"]
splitter
string

Either 'waves' or question code used to split results to segments.

Example:

"waves"

segments
string[]

List of wave codes, location codes or datapoint codes used to limit which segments scopes are created.

Example:
["q1_2019", "q2_2019", "q3_2019", "q4_2019"]
segmented_base
boolean

Switch to use each segment as base scope when doing segmentation.

audiences
Audience · object[]

List of audiences to scope question responses.

locations
string[]

List of location codes to filter.

Example:
["s2_1", "s2_44"]
waves
string[]

List of wave codes to filter.

Example:
["q1_2019", "q2_2019", "q3_2019", "q4_2019"]
base_audience
BaseAudience · object

Wrapper structure containing AudienceExpression.

Response

Correct results for given query.

Result of chart builder query

meta
StatsQueryResultMetadata · object
required

Metadata for chart builder query result

data
QueryResultsData · object[]
required

Collection of results of chart builder query