Search providers#

Searpa 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 either or both 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

Media providers#

Each media tab blends Brave with a second provider. The supplementary provider is also the sole source for the Mojeek/Marginalia engines, 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 / TVTMDB_API_KEYTMDBFree
PlacesTRIPADVISOR_API_KEYTripAdvisor Content APIFree
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 they stay within free tiers comfortably.

Provider status page#

A built-in /status page shows whether each configured provider is up. 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.

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)

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.