<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/json_api_reference#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/json_api_reference#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/json_api_reference#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/json_api_reference#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/json_api_reference#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/json_api_reference#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#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.
        { # 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.
        { # 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/json_api_reference#BooleanOrSearch) 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/json_api_reference#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/json_api_reference#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/json_api_reference#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/json_api_reference#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/json_api_reference#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#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/json_api_reference#BooleanOrSearch) 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/json_api_reference#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/json_api_reference#BooleanOrSearch) 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/json_api_reference#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/json_api_reference#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/json_api_reference#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/json_api_reference#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/json_api_reference#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#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/json_api_reference#BooleanOrSearch) 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/json_api_reference#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/json_api_reference#BooleanOrSearch) 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/json_api_reference#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/json_api_reference#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/json_api_reference#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/json_api_reference#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/json_api_reference#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#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/json_api_reference#BooleanOrSearch) 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/json_api_reference#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>