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

Args:
  hq: string, Appends the specified query terms to the query, as if they were combined with a logical AND operator.
  exactTerms: string, Identifies a phrase that all documents in the search results must contain.
  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)
  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.
  linkSite: string, Specifies that all search results should contain a link to a particular URL.
  relatedSite: string, Specifies that all search results should be pages that are related to the specified URL.
  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.
  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.
  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.
  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.
  cx: string, The Programmable Search Engine ID to use for this request.
  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.
  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.
  q: string, Query
  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.
  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.
  num: integer, Number of search results to return. * Valid values are integers between 1 and 10, inclusive.
  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.
  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).
  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.
  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)
  siteSearch: string, Specifies a given site which should always be included or excluded from results (see `siteSearchFilter` parameter, below).
  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.
  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.
  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).
  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).
  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.
  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.
  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
  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;url&quot;: { # OpenSearch template and URL.
      &quot;type&quot;: &quot;A String&quot;, # The MIME type of the OpenSearch URL template for the Custom Search JSON API.
      &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;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;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;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;excludeTerms&quot;: &quot;A String&quot;, # Identifies a word or phrase that should not appear in any documents in the search results.
          &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;rights&quot;: &quot;A String&quot;, # Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`
          &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;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;title&quot;: &quot;A String&quot;, # A description of the query.
          &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;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;sort&quot;: &quot;A String&quot;, # Specifies that results should be sorted according to the specified expression. For example, sort by date.
          &quot;siteSearch&quot;: &quot;A String&quot;, # Restricts results to URLs from a specified site.
          &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;searchTerms&quot;: &quot;A String&quot;, # The search terms entered by the user.
          &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;count&quot;: 42, # Number of search results returned in this set.
          &quot;startPage&quot;: 42, # The page number of this set of results, where the page length is set by the `count` property.
          &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;searchType&quot;: &quot;A String&quot;, # Allowed values are `web` or `image`. If unspecified, results are limited to webpages.
          &quot;inputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search requests.
          &quot;linkSite&quot;: &quot;A String&quot;, # Specifies that all results should contain a link to a specific URL.
          &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;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;language&quot;: &quot;A String&quot;, # The language of the search results.
          &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;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;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;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;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;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;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;totalResults&quot;: &quot;A String&quot;, # Estimated number of total search results. May not be accurate.
          &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;previousPage&quot;: [ # Metadata representing the previous page of results, if applicable.
        { # Custom search request metadata.
          &quot;excludeTerms&quot;: &quot;A String&quot;, # Identifies a word or phrase that should not appear in any documents in 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;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;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;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;count&quot;: 42, # Number of search results returned in this set.
          &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;siteSearch&quot;: &quot;A String&quot;, # Restricts results to URLs from a specified site.
          &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;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;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;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;outputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search results.
          &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;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;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;inputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search requests.
          &quot;startPage&quot;: 42, # The page number of this set of results, where the page length is set by the `count` property.
          &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;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;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;title&quot;: &quot;A String&quot;, # A description of the query.
          &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;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;searchType&quot;: &quot;A String&quot;, # Allowed values are `web` or `image`. If unspecified, results are limited to webpages.
          &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;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;searchTerms&quot;: &quot;A String&quot;, # The search terms entered by the user.
          &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;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;exactTerms&quot;: &quot;A String&quot;, # Identifies a phrase that all documents in the search results must contain.
          &quot;totalResults&quot;: &quot;A String&quot;, # Estimated number of total search results. May not be accurate.
        },
      ],
      &quot;nextPage&quot;: [ # Metadata representing the next page of results, if applicable.
        { # Custom search request metadata.
          &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;exactTerms&quot;: &quot;A String&quot;, # Identifies a phrase that all documents in the search results must contain.
          &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;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;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;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;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;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;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;siteSearch&quot;: &quot;A String&quot;, # Restricts results to URLs from a specified site.
          &quot;searchType&quot;: &quot;A String&quot;, # Allowed values are `web` or `image`. If unspecified, results are limited to webpages.
          &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;searchTerms&quot;: &quot;A String&quot;, # The search terms entered by the user.
          &quot;linkSite&quot;: &quot;A String&quot;, # Specifies that all results should contain a link to a specific URL.
          &quot;excludeTerms&quot;: &quot;A String&quot;, # Identifies a word or phrase that should not appear in any documents in the search 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;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;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;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;totalResults&quot;: &quot;A String&quot;, # Estimated number of total search results. May not be accurate.
          &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;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;count&quot;: 42, # Number of search results returned in this set.
          &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;sort&quot;: &quot;A String&quot;, # Specifies that results should be sorted according to the specified expression. For example, sort by date.
          &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;rights&quot;: &quot;A String&quot;, # Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`
          &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;language&quot;: &quot;A String&quot;, # The language of the search results.
          &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;title&quot;: &quot;A String&quot;, # A description of the query.
          &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;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;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;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;title&quot;: &quot;A String&quot;, # The title of the promotion.
        &quot;htmlTitle&quot;: &quot;A String&quot;, # The title of the promotion, in HTML.
        &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;title&quot;: &quot;A String&quot;, # The block object&#x27;s text, 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;htmlTitle&quot;: &quot;A String&quot;, # The block object&#x27;s text in HTML, if it has text.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the block object&#x27;s link, if it has one.
          },
        ],
        &quot;displayLink&quot;: &quot;A String&quot;, # An abridged version of this search&#x27;s result URL, e.g. www.example.com.
        &quot;image&quot;: { # Image belonging to a promotion.
          &quot;height&quot;: 42, # Image height in pixels.
          &quot;width&quot;: 42, # Image width in pixels.
          &quot;source&quot;: &quot;A String&quot;, # URL of the image for this promotion link.
        },
        &quot;link&quot;: &quot;A String&quot;, # The URL of the promotion.
      },
    ],
    &quot;searchInformation&quot;: { # Metadata about a search operation.
      &quot;searchTime&quot;: 3.14, # The time taken for the server to return search results.
      &quot;totalResults&quot;: &quot;A String&quot;, # The total number of search results returned by the query.
      &quot;formattedTotalResults&quot;: &quot;A String&quot;, # The total number of search results, formatted according to locale style.
      &quot;formattedSearchTime&quot;: &quot;A String&quot;, # The time taken for the server to return search results, formatted according to locale style.
    },
    &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;items&quot;: [ # The current set of custom search results.
      { # A custom 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;snippet&quot;: &quot;A String&quot;, # The snippet of the search result, in plain text.
        &quot;title&quot;: &quot;A String&quot;, # The title of the search result, in plain text.
        &quot;cacheId&quot;: &quot;A String&quot;, # Indicates the ID of Google&#x27;s cached version of the search result.
        &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.
        &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;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;label_with_op&quot;: &quot;A String&quot;, # Refinement label and the associated refinement operation.
          },
        ],
        &quot;displayLink&quot;: &quot;A String&quot;, # An abridged version of this search result’s URL, e.g. www.example.com.
        &quot;htmlSnippet&quot;: &quot;A String&quot;, # The snippet of the search result, in HTML.
        &quot;fileFormat&quot;: &quot;A String&quot;, # The file format of the search result.
        &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;htmlTitle&quot;: &quot;A String&quot;, # The title of the search result, in HTML.
        &quot;image&quot;: { # Image belonging to a custom search result.
          &quot;contextLink&quot;: &quot;A String&quot;, # A URL pointing to the webpage hosting the image.
          &quot;thumbnailWidth&quot;: 42, # The width of the thumbnail image, in pixels.
          &quot;thumbnailLink&quot;: &quot;A String&quot;, # A URL to the thumbnail image.
          &quot;byteSize&quot;: 42, # The size of the image, in pixels.
          &quot;width&quot;: 42, # The width of the image, in pixels.
          &quot;height&quot;: 42, # The height of the image, in pixels.
          &quot;thumbnailHeight&quot;: 42, # The height of the thumbnail image, in pixels.
        },
        &quot;mime&quot;: &quot;A String&quot;, # The MIME type of the search result.
        &quot;htmlFormattedUrl&quot;: &quot;A String&quot;, # The HTML-formatted URL displayed after the snippet for each search result.
        &quot;formattedUrl&quot;: &quot;A String&quot;, # The URL displayed after the snippet for each search result.
      },
    ],
  }</pre>
</div>

</body></html>