Search providers#

Seurch blends results from several independent providers. Which tabs and cards appear depends on which keys you set. A provider with no key is hidden, the affected tab or card simply doesn’t show, rather than displaying an error.

All upstream calls happen server-side; keys are never exposed to the browser.

This page is the overview of which key enables what. For step-by-step signup instructions for each provider, see Getting API keys.

The baseline: Brave#

VariableGet a key
BRAVE_API_KEYbrave.com/search/api (free tier available)
BRAVE_SUGGEST_API_KEYSame place, a separate subscription for autocomplete

Brave is the recommended starting point: a single key powers the Web, Images, News and Videos tabs. Without any web engine configured, those tabs show a configuration notice instead of results.

Extra web engines#

Add any of these to blend more independent indexes into the Web tab (merged with Reciprocal Rank Fusion, see Web search):

VariableProviderGet a key
MOJEEK_API_KEYMojeek (independent UK index)mojeek.com/services/search/api
MARGINALIA_API_KEYMarginalia (small-web index)No signup, the literal value public is a free shared key (rate-limited to ~1 request / 5 s). For a higher quota, request one at marginalia-search.com
STAAN_API_KEYStaan (European index, by Qwant and Ecosia)staan.ai — 1,000 free requests a month, then from EUR 1 per 1,000. Caps out after the first four pages of a search

Media providers#

Each media tab blends Brave with a second provider. The supplementary provider is also the sole source for the web-only engines (Mojeek, Marginalia and Staan), which have no media search of their own.

TabVariableProviderKey
ImagesPIXABAY_API_KEYPixabayFree
NewsWORLDNEWS_API_KEYWorld News APIFree tier
Videos(none)Sepia / PeerTubeNo key required

Maps needs no key at all, it uses OpenStreetMap’s Nominatim.

Knowledge-card providers#

The web tab can show up to three side knowledge cards:

CardVariableProviderKey
Wikipedia(none)Wikipedia / WikidataNo key required
Film / TVTHETVDB_API_KEY (+ THETVDB_PIN)TheTVDBCommercial licence, or a user-supported key plus the subscriber PIN
PlacesTRIPADVISOR_API_KEYTripAdvisor Terra Partner APIPartner key, sent as X-API-Key
Q&ASTACKEXCHANGE_API_KEYStack ExchangeOptional, raises the shared anonymous quota

The paid card APIs are only called when a query actually looks like a film or a place, and each lookup is cached for an hour, so call volume stays low and modest against a TheTVDB licence or a TripAdvisor plan.

The places card runs on TripAdvisor’s Terra Partner API, which replaced the retired Content API — keys for the old one now return 403. It is built from the catalog endpoints, which answer without a partner allowlist, so the card shows a name, area, address, rating, review count and description, but no photo, cuisine, price level or ranking; those need a per-location licence.

Provider status page#

A built-in /status page shows whether each configured provider is up, linked from the site footer and from Settings → Provider status. It never spends paid quota to find out:

  • Providers with a free health endpoint (Nominatim, LibreTranslate, Open-Meteo, Frankfurter) are probed on a schedule.
  • Every other provider’s status is inferred from whether real searches recently succeeded.

Keep the status fresh by running check_provider_health periodically, see Maintenance.

Set STATUS_PAGE_ENABLED=false to keep that information to yourself: the page 404s and its links disappear. Health is still recorded, and /status/health still answers, so an external uptime monitor keeps working, see Monitoring.

Network allowlist#

If your server’s outbound traffic is restricted, the two instant-answer network calls need these hosts allowed:

  • api.frankfurter.dev (currency rates)
  • geocoding-api.open-meteo.com and api.open-meteo.com (weather)

The knowledge cards reach api4.thetvdb.com, artworks.thetvdb.com, terra.tripadvisor.com and www.wikidata.org.

Everything else is reached over standard HTTPS to each provider’s API host. The local instant answers (maths, units, hashes, …) need no network at all.