Provider Setup

Each live provider follows the same shape: store the API key in .env, create an active SearchProviderConfig row, and set a priority.

Driver Image search Site filter Notes
fake yes yes Deterministic, no network.
brave yes yes Uses Brave Search API.
tavily yes yes Normalizes legacy and current images shapes.
exa yes yes Flattens extras.imageLinks.
firecrawl yes yes Synchronous search, use longer timeout.
websearchapi no yes Web-only organic results.
duckduckgo no yes HTML lite parser, no key.
searchapi yes yes Google and Google Images engines.
youcom no yes Web-only endpoint with thumbnails.
Example: Brave row
\Padosoft\LaravelAiSearchProviders\Models\SearchProviderConfig::query()->create([
    'code' => 'brave',
    'name' => 'Brave Search',
    'driver' => 'brave',
    'base_url' => 'https://api.search.brave.com',
    'api_key_encrypted' => env('BRAVE_SEARCH_API_KEY'),
    'priority' => 10,
    'timeout_seconds' => 15,
    'is_active' => true,
]);
Example: Firecrawl row
\Padosoft\LaravelAiSearchProviders\Models\SearchProviderConfig::query()->create([
    'code' => 'firecrawl',
    'name' => 'Firecrawl',
    'driver' => 'firecrawl',
    'base_url' => 'https://api.firecrawl.dev',
    'api_key_encrypted' => env('FIRECRAWL_API_KEY'),
    'priority' => 40,
    'timeout_seconds' => 60,
    'rate_limit_per_minute' => 30,
    'is_active' => true,
]);