Plugins

Plugins can extend/replace functionality of various components inside searx.

example_plugin.py

name = 'Example plugin'
description = 'This plugin extends the suggestions with the word "example"'
default_on = False  # disable by default

js_dependencies = tuple()  # optional, list of static js files
css_dependencies = tuple()  # optional, list of static css files


# attach callback to the post search hook
#  request: flask request object
#  ctx: the whole local context of the post search hook
def post_search(request, ctx):
    ctx['search'].suggestions.add('example')
    return True

Currently implemented plugin entry points (a.k.a hooks)

  • Pre search hook (pre_search)
  • Post search hook (post_search)
  • Result hook (on_result) (is called if a new result is added (see https_rewrite plugin))

Feel free to add more hooks to the code if it is required by a plugin.

TODO

  • Better documentation
  • More hooks
  • search hook (is called while searx is requesting results (for example: things like math-solver), the different hooks are running parallel)