Algolia logo blueprint

Looking for our logo?

We got you covered!

Download logo packMore algolia assets
Log inFree trial

Blazing fast, reliable and relevant site search in no time

Hosted, scalable, easy to implement and maintain.

Start building for free
hero image computer mockup
Indexing script sample
Tweak relevance image

Tweak relevance using our dashboard or API clients

We also expose relevance settings to non-technical users, and enable them to co-own visual merchandising tools and relevance settings.

Start building for free
AI cumberstone parts image

Let AI do the cumbersome parts

Dynamic Synonym Suggestions to identify synonyms based on user queries, Dynamic Re-ranking to boost or demote results, Algolia Answers to semantically search your index data.

Trusted to deliver 100+ billion search queries a month

Lacoste
Birchbox
Weight Watcher
Under Armour
Mercari

It’s this simple to get started.

  • Index data with an API client

  • Configure Relevance

  • Build a search UI

BackendFrontend
my_index = client.init_index('contacts')
my_index.save_object :firstname => "Jimmie",
:lastname => "Barninger",
:company => "California Paint"
class Contact < ActiveRecord::Base
include AlgoliaSearch
algoliasearch do
attribute :firstname, :lastname, :company
end
end
myIndex = apiClient.init_index("contacts")
myIndex.save_object({
"firstname": "Jimmie",
"lastname": "Barninger",
"company": "California Paint"
})
from django.contrib.algoliasearch import AlgoliaIndex
class YourModelIndex(AlgoliaIndex):
fields = ('firstname', 'lastname', 'company')
$myIndex = $apiClient->initIndex("contacts");
$myIndex->saveObject([
"firstname" => "Jimmie",
"lastname" => "Barninger",
"company" => "California Paint",
]);
/**
* @ORM\Entity
*/
class Contact {
/**
* @var string
*
* @ORM\Column(name="firstname", type="string")
* @Group({searchable})
*/
protected $firstname;
/**
* @var string
*
* @ORM\Column(name="lastname", type="string")
* @Group({searchable})
*/
protected $lastname;
/**
* @var string
*
* @ORM\Column(name="company", type="string")
* @Group({searchable})
*/
protected $company;
}
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
class Contact extends Model {
use Searchable;
}
const myIndex = apiClient
.initIndex('contacts');
myIndex.saveObject({
firstname: 'Jimmie',
lastname: 'Barninger',
company: 'California Paint',
})
Index<Contact> index = client
.initIndex("contacts", Contact.class);
index.saveObject(
new Contact()
.setFirstname("Jimmie")
.setLastname("Barninger")
.setCompany("California Paint")
);
import algolia.AlgoliaDsl._
import scala.concurrent.ExecutionContext.Implicits.global
case class Contact(
firstname: String,
lastname: String,
company: String
)
val indexing: Future[Indexing] = client.execute {
index into "contacts" `object` Contact(
"Jimmie",
"Barninger",
"California Paint"
)
}
object := map[string]string{
"firstname": "Jimmie",
"lastname": "Barninger",
"company": "California Paint"
}
res, err := index.SaveObject(object)
SearchIndex index = client.InitIndex("contacts");
var contact = new Contact {
FirstName = "Jimmie",
LastName = "Barninger",
Company = "California Paint"
};
index.SaveObject(contact);
val index = client.initIndex(IndexName("contacts"))
val json = json {
"firstname" to "Jimmie"
"lastname" to "Barninger"
"company" to "California Paint" }
index.saveObject(json)
let myIndex = apiClient.getIndex("contacts")
let n = [
"firstname": "Jimmie",
"lastname": "Barninger",
"company": "California Paint"
]
myIndex.saveObject(n)
Index myIndex = apiClient.initIndex("contacts");
JSONObject jsonObject = new JSONObject()
.put("firstname", "Jimmie")
.put("lastname", "Barninger")
.put("company", "California Paint");
myIndex.addObjectAsync(jsonObject, null);
<div id="searchbox"></div>
<div id="refinement"></div>
<div id="hits"></div>
<script>
const {
searchBox,
hits
} = instantsearch.widgets;
search.addWidgets([
searchBox({
container: "#searchbox"
}),
hits({
container: "#hits"
}),
refinementList({
container: "#refinement",
attribute: "company"
}),
]);
search.start();
</script>
const App = () => (
<InstantSearch>
<SearchBox />
<Hits />
<Pagination />
<RefinementList
attribute="company"
/>
</InstantSearch>
);
<RelativeLayout
xmlns:algolia="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.algolia.instantsearch.ui.views.SearchBox
android:id="@+id/search_box"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<com.algolia.instantsearch.ui.views.Stats
android:id="@+id/search_box"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<com.algolia.instantsearch.ui.views.Hits
android:layout_width="match_parent"
android:layout_height="wrap_content"
algolia:itemLayout="@layout/hits_item"/>
</RelativeLayout>
<ais-instant-search>
<ais-search-box />
<ais-refinement-list
attribute="company"
/>
<ais-hits />
<ais-pagination />
</ais-instant-search>
<ais-instantsearch>
<ais-search-box></ais-search-box>
<ais-refinement-list
[attribute]="company"
></ais-refinement-list
<ais-hits></ais-hits>
</ais-instantsearch>
import InstantSearch
override func viewDidLoad() {
super.viewDidLoad()
let searchBar = SearchBarWidget(frame: ...)
let statsWidget = StatsLabelWidget(frame: ...)
self.view.addSubview(searchBar)
self.view.addSubview(statsWidget)
InstantSearch.shared.registerAllWidgets(in: self.view)}
Start buildingRead docs

Always working hard on the developer experience

Language-centered documentation, active community support.

@algolia's DocSearch is such an awesome service. Easy integration with Docusaurus, incredible search experience. Thank you for enabling search on docs.quirrel.dev

Simon Knott

@skn0tt

Haven't tried a service that's so easy to get started with in a while @algolia

Clément Pang, Principal Engineer @VMware

@panghy

Working on client e-commerce delivery project now using the following #javascript @reactjs @Ionicframework @firebase @algolia @storybookjs @stripe - there is a lot of great #tech out there helping us to build iOS/Android & Website from same codebase is awesome.

Aaron Saunders, CEO, Clearly Innovative

@aaronksaunders

Free up to 10000 search requests/monthPay-as-you-go options

Try us out