<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.urlcrawlerrorscounts.html">urlcrawlerrorscounts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#query">query(siteUrl, category=None, platform=None, latestCountsOnly=None)</a></code></p>
<p class="firstline">Retrieves a time series of the number of URL crawl errors per error category and platform.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="query">query(siteUrl, category=None, platform=None, latestCountsOnly=None)</code>
  <pre>Retrieves a time series of the number of URL crawl errors per error category and platform.

Args:
  siteUrl: string, The site's URL, including protocol. For example: http://www.example.com/ (required)
  category: string, The crawl error category. For example: serverError. If not specified, returns results for all categories.
    Allowed values
      authPermissions - 
      flashContent - 
      manyToOneRedirect - 
      notFollowed - 
      notFound - 
      other - 
      roboted - 
      serverError - 
      soft404 - 
  platform: string, The user agent type (platform) that made the request. For example: web. If not specified, returns results for all platforms.
    Allowed values
      mobile - 
      smartphoneOnly - 
      web - 
  latestCountsOnly: boolean, If true, returns only the latest crawl error counts.

Returns:
  An object of the form:

    { # A time series of the number of URL crawl errors per error category and platform.
    "countPerTypes": [ # The time series of the number of URL crawl errors per error category and platform.
      { # Number of errors per day for a specific error type (defined by platform and category).
        "category": "A String", # The crawl error type.
        "platform": "A String", # The general type of Googlebot that made the request (see list of Googlebot user-agents for the user-agents used).
        "entries": [ # The error count entries time series.
          { # An entry in a URL crawl errors time series.
            "count": "A String", # The error count at the given timestamp.
            "timestamp": "A String", # The date and time when the crawl attempt took place, in RFC 3339 format.
          },
        ],
      },
    ],
  }</pre>
</div>

</body></html>