This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<spanid="id2"></span><h2><aclass="toc-backref"href="#id4"role="doc-backlink">Google API</a><aclass="headerlink"href="#google-api"title="Link to this heading">¶</a></h2>
<p>SearXNG’s implementation of the Google API is mainly done in
<p>For detailed description of the <em>REST-full</em> API see: <aclass="reference external"href="https://developers.google.com/custom-search/docs/xml_results#WebSearch_Query_Parameter_Definitions">Query Parameter
Definitions</a>. The linked API documentation can sometimes be helpful during
reverse engineering. However, we cannot use it in the freely accessible WEB
services; not all parameters can be applied and some engines are more <em>special</em>
than other (e.g. <aclass="reference internal"href="#google-news-engine"><spanclass="std std-ref">Google News</span></a>).</p>
</section>
<sectionid="module-searx.engines.google">
<spanid="google-web"></span><spanid="google-web-engine"></span><h2><aclass="toc-backref"href="#id5"role="doc-backlink">Google WEB</a><aclass="headerlink"href="#module-searx.engines.google"title="Link to this heading">¶</a></h2>
<p>This is the implementation of the Google WEB engine. Some of this
implementations (manly the <aclass="reference internal"href="#searx.engines.google.get_google_info"title="searx.engines.google.get_google_info"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">get_google_info</span></code></a>) are shared by other
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google.</span></span><spanclass="sig-name descname"><spanclass="pre">UI_ASYNC</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'use_ac:true,_fmt:prog'</span></em><aclass="headerlink"href="#searx.engines.google.UI_ASYNC"title="Link to this definition">¶</a></dt>
<dd><p>Format of the response from UI’s async request.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google.</span></span><spanclass="sig-name descname"><spanclass="pre">get_google_info</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">params</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">eng_traits</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google.html#get_google_info"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google.get_google_info"title="Link to this definition">¶</a></dt>
<dd><p>Composing various (language) properties for the google engines (<aclass="reference internal"href="#google-api"><spanclass="std std-ref">Google API</span></a>).</p>
<p>This function is called by the various google engines (<aclass="reference internal"href="#google-web-engine"><spanclass="std std-ref">Google WEB</span></a>, <aclass="reference internal"href="#google-images-engine"><spanclass="std std-ref">Google Images</span></a>, <aclass="reference internal"href="#google-news-engine"><spanclass="std std-ref">Google News</span></a> and
<li><p><strong>param</strong> (<aclass="reference external"href="https://docs.python.org/3/library/stdtypes.html#dict"title="(in Python v3.13)"><em>dict</em></a>) – Request parameters of the engine. At least
a <codeclass="docutils literal notranslate"><spanclass="pre">searxng_locale</span></code> key should be in the dictionary.</p></li>
<li><p><strong>eng_traits</strong>– Engine’s traits fetched from google preferences
<ddclass="field-odd"><p><p>Py-Dictionary with the key/value pairs:</p>
<dlclass="simple">
<dt>language:</dt><dd><p>The language code that is used by google (e.g. <codeclass="docutils literal notranslate"><spanclass="pre">lang_en</span></code> or
<dt>country:</dt><dd><p>The country code that is used by google (e.g. <codeclass="docutils literal notranslate"><spanclass="pre">US</span></code> or <codeclass="docutils literal notranslate"><spanclass="pre">TW</span></code>)</p>
</dd>
<dt>locale:</dt><dd><p>A instance of <aclass="reference external"href="https://babel.readthedocs.io/en/latest/api/core.html#babel.core.Locale"title="(in Babel v2.2)"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">babel.core.Locale</span></code></a> build from the
<dt>subdomain:</dt><dd><p>Google subdomain <codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">google_domains</span></code> that fits to the country
code.</p>
</dd>
<dt>params:</dt><dd><p>Py-Dictionary with additional request arguments (can be passed to
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">hl</span></code> parameter: specifies the interface language of user interface.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">lr</span></code> parameter: restricts search results to documents written in
a particular language.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">cr</span></code> parameter: restricts search results to documents
originating in a particular country.</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">ie</span></code> parameter: sets the character encoding scheme that should
be used to interpret the query string (‘utf8’).</p></li>
<li><p><codeclass="docutils literal notranslate"><spanclass="pre">oe</span></code> parameter: sets the character encoding scheme that should
be used to decode the XML result (‘utf8’).</p></li>
</ul>
</dd>
<dt>headers:</dt><dd><p>Py-Dictionary with additional HTTP headers (can be passed to
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google.</span></span><spanclass="sig-name descname"><spanclass="pre">request</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">query</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">params</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google.html#request"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google.request"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google.</span></span><spanclass="sig-name descname"><spanclass="pre">response</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">resp</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="../index.html#searx.result_types.EngineResults"title="searx.result_types.EngineResults"><spanclass="pre">EngineResults</span></a></span></span><aclass="reference internal"href="../../../_modules/searx/engines/google.html#response"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google.response"title="Link to this definition">¶</a></dt>
<dd><p>Get response from google’s search request</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google.</span></span><spanclass="sig-name descname"><spanclass="pre">fetch_traits</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">engine_traits</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><aclass="reference internal"href="../enginelib.html#searx.enginelib.traits.EngineTraits"title="searx.enginelib.traits.EngineTraits"><spanclass="pre">EngineTraits</span></a></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">add_domains</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><aclass="reference external"href="https://docs.python.org/3/library/functions.html#bool"title="(in Python v3.13)"><spanclass="pre">bool</span></a></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">True</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google.html#fetch_traits"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google.fetch_traits"title="Link to this definition">¶</a></dt>
<dd><p>Fetch languages from Google.</p>
</dd></dl>
</section>
<sectionid="google-autocomplete">
<spanid="id3"></span><h2><aclass="toc-backref"href="#id6"role="doc-backlink">Google Autocomplete</a><aclass="headerlink"href="#google-autocomplete"title="Link to this heading">¶</a></h2>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.autocomplete.</span></span><spanclass="sig-name descname"><spanclass="pre">google_complete</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">query</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">sxng_locale</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/autocomplete.html#google_complete"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.autocomplete.google_complete"title="Link to this definition">¶</a></dt>
<dd><p>Autocomplete from Google. Supports Google’s languages and subdomains
(<aclass="reference internal"href="#searx.engines.google.get_google_info"title="searx.engines.google.get_google_info"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">searx.engines.google.get_google_info</span></code></a>) by using the async REST
<spanid="google-images"></span><spanid="google-images-engine"></span><h2><aclass="toc-backref"href="#id7"role="doc-backlink">Google Images</a><aclass="headerlink"href="#module-searx.engines.google_images"title="Link to this heading">¶</a></h2>
<p>This is the implementation of the Google Images engine using the internal
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_images.</span></span><spanclass="sig-name descname"><spanclass="pre">request</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">query</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">params</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_images.html#request"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_images.request"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_images.</span></span><spanclass="sig-name descname"><spanclass="pre">response</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">resp</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_images.html#response"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_images.response"title="Link to this definition">¶</a></dt>
<dd><p>Get response from google’s search request</p>
</dd></dl>
</section>
<sectionid="module-searx.engines.google_videos">
<spanid="google-videos"></span><spanid="google-videos-engine"></span><h2><aclass="toc-backref"href="#id8"role="doc-backlink">Google Videos</a><aclass="headerlink"href="#module-searx.engines.google_videos"title="Link to this heading">¶</a></h2>
<p>This is the implementation of the Google Videos engine.</p>
<p>This engine needs to allow images from the <aclass="reference external"href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">data URLs</a> (prefixed with the
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_videos.</span></span><spanclass="sig-name descname"><spanclass="pre">request</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">query</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">params</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_videos.html#request"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_videos.request"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_videos.</span></span><spanclass="sig-name descname"><spanclass="pre">response</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">resp</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_videos.html#response"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_videos.response"title="Link to this definition">¶</a></dt>
<dd><p>Get response from google’s search request</p>
</dd></dl>
</section>
<sectionid="module-searx.engines.google_news">
<spanid="google-news"></span><spanid="google-news-engine"></span><h2><aclass="toc-backref"href="#id9"role="doc-backlink">Google News</a><aclass="headerlink"href="#module-searx.engines.google_news"title="Link to this heading">¶</a></h2>
<p>This is the implementation of the Google News engine.</p>
<p>Google News has a different region handling compared to Google WEB.</p>
<ulclass="simple">
<li><p>the <codeclass="docutils literal notranslate"><spanclass="pre">ceid</span></code> argument has to be set (<aclass="reference internal"href="#searx.engines.google_news.ceid_list"title="searx.engines.google_news.ceid_list"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">ceid_list</span></code></a>)</p></li>
<li><p>the <aclass="reference external"href="https://developers.google.com/custom-search/docs/xml_results#hlsp">hl</a> argument has to be set correctly (and different to Google WEB)</p></li>
<li><p>the <aclass="reference external"href="https://developers.google.com/custom-search/docs/xml_results#glsp">gl</a> argument is mandatory</p></li>
</ul>
<p>If one of this argument is not set correctly, the request is redirected to
<p>The google news API ignores some parameters from the common <aclass="reference internal"href="#google-api"><spanclass="std std-ref">Google API</span></a>:</p>
<ulclass="simple">
<li><p><aclass="reference external"href="https://developers.google.com/custom-search/docs/xml_results#numsp">num</a> : the number of search results is ignored / there is no paging all
results for a query term are in the first response.</p></li>
<li><p><aclass="reference external"href="https://developers.google.com/custom-search/docs/xml_results#safesp">save</a> : is ignored / Google-News results are always <em>SafeSearch</em></p></li>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_news.</span></span><spanclass="sig-name descname"><spanclass="pre">request</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">query</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">params</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_news.html#request"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_news.request"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_news.</span></span><spanclass="sig-name descname"><spanclass="pre">response</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">resp</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_news.html#response"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_news.response"title="Link to this definition">¶</a></dt>
<dd><p>Get response from google’s search request</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_news.</span></span><spanclass="sig-name descname"><spanclass="pre">ceid_list</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">['AE:ar',</span><spanclass="pre">'AR:es-419',</span><spanclass="pre">'AT:de',</span><spanclass="pre">'AU:en',</span><spanclass="pre">'BD:bn',</span><spanclass="pre">'BE:fr',</span><spanclass="pre">'BE:nl',</span><spanclass="pre">'BG:bg',</span><spanclass="pre">'BR:pt-419',</span><spanclass="pre">'BW:en',</span><spanclass="pre">'CA:en',</span><spanclass="pre">'CA:fr',</span><spanclass="pre">'CH:de',</span><spanclass="pre">'CH:fr',</span><spanclass="pre">'CL:es-419',</span><spanclass="pre">'CN:zh-Hans',</span><spanclass="pre">'CO:es-419',</span><spanclass="pre">'CU:es-419',</span><spanclass="pre">'CZ:cs',</span><spanclass="pre">'DE:de',</span><spanclass="pre">'EG:ar',</span><spanclass="pre">'ES:es',</span><spanclass="pre">'ET:en',</span><spanclass="pre">'FR:fr',</span><spanclass="pre">'GB:en',</span><spanclass="pre">'GH:en',</span><spanclass="pre">'GR:el',</span><spanclass="pre">'HK:zh-Hant',</span><spanclass="pre">'HU:hu',</span><spanclass="pre">'ID:en',</span><spanclass="pre">'ID:id',</span><spanclass="pre">'IE:en',</span><spanclass="pre">'IL:en',</span><spanclass="pre">'IL:he',</span><spanclass="pre">'IN:bn',</span><spanclass="pre">'IN:en',</span><spanclass="pre">'IN:hi',</span><spanclass="pre">'IN:ml',</span><spanclass="pre">'IN:mr',</span><spanclass="pre">'IN:ta',</span><spanclass="pre">'IN:te',</span><spanclass="pre">'IT:it',</span><spanclass="pre">'JP:ja',</span><spanclass="pre">'KE:en',</span><spanclass="pre">'KR:ko',</span><spanclass="pre">'LB:ar',</span><spanclass="pre">'LT:lt',</span><spanclass="pre">'LV:en',</span><spanclass="pre">'LV:lv',</span><spanclass="pre">'MA:fr',</span><spanclass="pre">'MX:es-419',</span><spanclass="pre">'MY:en',</span><spanclass="pre">'NA:en',</span><spanclass="pre">'NG:en',</span><spanclass="pre">'NL:nl',</span><spanclass="pre">'NO:no',</span><spanclass="pre">'NZ:en',</span><spanclass="pre">'PE:es-419',</span><spanclass="pre">'PH:en',</span><spanclass="pre">'PK:en',</span><spanclass="pre">'PL:pl',</span><spanclass="pre">'PT:pt-150',</span><spanclass="pre">'RO:ro',</span><spanclass="pre">'RS:sr',</span><spanclass="pre">'RU:ru',</span><spanclass="pre">'SA:ar',</span><spanclass="pre">'SE:sv',</span><spanclass="pre">'SG:en',</span><spanclass="pre">'SI:sl',</span><spanclass="pre">'SK:sk',</span><spanclass="pre">'SN:fr',</span><spanclass="pre">'TH:th',</span><spanclass="pre">'TR:tr',</span><spanclass="pre">'TW:zh-Hant',</span><spanclass="pre">'TZ:en',</span><spanclass="pre">'UA:ru',</span><spanclass="pre">'UA:uk',</span><spanclass="pre">'UG:en',</span><spanclass="pre">'US:en',</span><spanclass="pre">'US:es-419',</span><spanclass="pre">'VE:es-419',</span><spanclass="pre">'VN:vi',</span><spanclass="pre">'ZA:en',</span><spanclass="pre">'ZW:en']</span></em><aclass="headerlink"href="#searx.engines.google_news.ceid_list"title="Link to this definition">¶</a></dt>
<dd><p>List of region/language combinations supported by Google News. Values of the
<codeclass="docutils literal notranslate"><spanclass="pre">ceid</span></code> argument of the Google News REST API.</p>
</dd></dl>
</section>
<sectionid="module-searx.engines.google_scholar">
<spanid="google-scholar"></span><spanid="google-scholar-engine"></span><h2><aclass="toc-backref"href="#id10"role="doc-backlink">Google Scholar</a><aclass="headerlink"href="#module-searx.engines.google_scholar"title="Link to this heading">¶</a></h2>
<p>This is the implementation of the Google Scholar engine.</p>
<p>Compared to other Google services the Scholar engine has a simple GET REST-API
and there does not exists <cite>async</cite> API. Even though the API slightly vintage we
can make use of the <aclass="reference internal"href="#google-api"><spanclass="std std-ref">Google API</span></a> to assemble the arguments of the GET
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_scholar.</span></span><spanclass="sig-name descname"><spanclass="pre">time_range_args</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">params</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_scholar.html#time_range_args"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_scholar.time_range_args"title="Link to this definition">¶</a></dt>
<dd><p>Returns a dictionary with a time range arguments based on
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_scholar.</span></span><spanclass="sig-name descname"><spanclass="pre">detect_google_captcha</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">dom</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_scholar.html#detect_google_captcha"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_scholar.detect_google_captcha"title="Link to this definition">¶</a></dt>
<dd><p>In case of CAPTCHA Google Scholar open its own <em>not a Robot</em> dialog and is
not redirected to <codeclass="docutils literal notranslate"><spanclass="pre">sorry.google.com</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_scholar.</span></span><spanclass="sig-name descname"><spanclass="pre">request</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">query</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">params</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_scholar.html#request"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_scholar.request"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.google_scholar.</span></span><spanclass="sig-name descname"><spanclass="pre">response</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">resp</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../../_modules/searx/engines/google_scholar.html#response"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.google_scholar.response"title="Link to this definition">¶</a></dt>