Integrate SearchJet with your Laravel application in minutes using Laravel's built-in HTTP client. No package to install. Works with Eloquent observers and queues, built for developers who demand elegance and performance.
Familiar Laravel syntax you already know and love
# .env
SEARCHJET_SEARCH_KEY=your_search_key
SEARCHJET_PRIVATE_KEY=your_private_key # server-side only, never in browser code
// config/services.php
'searchjet' => [
'key' => env('SEARCHJET_SEARCH_KEY'),
'private_key' => env('SEARCHJET_PRIVATE_KEY'),
],
// Search with Laravel's built-in HTTP client (no package needed).
// The API key decides which index is searched.
use Illuminate\Support\Facades\Http;
$hits = Http::withToken(config('services.searchjet.key'))
->get('https://app.searchjetengine.com/api/v1/search', [
'q' => 'Laravel',
'limit' => 15,
'offset' => 0,
])
->json('results'); // array of hits: id, title, content, url, excerpt, ...
// app/Observers/PostObserver.php (your own code, not a package)
// Register it in AppServiceProvider::boot(): Post::observe(PostObserver::class);
class PostObserver
{
public function saved(Post $post): void
{
// For busy apps, move this call into a queued job.
Http::withToken(config('services.searchjet.private_key'))
->post('https://app.searchjetengine.com/api/v1/index/bulk', [
'documents' => [[
'id' => (string) $post->id,
'title' => $post->title,
'content' => strip_tags($post->content),
'url' => route('posts.show', $post),
'date' => $post->published_at?->toIso8601String(),
]],
'mode' => 'upsert',
]);
}
}Built on the Laravel features you already use
Map any Eloquent model to a search document in a few lines of your own code. No package or trait required.
Write a short Artisan command that chunks your models and sends them to the bulk indexing endpoint for the initial import.
Send index updates from a queued job so saving a model never waits on the search API.
Keys live in .env and config/services.php, following normal Laravel conventions.
Keep the index in sync with a model observer that pushes changes whenever a model is saved.
It is a plain REST API. Laravel's Http facade, Guzzle, or any other HTTP client works.
From installation to production in under 10 minutes
Copy your search key and private key from the SearchJet dashboard. No Composer package to install.
SEARCHJET_PRIVATE_KEY=your_private_keyAdd both keys to .env and reference them in config/services.php
'searchjet' => ['key' => env('SEARCHJET_SEARCH_KEY')]Add a model observer that POSTs saved models to /index/bulk with the private key
Post::observe(PostObserver::class);Call GET /search with Laravel's HTTP client and read the results array
Http::withToken($key)->get($url, ['q' => $q])From small applications to enterprise platforms
Index a tenant_id field, mark it filterable, and filter every search by tenant.
Search articles, pages, and media with full-text search and relevance scoring.
Power product search with filtering, faceting, and merchandising features.
Build searchable documentation and help centers with instant results.
A plain REST API that fits naturally into Laravel's HTTP client, observers and queues.
Add two keys to .env and experience enterprise-grade search with Laravel's elegance.
Check out our comprehensive documentation or reach out to our support team.