See how our customers are taking their Search and Discovery experience to the next level.

Get Inspired
Algolia logo blueprint

Looking for our logo?

We got you covered!

Download logo packMore algolia assets
Log inFree trial

The flexible AI-powered
Search & Discovery
platform

Create cutting-edge UX for web,
apps & ecommerce

Start building for freeRequest a demo
Algolia mockup

Developers

5X faster
development

Ecommerce

+30%
revenue

Media

+10% page
views & subs

How Algolia AI fuels conversions

Deliver what your customers want every time

Algolia’s search-as-a-service and full suite of APIs allow teams to easily develop tailored, fast Search & Discovery experiences that delight and convert.

Trusted by10K+customers

Serving100B+queries / month

Grade your search

Grade your current search experience & get a free personalized report with opportunities for improvement.

Experiences that matter to your business

Lacoste illustration
Twitch illustration

Media

Unique experiences to drive engagement

Users are looking to consume engaging content. Algolia empowers teams to surface the freshest and most relevant content, and ultimately drive user satisfaction.

Zendesk illustration

Apps

Powerful APIs to fit your use case

Every product deserves a bespoke Search & Discovery experience. Algolia’s flexible APIs and UI toolkits provides teams with the resources necessary to build the experience best suited for your needs.

Blissim ex-Birchbox
Weight Watcher
Stripe
Intuit
Coursera
Bringmeister
Lacoste
Amplitude
Ouest France
Cafeyn
Dior
Slack

Algolia obsesses over developer experience

Our mission is to give development teams the building blocks to create a fast, relevant search experience. Extensive documentation & guides, an active community, 24/7 support make it a pleasure to work with Algolia.

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