<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="customsearch_v1.html">Custom Search API</a> . <a href="customsearch_v1.cse.html">cse</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="customsearch_v1.cse.siterestrict.html">siterestrict()</a></code>
</p>
<p class="firstline">Returns the siterestrict Resource.</p>

<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="#list">list(exactTerms=None, fileType=None, c2coff=None, lowRange=None, rights=None, imgColorType=None, linkSite=None, filter=None, dateRestrict=None, searchType=None, highRange=None, siteSearchFilter=None, start=None, imgSize=None, gl=None, imgType=None, excludeTerms=None, cr=None, sort=None, googlehost=None, imgDominantColor=None, safe=None, hl=None, siteSearch=None, num=None, cx=None, lr=None, hq=None, q=None, orTerms=None, relatedSite=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns metadata about the search performed, metadata about the engine used for the search, and the search 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="list">list(exactTerms=None, fileType=None, c2coff=None, lowRange=None, rights=None, imgColorType=None, linkSite=None, filter=None, dateRestrict=None, searchType=None, highRange=None, siteSearchFilter=None, start=None, imgSize=None, gl=None, imgType=None, excludeTerms=None, cr=None, sort=None, googlehost=None, imgDominantColor=None, safe=None, hl=None, siteSearch=None, num=None, cx=None, lr=None, hq=None, q=None, orTerms=None, relatedSite=None, x__xgafv=None)</code>
  <pre>Returns metadata about the search performed, metadata about the engine used for the search, and the search results.

Args:
  exactTerms: string, Identifies a phrase that all documents in the search results must contain.
  fileType: string, Restricts results to files of a specified extension. A list of file types indexable by Google can be found in Search Console [Help Center](https://support.google.com/webmasters/answer/35287).
  c2coff: string, Enables or disables [Simplified and Traditional Chinese Search](https://developers.google.com/custom-search/docs/xml_results#chineseSearch). The default value for this parameter is 0 (zero), meaning that the feature is enabled. Supported values are: * `1`: Disabled * `0`: Enabled (default)
  lowRange: string, Specifies the starting value for a search range. Use `lowRange` and `highRange` to append an inclusive search range of `lowRange...highRange` to the query.
  rights: string, Filters based on licensing. Supported values include: `cc_publicdomain`, `cc_attribute`, `cc_sharealike`, `cc_noncommercial`, `cc_nonderived` and combinations of these. See [typical combinations](https://wiki.creativecommons.org/wiki/CC_Search_integration).
  imgColorType: string, Returns black and white, grayscale, transparent, or color images. Acceptable values are: * `&quot;color&quot;` * `&quot;gray&quot;` * `&quot;mono&quot;`: black and white * `&quot;trans&quot;`: transparent background
    Allowed values
      imgColorTypeUndefined - No image color type specified.
      mono - Black and white images only.
      gray - Grayscale images only.
      color - Color images only.
      trans - Images with transparent background
  linkSite: string, Specifies that all search results should contain a link to a particular URL.
  filter: string, Controls turning on or off the duplicate content filter. * See [Automatic Filtering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering) for more information about Google&#x27;s search results filters. Note that host crowding filtering applies only to multi-site searches. * By default, Google applies filtering to all search results to improve the quality of those results. Acceptable values are: * `0`: Turns off duplicate content filter. * `1`: Turns on duplicate content filter.
  dateRestrict: string, Restricts results to URLs based on date. Supported values include: * `d[number]`: requests results from the specified number of past days. * `w[number]`: requests results from the specified number of past weeks. * `m[number]`: requests results from the specified number of past months. * `y[number]`: requests results from the specified number of past years.
  searchType: string, Specifies the search type: `image`. If unspecified, results are limited to webpages. Acceptable values are: * `&quot;image&quot;`: custom image search.
    Allowed values
      searchTypeUndefined - Search type unspecified (defaults to web search).
      image - Image search.
  highRange: string, Specifies the ending value for a search range. * Use `lowRange` and `highRange` to append an inclusive search range of `lowRange...highRange` to the query.
  siteSearchFilter: string, Controls whether to include or exclude results from the site named in the `siteSearch` parameter. Acceptable values are: * `&quot;e&quot;`: exclude * `&quot;i&quot;`: include
    Allowed values
      siteSearchFilterUndefined - Filter mode unspecified.
      e - Exclude results from the listed sites.
      i - Include only results from the listed sites.
  start: integer, The index of the first result to return. The default number of results per page is 10, so `&amp;start=11` would start at the top of the second page of results. **Note**: The JSON API will never return more than 100 results, even if more than 100 documents match the query, so setting the sum of `start + num` to a number greater than 100 will produce an error. Also note that the maximum value for `num` is 10.
  imgSize: string, Returns images of a specified size. Acceptable values are: * `&quot;huge&quot;` * `&quot;icon&quot;` * `&quot;large&quot;` * `&quot;medium&quot;` * `&quot;small&quot;` * `&quot;xlarge&quot;` * `&quot;xxlarge&quot;`
    Allowed values
      imgSizeUndefined - No image size specified.
      HUGE - Only the largest possible images.
      ICON - Only very small icon-sized images.
      LARGE - Only large images.
      MEDIUM - Only medium images.
      SMALL - Only small images.
      XLARGE - Only very large images.
      XXLARGE - Only extremely large images.
  gl: string, Geolocation of end user. * The `gl` parameter value is a two-letter country code. The `gl` parameter boosts search results whose country of origin matches the parameter value. See the [Country Codes](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCodes) page for a list of valid values. * Specifying a `gl` parameter value should lead to more relevant results. This is particularly true for international customers and, even more specifically, for customers in English- speaking countries other than the United States.
  imgType: string, Returns images of a type. Acceptable values are: * `&quot;clipart&quot;` * `&quot;face&quot;` * `&quot;lineart&quot;` * `&quot;stock&quot;` * `&quot;photo&quot;` * `&quot;animated&quot;`
    Allowed values
      imgTypeUndefined - No image type specified.
      clipart - Clipart-style images only.
      face - Images of faces only.
      lineart - Line art images only.
      stock - Stock images only.
      photo - Photo images only.
      animated - Animated images only.
  excludeTerms: string, Identifies a word or phrase that should not appear in any documents in the search results.
  cr: string, Restricts search results to documents originating in a particular country. You may use [Boolean operators](https://developers.google.com/custom-search/docs/xml_results_appendices#booleanOperators) in the cr parameter&#x27;s value. Google Search determines the country of a document by analyzing: * the top-level domain (TLD) of the document&#x27;s URL * the geographic location of the Web server&#x27;s IP address See the [Country Parameter Values](https://developers.google.com/custom-search/docs/xml_results_appendices#countryCollections) page for a list of valid values for this parameter.
  sort: string, The sort expression to apply to the results. The sort parameter specifies that the results be sorted according to the specified expression i.e. sort by date. [Example: sort=date](https://developers.google.com/custom-search/docs/structured_search#sort-by-attribute).
  googlehost: string, **Deprecated**. Use the `gl` parameter for a similar effect. The local Google domain (for example, google.com, google.de, or google.fr) to use to perform the search.
  imgDominantColor: string, Returns images of a specific dominant color. Acceptable values are: * `&quot;black&quot;` * `&quot;blue&quot;` * `&quot;brown&quot;` * `&quot;gray&quot;` * `&quot;green&quot;` * `&quot;orange&quot;` * `&quot;pink&quot;` * `&quot;purple&quot;` * `&quot;red&quot;` * `&quot;teal&quot;` * `&quot;white&quot;` * `&quot;yellow&quot;`
    Allowed values
      imgDominantColorUndefined - No dominant color specified.
      black - Predominantly black images only.
      blue - Predominantly blue images only.
      brown - Predominantly brown images only.
      gray - Predominantly gray images only.
      green - Predominantly green images only.
      orange - Predominantly orange images only.
      pink - Predominantly pink images only.
      purple - Predominantly purple images only.
      red - Predominantly red images only.
      teal - Predominantly teal images only.
      white - Predominantly white images only.
      yellow - Predominantly yellow images only.
  safe: string, Search safety level. Acceptable values are: * `&quot;active&quot;`: Enables SafeSearch filtering. * `&quot;off&quot;`: Disables SafeSearch filtering. (default)
    Allowed values
      safeUndefined - SafeSearch mode unspecified. (Falls back to engine&#x27;s configuration.)
      active - Turn SafeSearch on.
      high - Deprecated, equivalent to &quot;active&quot;.
      medium - Deprecated, equivalent to &quot;active&quot;.
      off - Turn SafeSearch off.
  hl: string, Sets the user interface language. * Explicitly setting this parameter improves the performance and the quality of your search results. * See the [Interface Languages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing) for more information, and (Supported Interface Languages)[https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages] for a list of supported languages.
  siteSearch: string, Specifies a given site which should always be included or excluded from results (see `siteSearchFilter` parameter, below).
  num: integer, Number of search results to return. * Valid values are integers between 1 and 10, inclusive.
  cx: string, The Programmable Search Engine ID to use for this request.
  lr: string, Restricts the search to documents written in a particular language (e.g., `lr=lang_ja`). Acceptable values are: * `&quot;lang_ar&quot;`: Arabic * `&quot;lang_bg&quot;`: Bulgarian * `&quot;lang_ca&quot;`: Catalan * `&quot;lang_cs&quot;`: Czech * `&quot;lang_da&quot;`: Danish * `&quot;lang_de&quot;`: German * `&quot;lang_el&quot;`: Greek * `&quot;lang_en&quot;`: English * `&quot;lang_es&quot;`: Spanish * `&quot;lang_et&quot;`: Estonian * `&quot;lang_fi&quot;`: Finnish * `&quot;lang_fr&quot;`: French * `&quot;lang_hr&quot;`: Croatian * `&quot;lang_hu&quot;`: Hungarian * `&quot;lang_id&quot;`: Indonesian * `&quot;lang_is&quot;`: Icelandic * `&quot;lang_it&quot;`: Italian * `&quot;lang_iw&quot;`: Hebrew * `&quot;lang_ja&quot;`: Japanese * `&quot;lang_ko&quot;`: Korean * `&quot;lang_lt&quot;`: Lithuanian * `&quot;lang_lv&quot;`: Latvian * `&quot;lang_nl&quot;`: Dutch * `&quot;lang_no&quot;`: Norwegian * `&quot;lang_pl&quot;`: Polish * `&quot;lang_pt&quot;`: Portuguese * `&quot;lang_ro&quot;`: Romanian * `&quot;lang_ru&quot;`: Russian * `&quot;lang_sk&quot;`: Slovak * `&quot;lang_sl&quot;`: Slovenian * `&quot;lang_sr&quot;`: Serbian * `&quot;lang_sv&quot;`: Swedish * `&quot;lang_tr&quot;`: Turkish * `&quot;lang_zh-CN&quot;`: Chinese (Simplified) * `&quot;lang_zh-TW&quot;`: Chinese (Traditional)
  hq: string, Appends the specified query terms to the query, as if they were combined with a logical AND operator.
  q: string, Query
  orTerms: string, Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms.
  relatedSite: string, Specifies that all search results should be pages that are related to the specified URL.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to a custom search request.
    &quot;kind&quot;: &quot;A String&quot;, # Unique identifier for the type of current object. For this API, it is customsearch#search.
    &quot;context&quot;: { # Metadata and refinements associated with the given search engine, including: * The name of the search engine that was used for the query. * A set of [facet objects](https://developers.google.com/custom-search/docs/refinements#create) (refinements) you can use for refining a search.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;spelling&quot;: { # Spell correction information for a query.
      &quot;htmlCorrectedQuery&quot;: &quot;A String&quot;, # The corrected query, formatted in HTML.
      &quot;correctedQuery&quot;: &quot;A String&quot;, # The corrected query.
    },
    &quot;searchInformation&quot;: { # Metadata about a search operation.
      &quot;formattedTotalResults&quot;: &quot;A String&quot;, # The total number of search results, formatted according to locale style.
      &quot;totalResults&quot;: &quot;A String&quot;, # The total number of search results returned by the query.
      &quot;formattedSearchTime&quot;: &quot;A String&quot;, # The time taken for the server to return search results, formatted according to locale style.
      &quot;searchTime&quot;: 3.14, # The time taken for the server to return search results.
    },
    &quot;url&quot;: { # OpenSearch template and URL.
      &quot;template&quot;: &quot;A String&quot;, # The actual [OpenSearch template](http://www.opensearch.org/specifications/opensearch/1.1#opensearch_url_template_syntax) for this API.
      &quot;type&quot;: &quot;A String&quot;, # The MIME type of the OpenSearch URL template for the Custom Search JSON API.
    },
    &quot;queries&quot;: { # Query metadata for the previous, current, and next pages of results.
      &quot;request&quot;: [ # Metadata representing the current request.
        { # Custom search request metadata.
          &quot;orTerms&quot;: &quot;A String&quot;, # Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms. You can also use the [Boolean OR](https://developers.google.com/custom-search/docs/xml_results#BooleanOrqt) query term for this type of query.
          &quot;imgSize&quot;: &quot;A String&quot;, # Restricts results to images of a specified size. Supported values are: * `icon` (small) * `small | medium | large | xlarge` (medium) * `xxlarge` (large) * `huge` (extra-large)
          &quot;hl&quot;: &quot;A String&quot;, # Specifies the interface language (host language) of your user interface. Explicitly setting this parameter improves the performance and the quality of your search results. See the [Interface Languages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages) for a list of supported languages.
          &quot;excludeTerms&quot;: &quot;A String&quot;, # Identifies a word or phrase that should not appear in any documents in the search results.
          &quot;totalResults&quot;: &quot;A String&quot;, # Estimated number of total search results. May not be accurate.
          &quot;linkSite&quot;: &quot;A String&quot;, # Specifies that all results should contain a link to a specific URL.
          &quot;imgColorType&quot;: &quot;A String&quot;, # Restricts results to images of a specified color type. Supported values are: * `mono` (black and white) * `gray` (grayscale) * `color` (color)
          &quot;disableCnTwTranslation&quot;: &quot;A String&quot;, # Enables or disables the [Simplified and Traditional Chinese Search](https://developers.google.com/custom-search/docs/xml_results#chineseSearch) feature. Supported values are: * `0`: enabled (default) * `1`: disabled
          &quot;imgType&quot;: &quot;A String&quot;, # Restricts results to images of a specified type. Supported values are: * `clipart` (Clip art) * `face` (Face) * `lineart` (Line drawing) * `photo` (Photo) * `animated` (Animated) * `stock` (Stock)
          &quot;filter&quot;: &quot;A String&quot;, # Activates or deactivates the automatic filtering of Google search results. See [Automatic Filtering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering) for more information about Google&#x27;s search results filters. Valid values for this parameter are: * `0`: Disabled * `1`: Enabled (default) **Note**: By default, Google applies filtering to all search results to improve the quality of those results.
          &quot;startIndex&quot;: 42, # The index of the current set of search results into the total set of results, where the index of the first result is 1.
          &quot;gl&quot;: &quot;A String&quot;, # Boosts search results whose country of origin matches the parameter value. See [Country Codes](https://developers.google.com/custom-search/docs/xml_results#countryCodes) for a list of valid values. Specifying a `gl` parameter value in WebSearch requests should improve the relevance of results. This is particularly true for international customers and, even more specifically, for customers in English-speaking countries other than the United States.
          &quot;count&quot;: 42, # Number of search results returned in this set.
          &quot;sort&quot;: &quot;A String&quot;, # Specifies that results should be sorted according to the specified expression. For example, sort by date.
          &quot;inputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search requests.
          &quot;language&quot;: &quot;A String&quot;, # The language of the search results.
          &quot;highRange&quot;: &quot;A String&quot;, # Specifies the ending value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.
          &quot;googleHost&quot;: &quot;A String&quot;, # Specifies the Google domain (for example, google.com, google.de, or google.fr) to which the search should be limited.
          &quot;exactTerms&quot;: &quot;A String&quot;, # Identifies a phrase that all documents in the search results must contain.
          &quot;outputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search results.
          &quot;cr&quot;: &quot;A String&quot;, # Restricts search results to documents originating in a particular country. You may use [Boolean operators](https://developers.google.com/custom-search/docs/xml_results#booleanOperators) in the `cr` parameter&#x27;s value. Google WebSearch determines the country of a document by analyzing the following: * The top-level domain (TLD) of the document&#x27;s URL. * The geographic location of the web server&#x27;s IP address. See [Country (cr) Parameter Values](https://developers.google.com/custom-search/docs/xml_results#countryCollections) for a list of valid values for this parameter.
          &quot;rights&quot;: &quot;A String&quot;, # Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`
          &quot;startPage&quot;: 42, # The page number of this set of results, where the page length is set by the `count` property.
          &quot;safe&quot;: &quot;A String&quot;, # Specifies the [SafeSearch level](https://developers.google.com/custom-search/docs/xml_results#safeSearchLevels) used for filtering out adult results. This is a custom property not defined in the OpenSearch spec. Valid parameter values are: * `&quot;off&quot;`: Disable SafeSearch * `&quot;active&quot;`: Enable SafeSearch
          &quot;fileType&quot;: &quot;A String&quot;, # Restricts results to files of a specified extension. Filetypes supported by Google include: * Adobe Portable Document Format (`pdf`) * Adobe PostScript (`ps`) * Lotus 1-2-3 (`wk1`, `wk2`, `wk3`, `wk4`, `wk5`, `wki`, `wks`, `wku`) * Lotus WordPro (`lwp`) * Macwrite (`mw`) * Microsoft Excel (`xls`) * Microsoft PowerPoint (`ppt`) * Microsoft Word (`doc`) * Microsoft Works (`wks`, `wps`, `wdb`) * Microsoft Write (`wri`) * Rich Text Format (`rtf`) * Shockwave Flash (`swf`) * Text (`ans`, `txt`). Additional filetypes may be added in the future. An up-to-date list can always be found in Google&#x27;s [file type FAQ](https://support.google.com/webmasters/answer/35287).
          &quot;hq&quot;: &quot;A String&quot;, # Appends the specified query terms to the query, as if they were combined with a logical `AND` operator.
          &quot;title&quot;: &quot;A String&quot;, # A description of the query.
          &quot;searchType&quot;: &quot;A String&quot;, # Allowed values are `web` or `image`. If unspecified, results are limited to webpages.
          &quot;searchTerms&quot;: &quot;A String&quot;, # The search terms entered by the user.
          &quot;siteSearch&quot;: &quot;A String&quot;, # Restricts results to URLs from a specified site.
          &quot;imgDominantColor&quot;: &quot;A String&quot;, # Restricts results to images with a specific dominant color. Supported values are: * `red` * `orange` * `yellow` * `green` * `teal` * `blue` * `purple` * `pink` * `white` * `gray` * `black` * `brown`
          &quot;dateRestrict&quot;: &quot;A String&quot;, # Restricts results to URLs based on date. Supported values include: * `d[number]`: requests results from the specified number of past days. * `w[number]`: requests results from the specified number of past weeks. * `m[number]`: requests results from the specified number of past months. * `y[number]`: requests results from the specified number of past years.
          &quot;lowRange&quot;: &quot;A String&quot;, # Specifies the starting value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.
          &quot;cx&quot;: &quot;A String&quot;, # The identifier of an engine created using the Programmable Search Engine [Control Panel](https://programmablesearchengine.google.com/). This is a custom property not defined in the OpenSearch spec. This parameter is **required**.
          &quot;siteSearchFilter&quot;: &quot;A String&quot;, # Specifies whether to include or exclude results from the site named in the `sitesearch` parameter. Supported values are: * `i`: include content from site * `e`: exclude content from site
          &quot;relatedSite&quot;: &quot;A String&quot;, # Specifies that all search results should be pages that are related to the specified URL. The parameter value should be a URL.
        },
      ],
      &quot;previousPage&quot;: [ # Metadata representing the previous page of results, if applicable.
        { # Custom search request metadata.
          &quot;cx&quot;: &quot;A String&quot;, # The identifier of an engine created using the Programmable Search Engine [Control Panel](https://programmablesearchengine.google.com/). This is a custom property not defined in the OpenSearch spec. This parameter is **required**.
          &quot;rights&quot;: &quot;A String&quot;, # Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`
          &quot;linkSite&quot;: &quot;A String&quot;, # Specifies that all results should contain a link to a specific URL.
          &quot;imgColorType&quot;: &quot;A String&quot;, # Restricts results to images of a specified color type. Supported values are: * `mono` (black and white) * `gray` (grayscale) * `color` (color)
          &quot;sort&quot;: &quot;A String&quot;, # Specifies that results should be sorted according to the specified expression. For example, sort by date.
          &quot;orTerms&quot;: &quot;A String&quot;, # Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms. You can also use the [Boolean OR](https://developers.google.com/custom-search/docs/xml_results#BooleanOrqt) query term for this type of query.
          &quot;filter&quot;: &quot;A String&quot;, # Activates or deactivates the automatic filtering of Google search results. See [Automatic Filtering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering) for more information about Google&#x27;s search results filters. Valid values for this parameter are: * `0`: Disabled * `1`: Enabled (default) **Note**: By default, Google applies filtering to all search results to improve the quality of those results.
          &quot;outputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search results.
          &quot;inputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search requests.
          &quot;highRange&quot;: &quot;A String&quot;, # Specifies the ending value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.
          &quot;excludeTerms&quot;: &quot;A String&quot;, # Identifies a word or phrase that should not appear in any documents in the search results.
          &quot;count&quot;: 42, # Number of search results returned in this set.
          &quot;fileType&quot;: &quot;A String&quot;, # Restricts results to files of a specified extension. Filetypes supported by Google include: * Adobe Portable Document Format (`pdf`) * Adobe PostScript (`ps`) * Lotus 1-2-3 (`wk1`, `wk2`, `wk3`, `wk4`, `wk5`, `wki`, `wks`, `wku`) * Lotus WordPro (`lwp`) * Macwrite (`mw`) * Microsoft Excel (`xls`) * Microsoft PowerPoint (`ppt`) * Microsoft Word (`doc`) * Microsoft Works (`wks`, `wps`, `wdb`) * Microsoft Write (`wri`) * Rich Text Format (`rtf`) * Shockwave Flash (`swf`) * Text (`ans`, `txt`). Additional filetypes may be added in the future. An up-to-date list can always be found in Google&#x27;s [file type FAQ](https://support.google.com/webmasters/answer/35287).
          &quot;exactTerms&quot;: &quot;A String&quot;, # Identifies a phrase that all documents in the search results must contain.
          &quot;siteSearch&quot;: &quot;A String&quot;, # Restricts results to URLs from a specified site.
          &quot;hq&quot;: &quot;A String&quot;, # Appends the specified query terms to the query, as if they were combined with a logical `AND` operator.
          &quot;title&quot;: &quot;A String&quot;, # A description of the query.
          &quot;hl&quot;: &quot;A String&quot;, # Specifies the interface language (host language) of your user interface. Explicitly setting this parameter improves the performance and the quality of your search results. See the [Interface Languages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages) for a list of supported languages.
          &quot;safe&quot;: &quot;A String&quot;, # Specifies the [SafeSearch level](https://developers.google.com/custom-search/docs/xml_results#safeSearchLevels) used for filtering out adult results. This is a custom property not defined in the OpenSearch spec. Valid parameter values are: * `&quot;off&quot;`: Disable SafeSearch * `&quot;active&quot;`: Enable SafeSearch
          &quot;imgSize&quot;: &quot;A String&quot;, # Restricts results to images of a specified size. Supported values are: * `icon` (small) * `small | medium | large | xlarge` (medium) * `xxlarge` (large) * `huge` (extra-large)
          &quot;dateRestrict&quot;: &quot;A String&quot;, # Restricts results to URLs based on date. Supported values include: * `d[number]`: requests results from the specified number of past days. * `w[number]`: requests results from the specified number of past weeks. * `m[number]`: requests results from the specified number of past months. * `y[number]`: requests results from the specified number of past years.
          &quot;imgDominantColor&quot;: &quot;A String&quot;, # Restricts results to images with a specific dominant color. Supported values are: * `red` * `orange` * `yellow` * `green` * `teal` * `blue` * `purple` * `pink` * `white` * `gray` * `black` * `brown`
          &quot;lowRange&quot;: &quot;A String&quot;, # Specifies the starting value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.
          &quot;searchTerms&quot;: &quot;A String&quot;, # The search terms entered by the user.
          &quot;totalResults&quot;: &quot;A String&quot;, # Estimated number of total search results. May not be accurate.
          &quot;language&quot;: &quot;A String&quot;, # The language of the search results.
          &quot;searchType&quot;: &quot;A String&quot;, # Allowed values are `web` or `image`. If unspecified, results are limited to webpages.
          &quot;gl&quot;: &quot;A String&quot;, # Boosts search results whose country of origin matches the parameter value. See [Country Codes](https://developers.google.com/custom-search/docs/xml_results#countryCodes) for a list of valid values. Specifying a `gl` parameter value in WebSearch requests should improve the relevance of results. This is particularly true for international customers and, even more specifically, for customers in English-speaking countries other than the United States.
          &quot;startPage&quot;: 42, # The page number of this set of results, where the page length is set by the `count` property.
          &quot;siteSearchFilter&quot;: &quot;A String&quot;, # Specifies whether to include or exclude results from the site named in the `sitesearch` parameter. Supported values are: * `i`: include content from site * `e`: exclude content from site
          &quot;imgType&quot;: &quot;A String&quot;, # Restricts results to images of a specified type. Supported values are: * `clipart` (Clip art) * `face` (Face) * `lineart` (Line drawing) * `photo` (Photo) * `animated` (Animated) * `stock` (Stock)
          &quot;startIndex&quot;: 42, # The index of the current set of search results into the total set of results, where the index of the first result is 1.
          &quot;googleHost&quot;: &quot;A String&quot;, # Specifies the Google domain (for example, google.com, google.de, or google.fr) to which the search should be limited.
          &quot;relatedSite&quot;: &quot;A String&quot;, # Specifies that all search results should be pages that are related to the specified URL. The parameter value should be a URL.
          &quot;disableCnTwTranslation&quot;: &quot;A String&quot;, # Enables or disables the [Simplified and Traditional Chinese Search](https://developers.google.com/custom-search/docs/xml_results#chineseSearch) feature. Supported values are: * `0`: enabled (default) * `1`: disabled
          &quot;cr&quot;: &quot;A String&quot;, # Restricts search results to documents originating in a particular country. You may use [Boolean operators](https://developers.google.com/custom-search/docs/xml_results#booleanOperators) in the `cr` parameter&#x27;s value. Google WebSearch determines the country of a document by analyzing the following: * The top-level domain (TLD) of the document&#x27;s URL. * The geographic location of the web server&#x27;s IP address. See [Country (cr) Parameter Values](https://developers.google.com/custom-search/docs/xml_results#countryCollections) for a list of valid values for this parameter.
        },
      ],
      &quot;nextPage&quot;: [ # Metadata representing the next page of results, if applicable.
        { # Custom search request metadata.
          &quot;hq&quot;: &quot;A String&quot;, # Appends the specified query terms to the query, as if they were combined with a logical `AND` operator.
          &quot;startPage&quot;: 42, # The page number of this set of results, where the page length is set by the `count` property.
          &quot;imgColorType&quot;: &quot;A String&quot;, # Restricts results to images of a specified color type. Supported values are: * `mono` (black and white) * `gray` (grayscale) * `color` (color)
          &quot;linkSite&quot;: &quot;A String&quot;, # Specifies that all results should contain a link to a specific URL.
          &quot;imgType&quot;: &quot;A String&quot;, # Restricts results to images of a specified type. Supported values are: * `clipart` (Clip art) * `face` (Face) * `lineart` (Line drawing) * `photo` (Photo) * `animated` (Animated) * `stock` (Stock)
          &quot;relatedSite&quot;: &quot;A String&quot;, # Specifies that all search results should be pages that are related to the specified URL. The parameter value should be a URL.
          &quot;imgDominantColor&quot;: &quot;A String&quot;, # Restricts results to images with a specific dominant color. Supported values are: * `red` * `orange` * `yellow` * `green` * `teal` * `blue` * `purple` * `pink` * `white` * `gray` * `black` * `brown`
          &quot;searchTerms&quot;: &quot;A String&quot;, # The search terms entered by the user.
          &quot;safe&quot;: &quot;A String&quot;, # Specifies the [SafeSearch level](https://developers.google.com/custom-search/docs/xml_results#safeSearchLevels) used for filtering out adult results. This is a custom property not defined in the OpenSearch spec. Valid parameter values are: * `&quot;off&quot;`: Disable SafeSearch * `&quot;active&quot;`: Enable SafeSearch
          &quot;disableCnTwTranslation&quot;: &quot;A String&quot;, # Enables or disables the [Simplified and Traditional Chinese Search](https://developers.google.com/custom-search/docs/xml_results#chineseSearch) feature. Supported values are: * `0`: enabled (default) * `1`: disabled
          &quot;hl&quot;: &quot;A String&quot;, # Specifies the interface language (host language) of your user interface. Explicitly setting this parameter improves the performance and the quality of your search results. See the [Interface Languages](https://developers.google.com/custom-search/docs/xml_results#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/xml_results#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages) for a list of supported languages.
          &quot;cr&quot;: &quot;A String&quot;, # Restricts search results to documents originating in a particular country. You may use [Boolean operators](https://developers.google.com/custom-search/docs/xml_results#booleanOperators) in the `cr` parameter&#x27;s value. Google WebSearch determines the country of a document by analyzing the following: * The top-level domain (TLD) of the document&#x27;s URL. * The geographic location of the web server&#x27;s IP address. See [Country (cr) Parameter Values](https://developers.google.com/custom-search/docs/xml_results#countryCollections) for a list of valid values for this parameter.
          &quot;rights&quot;: &quot;A String&quot;, # Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`
          &quot;count&quot;: 42, # Number of search results returned in this set.
          &quot;filter&quot;: &quot;A String&quot;, # Activates or deactivates the automatic filtering of Google search results. See [Automatic Filtering](https://developers.google.com/custom-search/docs/xml_results#automaticFiltering) for more information about Google&#x27;s search results filters. Valid values for this parameter are: * `0`: Disabled * `1`: Enabled (default) **Note**: By default, Google applies filtering to all search results to improve the quality of those results.
          &quot;sort&quot;: &quot;A String&quot;, # Specifies that results should be sorted according to the specified expression. For example, sort by date.
          &quot;startIndex&quot;: 42, # The index of the current set of search results into the total set of results, where the index of the first result is 1.
          &quot;lowRange&quot;: &quot;A String&quot;, # Specifies the starting value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.
          &quot;exactTerms&quot;: &quot;A String&quot;, # Identifies a phrase that all documents in the search results must contain.
          &quot;cx&quot;: &quot;A String&quot;, # The identifier of an engine created using the Programmable Search Engine [Control Panel](https://programmablesearchengine.google.com/). This is a custom property not defined in the OpenSearch spec. This parameter is **required**.
          &quot;language&quot;: &quot;A String&quot;, # The language of the search results.
          &quot;imgSize&quot;: &quot;A String&quot;, # Restricts results to images of a specified size. Supported values are: * `icon` (small) * `small | medium | large | xlarge` (medium) * `xxlarge` (large) * `huge` (extra-large)
          &quot;googleHost&quot;: &quot;A String&quot;, # Specifies the Google domain (for example, google.com, google.de, or google.fr) to which the search should be limited.
          &quot;inputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search requests.
          &quot;searchType&quot;: &quot;A String&quot;, # Allowed values are `web` or `image`. If unspecified, results are limited to webpages.
          &quot;highRange&quot;: &quot;A String&quot;, # Specifies the ending value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.
          &quot;outputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search results.
          &quot;excludeTerms&quot;: &quot;A String&quot;, # Identifies a word or phrase that should not appear in any documents in the search results.
          &quot;title&quot;: &quot;A String&quot;, # A description of the query.
          &quot;orTerms&quot;: &quot;A String&quot;, # Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms. You can also use the [Boolean OR](https://developers.google.com/custom-search/docs/xml_results#BooleanOrqt) query term for this type of query.
          &quot;totalResults&quot;: &quot;A String&quot;, # Estimated number of total search results. May not be accurate.
          &quot;siteSearchFilter&quot;: &quot;A String&quot;, # Specifies whether to include or exclude results from the site named in the `sitesearch` parameter. Supported values are: * `i`: include content from site * `e`: exclude content from site
          &quot;siteSearch&quot;: &quot;A String&quot;, # Restricts results to URLs from a specified site.
          &quot;gl&quot;: &quot;A String&quot;, # Boosts search results whose country of origin matches the parameter value. See [Country Codes](https://developers.google.com/custom-search/docs/xml_results#countryCodes) for a list of valid values. Specifying a `gl` parameter value in WebSearch requests should improve the relevance of results. This is particularly true for international customers and, even more specifically, for customers in English-speaking countries other than the United States.
          &quot;dateRestrict&quot;: &quot;A String&quot;, # Restricts results to URLs based on date. Supported values include: * `d[number]`: requests results from the specified number of past days. * `w[number]`: requests results from the specified number of past weeks. * `m[number]`: requests results from the specified number of past months. * `y[number]`: requests results from the specified number of past years.
          &quot;fileType&quot;: &quot;A String&quot;, # Restricts results to files of a specified extension. Filetypes supported by Google include: * Adobe Portable Document Format (`pdf`) * Adobe PostScript (`ps`) * Lotus 1-2-3 (`wk1`, `wk2`, `wk3`, `wk4`, `wk5`, `wki`, `wks`, `wku`) * Lotus WordPro (`lwp`) * Macwrite (`mw`) * Microsoft Excel (`xls`) * Microsoft PowerPoint (`ppt`) * Microsoft Word (`doc`) * Microsoft Works (`wks`, `wps`, `wdb`) * Microsoft Write (`wri`) * Rich Text Format (`rtf`) * Shockwave Flash (`swf`) * Text (`ans`, `txt`). Additional filetypes may be added in the future. An up-to-date list can always be found in Google&#x27;s [file type FAQ](https://support.google.com/webmasters/answer/35287).
        },
      ],
    },
    &quot;promotions&quot;: [ # The set of [promotions](https://developers.google.com/custom-search/docs/promotions). Present only if the custom search engine&#x27;s configuration files define any promotions for the given query.
      { # Promotion result.
        &quot;bodyLines&quot;: [ # An array of block objects for this promotion. See [Google WebSearch Protocol reference](https://developers.google.com/custom-search/docs/xml_results) for more information.
          { # Block object belonging to a promotion.
            &quot;htmlTitle&quot;: &quot;A String&quot;, # The block object&#x27;s text in HTML, if it has text.
            &quot;link&quot;: &quot;A String&quot;, # The anchor text of the block object&#x27;s link, if it has a link.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the block object&#x27;s link, if it has one.
            &quot;title&quot;: &quot;A String&quot;, # The block object&#x27;s text, if it has text.
          },
        ],
        &quot;image&quot;: { # Image belonging to a promotion.
          &quot;width&quot;: 42, # Image width in pixels.
          &quot;source&quot;: &quot;A String&quot;, # URL of the image for this promotion link.
          &quot;height&quot;: 42, # Image height in pixels.
        },
        &quot;title&quot;: &quot;A String&quot;, # The title of the promotion.
        &quot;displayLink&quot;: &quot;A String&quot;, # An abridged version of this search&#x27;s result URL, e.g. www.example.com.
        &quot;htmlTitle&quot;: &quot;A String&quot;, # The title of the promotion, in HTML.
        &quot;link&quot;: &quot;A String&quot;, # The URL of the promotion.
      },
    ],
    &quot;items&quot;: [ # The current set of custom search results.
      { # A custom search result.
        &quot;formattedUrl&quot;: &quot;A String&quot;, # The URL displayed after the snippet for each search result.
        &quot;fileFormat&quot;: &quot;A String&quot;, # The file format of the search result.
        &quot;kind&quot;: &quot;A String&quot;, # A unique identifier for the type of current object. For this API, it is `customsearch#result.`
        &quot;cacheId&quot;: &quot;A String&quot;, # Indicates the ID of Google&#x27;s cached version of the search result.
        &quot;snippet&quot;: &quot;A String&quot;, # The snippet of the search result, in plain text.
        &quot;htmlFormattedUrl&quot;: &quot;A String&quot;, # The HTML-formatted URL displayed after the snippet for each search result.
        &quot;title&quot;: &quot;A String&quot;, # The title of the search result, in plain text.
        &quot;image&quot;: { # Image belonging to a custom search result.
          &quot;height&quot;: 42, # The height of the image, in pixels.
          &quot;contextLink&quot;: &quot;A String&quot;, # A URL pointing to the webpage hosting the image.
          &quot;byteSize&quot;: 42, # The size of the image, in pixels.
          &quot;thumbnailWidth&quot;: 42, # The width of the thumbnail image, in pixels.
          &quot;width&quot;: 42, # The width of the image, in pixels.
          &quot;thumbnailLink&quot;: &quot;A String&quot;, # A URL to the thumbnail image.
          &quot;thumbnailHeight&quot;: 42, # The height of the thumbnail image, in pixels.
        },
        &quot;htmlSnippet&quot;: &quot;A String&quot;, # The snippet of the search result, in HTML.
        &quot;labels&quot;: [ # Encapsulates all information about [refinement labels](https://developers.google.com/custom-search/docs/xml_results).
          { # Refinement label associated with a custom search result.
            &quot;label_with_op&quot;: &quot;A String&quot;, # Refinement label and the associated refinement operation.
            &quot;name&quot;: &quot;A String&quot;, # The name of a refinement label, which you can use to refine searches. Don&#x27;t display this in your user interface; instead, use displayName.
            &quot;displayName&quot;: &quot;A String&quot;, # The display name of a refinement label. This is the name you should display in your user interface.
          },
        ],
        &quot;pagemap&quot;: { # Contains [PageMap](https://developers.google.com/custom-search/docs/structured_data#pagemaps) information for this search result.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
        &quot;mime&quot;: &quot;A String&quot;, # The MIME type of the search result.
        &quot;displayLink&quot;: &quot;A String&quot;, # An abridged version of this search result’s URL, e.g. www.example.com.
        &quot;htmlTitle&quot;: &quot;A String&quot;, # The title of the search result, in HTML.
        &quot;link&quot;: &quot;A String&quot;, # The full URL to which the search result is pointing, e.g. http://www.example.com/foo/bar.
      },
    ],
  }</pre>
</div>

</body></html>