Algolia logo blueprint

Looking for our logo?

We got you covered!

Download logo pack More algolia assets

Redeem your gift

Make every search |

Request a demo

Increaseorder value

Birchbox logo

Power content discoveryfor 100 million viewers

Twitch logo

Better relevanceand higher sales

Lacoste logo

Global help deskdeployed in days

Stripe logo

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 and discovery experiences that delight and convert.

Trusted by8,000customers

Serving70 billionqueries / month

Want to see what Algolia can do for you?

Assess your search experience in less than 5 minutes and get a personalized report with our Grader.

Evaluate your site
Grader image

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 and discovery experience. Algolia’s flexible APIs and UI toolkits provides teams with the resources necessary to build the experience best suited for your needs.

Birchbox logo
Weight Watchers logo
Stripe logo
Intuit logo
Coursera logo
Bringmeister logo
Lacoste logo
Sense logo
Ouest France logo
LeKiosk logo
Dior logo
Slack logo

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 = Algolia::Index.new('contacts')
my_index.add_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.add_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->addObject([
"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; // Simply add a trait
}
const myIndex = apiClient.initIndex('contacts');
myIndex
.addObject({
firstname: 'Jimmie',
lastname: 'Barninger',
company: 'California Paint',
})
.then(content => console.log(content))
.catch(err => console.error(err));
Index<Contact> index = client
.initIndex("contacts", Contact.class);
index.addObject(
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.addObject(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="hits"></div>
<script>
const {
searchBox,
hits
} = instantsearch.widgets;
search.addWidget(
searchBox({ container: "#searchbox" })
);
search.addWidget(
hits({ container: "#hits" })
);
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-hits>
<template slot="item" scope="{ item }">
<h2>{{ item.company }}</h2>
<p>{{ item.firstname }} {{ item.lastname }}</p>
</template>
</ais-hits>
<ais-refinement-list attribute="company" />
<ais-pagination />
</ais-instant-search>
<ais-instantsearch>
<ais-search-box></ais-search-box>
<ais-hits>
<ng-template let-hits="hits">
<div *ngFor="let hit of hits">
<h2>{{ hit.company }}</h2>
<p>{{ hit.firstname }} {{ hit.lastname }}</p>
</div>
</ng-template>
</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)
// Add all widgets in view to InstantSearch
InstantSearch.shared.registerAllWidgets(in: self.view)
}
Start buildingRead docs

Secure, reliable & scalable

Secure

Soc 3 & GDPR approved

Algolia is committed to delivering a highly secure and compliant environment for our customers.

Reliable

SLA 99.999%

We stand behind our service with an industry leading 99.999% SLA available on select plans with a 1000x rebate policy.

Scalable

Global scale

70+ data centers on 6 continents to ensure a consistent experience for every user.