<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="factchecktools_v1alpha1.html">Fact Check Tools API</a> . <a href="factchecktools_v1alpha1.claims.html">claims</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="#search">search(offset=None, pageSize=None, query=None, pageToken=None, maxAgeDays=None, languageCode=None, reviewPublisherSiteFilter=None, x__xgafv=None)</a></code></p>
<p class="firstline">Search through fact-checked claims.</p>
<p class="toc_element">
  <code><a href="#search_next">search_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</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="search">search(offset=None, pageSize=None, query=None, pageToken=None, maxAgeDays=None, languageCode=None, reviewPublisherSiteFilter=None, x__xgafv=None)</code>
  <pre>Search through fact-checked claims.

Args:
  offset: integer, An integer that specifies the current offset (that is, starting result location) in search results. This field is only considered if `page_token` is unset. For example, 0 means to return results starting from the first matching result, and 10 means to return from the 11th result.
  pageSize: integer, The pagination size. We will return up to that many results. Defaults to 10 if not set.
  query: string, Textual query string. Required unless `review_publisher_site_filter` is specified.
  pageToken: string, The pagination token. You may provide the `next_page_token` returned from a previous List request, if any, in order to get the next page. All other fields must have the same values as in the previous request.
  maxAgeDays: integer, The maximum age of the returned search results, in days. Age is determined by either claim date or review date, whichever is newer.
  languageCode: string, The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. Can be used to restrict results by language, though we do not currently consider the region.
  reviewPublisherSiteFilter: string, The review publisher site to filter results by, e.g. nytimes.com.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response from searching fact-checked claims.
    &quot;claims&quot;: [ # The list of claims and all of their associated information.
      { # Information about the claim.
        &quot;text&quot;: &quot;A String&quot;, # The claim text. For instance, &quot;Crime has doubled in the last 2 years.&quot;
        &quot;claimReview&quot;: [ # One or more reviews of this claim (namely, a fact-checking article).
          { # Information about a claim review.
            &quot;languageCode&quot;: &quot;A String&quot;, # The language this review was written in. For instance, &quot;en&quot; or &quot;de&quot;.
            &quot;reviewDate&quot;: &quot;A String&quot;, # The date the claim was reviewed.
            &quot;title&quot;: &quot;A String&quot;, # The title of this claim review, if it can be determined.
            &quot;publisher&quot;: { # Information about the publisher. # The publisher of this claim review.
              &quot;site&quot;: &quot;A String&quot;, # Host-level site name, without the protocol or &quot;www&quot; prefix. For instance, &quot;awesomefactchecks.com&quot;. This value of this field is based purely on the claim review URL.
              &quot;name&quot;: &quot;A String&quot;, # The name of this publisher. For instance, &quot;Awesome Fact Checks&quot;.
            },
            &quot;url&quot;: &quot;A String&quot;, # The URL of this claim review.
            &quot;textualRating&quot;: &quot;A String&quot;, # Textual rating. For instance, &quot;Mostly false&quot;.
          },
        ],
        &quot;claimDate&quot;: &quot;A String&quot;, # The date that the claim was made.
        &quot;claimant&quot;: &quot;A String&quot;, # A person or organization stating the claim. For instance, &quot;John Doe&quot;.
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The next pagination token in the Search response. It should be used as the `page_token` for the following request. An empty value means no more results.
  }</pre>
</div>

<div class="method">
    <code class="details" id="search_next">search_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>