Skip to main content
Perplexica uses SearxNG as its search engine to retrieve web results while maintaining privacy. SearxNG is a privacy-respecting metasearch engine that aggregates results from multiple search engines.

What is SearxNG?

SearxNG is a free, privacy-focused metasearch engine that:
  • Aggregates results from multiple search engines (Google, Bing, DuckDuckGo, etc.)
  • Does not track or profile users
  • Provides JSON API for programmatic access
  • Supports specialized search engines including Wolfram Alpha

Default configuration

If you’re using the standard Perplexica Docker image, SearxNG is included and pre-configured. No additional setup is required.
When you run Perplexica with Docker:
docker run -d -p 3000:3000 -v perplexica-data:/home/perplexica/data \
  --name perplexica itzcrazykns1337/perplexica:latest
The image includes:
  • SearxNG running on port 8080 (internal)
  • Pre-configured settings with JSON format enabled
  • Wolfram Alpha search engine enabled
  • Automatic startup with Perplexica

Using your own SearxNG instance

If you already have a SearxNG instance running, use the slim Perplexica image:
docker run -d -p 3000:3000 \
  -e SEARXNG_API_URL=http://your-searxng-url:8080 \
  -v perplexica-data:/home/perplexica/data \
  --name perplexica \
  itzcrazykns1337/perplexica:slim-latest
SEARXNG_API_URL
string
required
The URL of your SearxNG instanceExample: http://localhost:8080

Requirements for external SearxNG

Your SearxNG instance must be properly configured for Perplexica to work correctly.
Ensure your SearxNG instance has:
1

JSON format enabled

Perplexica requires JSON API access. In your settings.yml:
search:
  formats:
    - html
    - json
2

Wolfram Alpha enabled

Enable Wolfram Alpha for computational queries:
engines:
  - name: wolframalpha
    disabled: false
3

Network accessibility

Ensure SearxNG is accessible from Perplexica:
  • If both run in Docker, use Docker networking
  • If Perplexica is in Docker and SearxNG is on host:
    • Windows/Mac: http://host.docker.internal:8080
    • Linux: http://<host-ip>:8080

SearxNG configuration

The bundled SearxNG instance uses the following configuration:

settings.yml

use_default_settings: true

general:
  instance_name: 'searxng'

search:
  autocomplete: 'google'
  formats:
    - html
    - json

server:
  secret_key: '<generated-secret>'

engines:
  - name: wolframalpha
    disabled: false
  • use_default_settings: Inherits SearxNG’s default configuration
  • autocomplete: Uses Google for search suggestions
  • formats: Enables both HTML and JSON output
  • wolframalpha: Required for computational queries and calculations

Advanced configuration

If you’re running your own SearxNG instance, you can customize:
search.autocomplete
string
Autocomplete providerOptions: google, duckduckgo, wikipedia, dbpedia, qwantDefault: google
search.formats
array
Supported output formatsRequired: Must include json for PerplexicaDefault: ["html", "json"]
engines
array
Enabled search enginesRequired: wolframalpha must be enabledYou can add more engines from the SearxNG defaults

Setting up standalone SearxNG

To run SearxNG separately from Perplexica:

Using Docker

1

Create settings.yml

Create a SearxNG configuration file:
use_default_settings: true

general:
  instance_name: 'searxng'

search:
  autocomplete: 'google'
  formats:
    - html
    - json

server:
  secret_key: '<generate-a-secret-key>'
  bind_address: '0.0.0.0'
  port: 8080

engines:
  - name: wolframalpha
    disabled: false
2

Run SearxNG container

docker run -d \
  -p 8080:8080 \
  -v $(pwd)/settings.yml:/etc/searxng/settings.yml \
  --name searxng \
  searxng/searxng:latest
3

Verify JSON format

Test that JSON API is working:
curl "http://localhost:8080/search?q=test&format=json"
You should receive JSON-formatted search results.
4

Configure Perplexica

Set the SearxNG URL in Perplexica settings or via environment variable:
SEARXNG_API_URL=http://localhost:8080

Manual installation

For manual installation, refer to the official SearxNG documentation.
Basic steps:
  1. Install SearxNG following the official guide
  2. Configure settings.yml with JSON format and Wolfram Alpha enabled
  3. Start SearxNG service
  4. Configure Perplexica to use your SearxNG URL

Configuring in Perplexica

You can set the SearxNG URL through:

Settings UI

  1. Navigate to Settings in Perplexica
  2. Find the “Search” section
  3. Enter your SearxNG URL in the “SearXNG URL” field
  4. Save changes

Environment variable

Set SEARXNG_API_URL before starting Perplexica:
export SEARXNG_API_URL=http://localhost:8080
Or with Docker:
docker run -d -p 3000:3000 \
  -e SEARXNG_API_URL=http://localhost:8080 \
  -v perplexica-data:/home/perplexica/data \
  --name perplexica \
  itzcrazykns1337/perplexica:slim-latest

Troubleshooting

SearxNG not responding

Test the SearxNG endpoint:
curl http://localhost:8080
You should see the SearxNG web interface HTML.
Ensure JSON format is enabled:
curl "http://localhost:8080/search?q=test&format=json"
If you get an error about unsupported format, check your settings.yml.
From inside the Perplexica container:
docker exec -it perplexica curl http://localhost:8080
If this fails, verify the URL configuration and Docker networking.

Wolfram Alpha not working

Wolfram Alpha is required for computational queries and calculations. Without it, some search features may not work correctly.
Verify Wolfram Alpha is enabled in settings.yml:
engines:
  - name: wolframalpha
    disabled: false

Connection refused errors

If Perplexica can’t reach SearxNG:
  • Both in Docker: Use Docker network or container names
  • SearxNG on host: Use host.docker.internal (Windows/Mac) or host IP (Linux)
  • Different machines: Ensure firewall allows connections

Performance tuning

For better performance with your own SearxNG instance:
  • Limit the number of search engines to reduce latency
  • Enable caching in SearxNG settings
  • Use a local Redis instance for SearxNG caching
  • Configure rate limiting to prevent overload

Next steps

Build docs developers (and LLMs) love