<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="webmasters_v3.html">Search Console API</a> . <a href="webmasters_v3.searchanalytics.html">searchanalytics</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#query">query(siteUrl, body=None)</a></code></p>
<p class="firstline">Query your data with filters and parameters that you define. Returns zero or more rows grouped by the row keys that you define. You must define a date range of one or more days.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="query">query(siteUrl, body=None)</code>
  <pre>Query your data with filters and parameters that you define. Returns zero or more rows grouped by the row keys that you define. You must define a date range of one or more days.

When date is one of the group by values, any days without data are omitted from the result list. If you need to know which days have data, issue a broad date range query grouped by date for any metric, and see which day rows are returned.

Args:
  siteUrl: string, The site&#x27;s URL, including protocol. For example: http://www.example.com/ (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;aggregationType&quot;: &quot;A String&quot;, # [Optional; Default is &quot;auto&quot;] How data is aggregated. If aggregated by property, all data for the same property is aggregated; if aggregated by page, all data is aggregated by canonical URI. If you filter or group by page, choose AUTO; otherwise you can aggregate either by property or by page, depending on how you want your data calculated; see  the help documentation to learn how data is calculated differently by site versus by page.
        # 
        # Note: If you group or filter by page, you cannot aggregate by property.
        # 
        # If you specify any value other than AUTO, the aggregation type in the result will match the requested type, or if you request an invalid type, you will get an error. The API will never change your aggregation type if the requested type is invalid.
    &quot;dimensionFilterGroups&quot;: [ # [Optional] Zero or more filters to apply to the dimension grouping values; for example, &#x27;query contains &quot;buy&quot;&#x27; to see only data where the query string contains the substring &quot;buy&quot; (not case-sensitive). You can filter by a dimension without grouping by it.
      {
        &quot;filters&quot;: [
          {
            &quot;dimension&quot;: &quot;A String&quot;,
            &quot;expression&quot;: &quot;A String&quot;,
            &quot;operator&quot;: &quot;A String&quot;,
          },
        ],
        &quot;groupType&quot;: &quot;A String&quot;,
      },
    ],
    &quot;dimensions&quot;: [ # [Optional] Zero or more dimensions to group results by. Dimensions are the group-by values in the Search Analytics page. Dimensions are combined to create a unique row key for each row. Results are grouped in the order that you supply these dimensions.
      &quot;A String&quot;,
    ],
    &quot;endDate&quot;: &quot;A String&quot;, # [Required] End date of the requested date range, in YYYY-MM-DD format, in PST (UTC - 8:00). Must be greater than or equal to the start date. This value is included in the range.
    &quot;rowLimit&quot;: 42, # [Optional; Default is 1000] The maximum number of rows to return. Must be a number from 1 to 5,000 (inclusive).
    &quot;searchType&quot;: &quot;A String&quot;, # [Optional; Default is &quot;web&quot;] The search type to filter for.
    &quot;startDate&quot;: &quot;A String&quot;, # [Required] Start date of the requested date range, in YYYY-MM-DD format, in PST time (UTC - 8:00). Must be less than or equal to the end date. This value is included in the range.
    &quot;startRow&quot;: 42, # [Optional; Default is 0] Zero-based index of the first row in the response. Must be a non-negative number.
  }


Returns:
  An object of the form:

    { # A list of rows, one per result, grouped by key. Metrics in each row are aggregated for all data grouped by that key either by page or property, as specified by the aggregation type parameter.
    &quot;responseAggregationType&quot;: &quot;A String&quot;, # How the results were aggregated.
    &quot;rows&quot;: [ # A list of rows grouped by the key values in the order given in the query.
      {
        &quot;clicks&quot;: 3.14,
        &quot;ctr&quot;: 3.14,
        &quot;impressions&quot;: 3.14,
        &quot;keys&quot;: [
          &quot;A String&quot;,
        ],
        &quot;position&quot;: 3.14,
      },
    ],
  }</pre>
</div>

</body></html>