JSON Engine¶
The JSON engine is a generic engine with which it is possible to configure engines in the settings.
Configuration¶
Request:
Paging:
Time Range:
Safe-Search:
Response:
JSON query:
Example¶
Here is a simple example of a JSON engine configure in the engines: section, further read Engine Overview.
- name : mdn
  engine : json_engine
  paging : True
  search_url : https://developer.mozilla.org/api/v1/search?q={query}&page={pageno}
  results_query : documents
  url_query : mdn_url
  url_prefix : https://developer.mozilla.org
  title_query : title
  content_query : summary
Implementations¶
- searx.engines.json_engine.search_url = None¶
- Search URL of the engine. Example: - https://example.org/?search={query}&page={pageno}{time_range}{safe_search}- Replacements are: - {query}:
- Search terms from user. 
- {pageno}:
- Page number if engine supports paging - paging
- {lang}:
- ISO 639-1 language code (en, de, fr ..) 
- {time_range}:
- URL parameterif engine- supports time range. The value for the parameter is taken from- time_range_map.
- {safe_search}:
- Safe-search - URL parameterif engine- supports safe-search. The- {safe_search}replacement is taken from the- safes_search_map. Filter results:- 0: none, 1: moderate, 2:strict - If not supported, the URL parameter is an empty string. 
 
- searx.engines.json_engine.lang_all = 'en'¶
- Replacement - {lang}in- search_urlif language- allis selected.
- searx.engines.json_engine.no_result_for_http_status = []¶
- Return empty result for these HTTP status codes instead of throwing an error. - no_result_for_http_status: [] 
- searx.engines.json_engine.soft_max_redirects = 0¶
- Maximum redirects, soft limit. Record an error but don’t stop the engine 
- searx.engines.json_engine.method = 'GET'¶
- Some engines might require to do POST requests for search. 
- searx.engines.json_engine.request_body = ''¶
- The body of the request. This can only be used if different - methodis set, e.g.- POST. For formatting see the documentation of- search_url.- Note: Curly brackets which aren’t encapsulating a replacement placeholder must be escaped by doubling each - {and- }.- request_body: >- {{ "search": "{query}", "page": {pageno}, "extra": {{ "time_range": {time_range}, "rating": "{safe_search}" }} }} 
- searx.engines.json_engine.cookies = {}¶
- Some engines might offer different result based on cookies. Possible use-case: To set safesearch cookie. 
- searx.engines.json_engine.headers = {}¶
- Some engines might offer different result based on cookies or headers. Possible use-case: To set safesearch cookie or header to moderate. 
- searx.engines.json_engine.paging = False¶
- Engine supports paging [True or False]. 
- searx.engines.json_engine.page_size = 1¶
- Number of results on each page. Only needed if the site requires not a page number, but an offset. 
- searx.engines.json_engine.first_page_num = 1¶
- Number of the first page (usually 0 or 1). 
- searx.engines.json_engine.results_query = ''¶
- JSON query for the list of result items. - The query string is a slash / separated path of JSON key names. Array entries can be specified using the index or can be omitted entirely, in which case each entry is considered - most implementations will default to the first entry in this case. 
- searx.engines.json_engine.url_query = None¶
- JSON query of result’s - url. For the query string documentation see- results_query
- searx.engines.json_engine.url_prefix = ''¶
- String to prepend to the result’s - url.
- searx.engines.json_engine.title_query = None¶
- JSON query of result’s - title. For the query string documentation see- results_query
- searx.engines.json_engine.content_query = None¶
- JSON query of result’s - content. For the query string documentation see- results_query
- searx.engines.json_engine.thumbnail_query = False¶
- JSON query of result’s - thumbnail. For the query string documentation see- results_query
- searx.engines.json_engine.thumbnail_prefix = ''¶
- String to prepend to the result’s - thumbnail.
- searx.engines.json_engine.suggestion_query = ''¶
- JSON query of result’s - suggestion. For the query string documentation see- results_query
- searx.engines.json_engine.title_html_to_text = False¶
- Extract text from a HTML title string 
- searx.engines.json_engine.content_html_to_text = False¶
- Extract text from a HTML content string 
- searx.engines.json_engine.time_range_support = False¶
- Engine supports search time range. 
- searx.engines.json_engine.time_range_url = '&hours={time_range_val}'¶
- Time range URL parameter in the in - search_url. If no time range is requested by the user, the URL parameter is an empty string. The- {time_range_val}replacement is taken from the- time_range_map.- time_range_url : '&days={time_range_val}' 
- searx.engines.json_engine.time_range_map = {'day': 24, 'month': 720, 'week': 168, 'year': 8760}¶
- Maps time range value from user to - {time_range_val}in- time_range_url.- time_range_map: day: 1 week: 7 month: 30 year: 365 
- searx.engines.json_engine.safe_search_support = False¶
- Engine supports safe-search. 
- searx.engines.json_engine.safe_search_map = {0: '&filter=none', 1: '&filter=moderate', 2: '&filter=strict'}¶
- Maps safe-search value to - {safe_search}in- search_url.- safesearch: true safes_search_map: 0: '&filter=none' 1: '&filter=moderate' 2: '&filter=strict' 
- searx.engines.json_engine.request(query, params)[source]¶
- Build request parameters (see Making a Request). 
- searx.engines.json_engine.response(resp)[source]¶
- Scrap results from the response (see Result Types).