<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="searchconsole_v1.html">Google Search Console API</a> . <a href="searchconsole_v1.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, x__xgafv=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. 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.</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, x__xgafv=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;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.
      { # A set of dimension value filters to test against each row. Only rows that pass all filter groups will be returned. All results within a filter group are either AND&#x27;ed or OR&#x27;ed together, depending on the group type selected. All filter groups are AND&#x27;ed together.
        &quot;groupType&quot;: &quot;A String&quot;,
        &quot;filters&quot;: [
          { # A filter test to be applied to each row in the data set, where a match can return the row. Filters are string comparisons, and values and dimension names are not case-sensitive. Individual filters are either AND&#x27;ed or OR&#x27;ed within their parent filter group, according to the group&#x27;s group type. You do not need to group by a specified dimension to filter against it.
            &quot;operator&quot;: &quot;A String&quot;,
            &quot;expression&quot;: &quot;A String&quot;,
            &quot;dimension&quot;: &quot;A String&quot;,
          },
        ],
      },
    ],
    &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;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;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;startRow&quot;: 42, # [Optional; Default is 0] Zero-based index of the first row in the response. Must be a non-negative number.
    &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;rowLimit&quot;: 42, # [Optional; Default is 1000] The maximum number of rows to return. Must be a number from 1 to 25,000 (inclusive).
    &quot;searchType&quot;: &quot;A String&quot;, # [Optional; Default is \&quot;web\&quot;] The search type to filter for.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

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;ctr&quot;: 3.14,
        &quot;clicks&quot;: 3.14,
        &quot;impressions&quot;: 3.14,
        &quot;position&quot;: 3.14,
        &quot;keys&quot;: [
          &quot;A String&quot;,
        ],
      },
    ],
  }</pre>
</div>

</body></html>