<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(c2coff=None, cr=None, cx=None, dateRestrict=None, exactTerms=None, excludeTerms=None, fileType=None, filter=None, gl=None, googlehost=None, highRange=None, hl=None, hq=None, imgColorType=None, imgDominantColor=None, imgSize=None, imgType=None, linkSite=None, lowRange=None, lr=None, num=None, orTerms=None, q=None, relatedSite=None, rights=None, safe=None, searchType=None, siteSearch=None, siteSearchFilter=None, sort=None, start=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(c2coff=None, cr=None, cx=None, dateRestrict=None, exactTerms=None, excludeTerms=None, fileType=None, filter=None, gl=None, googlehost=None, highRange=None, hl=None, hq=None, imgColorType=None, imgDominantColor=None, imgSize=None, imgType=None, linkSite=None, lowRange=None, lr=None, num=None, orTerms=None, q=None, relatedSite=None, rights=None, safe=None, searchType=None, siteSearch=None, siteSearchFilter=None, sort=None, start=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:
  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)
  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.
  cx: string, The Programmable Search Engine ID to use for this request.
  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.
  exactTerms: string, Identifies a phrase that all documents in the search results must contain.
  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).
  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.
  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.
  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.
  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.
  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.
  hq: string, Appends the specified query terms to the query, as if they were combined with a logical AND operator.
  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
  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.
  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.
  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.
  linkSite: string, Specifies that all search results should contain a link to a particular URL.
  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.
  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)
  num: integer, Number of search results to return. * Valid values are integers between 1 and 10, inclusive.
  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.
  q: string, Query
  relatedSite: string, Specifies that all search results should be pages that are related to the specified URL.
  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).
  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.
  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.
  siteSearch: string, Specifies a given site which should always be included or excluded from results (see `siteSearchFilter` parameter, below).
  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.
  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).
  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.
  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;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;items&quot;: [ # The current set of custom search results.
    { # A custom search result.
      &quot;cacheId&quot;: &quot;A String&quot;, # Indicates the ID of Google&#x27;s cached version 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;fileFormat&quot;: &quot;A String&quot;, # The file format of the search result.
      &quot;formattedUrl&quot;: &quot;A String&quot;, # The URL displayed after the snippet for each search result.
      &quot;htmlFormattedUrl&quot;: &quot;A String&quot;, # The HTML-formatted URL displayed after the snippet for each search result.
      &quot;htmlSnippet&quot;: &quot;A String&quot;, # The snippet of the search result, in HTML.
      &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;byteSize&quot;: 42, # The size of the image, in pixels.
        &quot;contextLink&quot;: &quot;A String&quot;, # A URL pointing to the webpage hosting the image.
        &quot;height&quot;: 42, # The height of the image, in pixels.
        &quot;thumbnailHeight&quot;: 42, # The height of the thumbnail image, in pixels.
        &quot;thumbnailLink&quot;: &quot;A String&quot;, # A URL to the thumbnail image.
        &quot;thumbnailWidth&quot;: 42, # The width of the thumbnail image, in pixels.
        &quot;width&quot;: 42, # The width of the image, in pixels.
      },
      &quot;kind&quot;: &quot;A String&quot;, # A unique identifier for the type of current object. For this API, it is `customsearch#result.`
      &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;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;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;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;mime&quot;: &quot;A String&quot;, # The MIME type 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;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;kind&quot;: &quot;A String&quot;, # Unique identifier for the type of current object. For this API, it is customsearch#search.
  &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;title&quot;: &quot;A String&quot;, # The block object&#x27;s text, 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;htmlTitle&quot;: &quot;A String&quot;, # The title of the promotion, in HTML.
      &quot;image&quot;: { # Image belonging to a promotion.
        &quot;height&quot;: 42, # Image height in pixels.
        &quot;source&quot;: &quot;A String&quot;, # URL of the image for this promotion link.
        &quot;width&quot;: 42, # Image width in pixels.
      },
      &quot;link&quot;: &quot;A String&quot;, # The URL of the promotion.
      &quot;title&quot;: &quot;A String&quot;, # The title of the promotion.
    },
  ],
  &quot;queries&quot;: { # Query metadata for the previous, current, and next pages of results.
    &quot;nextPage&quot;: [ # Metadata representing the next page of results, if applicable.
      { # Custom search request metadata.
        &quot;count&quot;: 42, # Number of search results returned in this set.
        &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;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;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;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;exactTerms&quot;: &quot;A String&quot;, # Identifies a phrase that all documents in the search results must contain.
        &quot;excludeTerms&quot;: &quot;A String&quot;, # Identifies a word or phrase that should not appear in any documents in the search results.
        &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;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;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;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;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;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;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;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;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;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;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;linkSite&quot;: &quot;A String&quot;, # Specifies that all results should contain a link to a specific URL.
        &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;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;outputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search results.
        &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;rights&quot;: &quot;A String&quot;, # Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`
        &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;searchTerms&quot;: &quot;A String&quot;, # The search terms entered by the user.
        &quot;searchType&quot;: &quot;A String&quot;, # Allowed values are `web` or `image`. If unspecified, results are limited to webpages.
        &quot;siteSearch&quot;: &quot;A String&quot;, # Restricts results to URLs from a specified site.
        &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;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;startPage&quot;: 42, # The page number of this set of results, where the page length is set by the `count` property.
        &quot;title&quot;: &quot;A String&quot;, # A description of the query.
        &quot;totalResults&quot;: &quot;A String&quot;, # Estimated number of total search results. May not be accurate.
      },
    ],
    &quot;previousPage&quot;: [ # Metadata representing the previous page of results, if applicable.
      { # Custom search request metadata.
        &quot;count&quot;: 42, # Number of search results returned in this set.
        &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;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;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;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;exactTerms&quot;: &quot;A String&quot;, # Identifies a phrase that all documents in the search results must contain.
        &quot;excludeTerms&quot;: &quot;A String&quot;, # Identifies a word or phrase that should not appear in any documents in the search results.
        &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;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;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;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;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;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;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;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;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;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;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;linkSite&quot;: &quot;A String&quot;, # Specifies that all results should contain a link to a specific URL.
        &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;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;outputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search results.
        &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;rights&quot;: &quot;A String&quot;, # Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`
        &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;searchTerms&quot;: &quot;A String&quot;, # The search terms entered by the user.
        &quot;searchType&quot;: &quot;A String&quot;, # Allowed values are `web` or `image`. If unspecified, results are limited to webpages.
        &quot;siteSearch&quot;: &quot;A String&quot;, # Restricts results to URLs from a specified site.
        &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;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;startPage&quot;: 42, # The page number of this set of results, where the page length is set by the `count` property.
        &quot;title&quot;: &quot;A String&quot;, # A description of the query.
        &quot;totalResults&quot;: &quot;A String&quot;, # Estimated number of total search results. May not be accurate.
      },
    ],
    &quot;request&quot;: [ # Metadata representing the current request.
      { # Custom search request metadata.
        &quot;count&quot;: 42, # Number of search results returned in this set.
        &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;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;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;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;exactTerms&quot;: &quot;A String&quot;, # Identifies a phrase that all documents in the search results must contain.
        &quot;excludeTerms&quot;: &quot;A String&quot;, # Identifies a word or phrase that should not appear in any documents in the search results.
        &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;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;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;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;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;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;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;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;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;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;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;linkSite&quot;: &quot;A String&quot;, # Specifies that all results should contain a link to a specific URL.
        &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;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;outputEncoding&quot;: &quot;A String&quot;, # The character encoding supported for search results.
        &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;rights&quot;: &quot;A String&quot;, # Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`
        &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;searchTerms&quot;: &quot;A String&quot;, # The search terms entered by the user.
        &quot;searchType&quot;: &quot;A String&quot;, # Allowed values are `web` or `image`. If unspecified, results are limited to webpages.
        &quot;siteSearch&quot;: &quot;A String&quot;, # Restricts results to URLs from a specified site.
        &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;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;startPage&quot;: 42, # The page number of this set of results, where the page length is set by the `count` property.
        &quot;title&quot;: &quot;A String&quot;, # A description of the query.
        &quot;totalResults&quot;: &quot;A String&quot;, # Estimated number of total search results. May not be accurate.
      },
    ],
  },
  &quot;searchInformation&quot;: { # Metadata about a search operation.
    &quot;formattedSearchTime&quot;: &quot;A String&quot;, # The time taken for the server to return search results, formatted according to locale style.
    &quot;formattedTotalResults&quot;: &quot;A String&quot;, # The total number of search results, formatted according to locale style.
    &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;spelling&quot;: { # Spell correction information for a query.
    &quot;correctedQuery&quot;: &quot;A String&quot;, # The corrected query.
    &quot;htmlCorrectedQuery&quot;: &quot;A String&quot;, # The corrected query, formatted in HTML.
  },
  &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.
  },
}</pre>
</div>

</body></html>