A fast, relevant API to power your search

An easy way to build all kinds of search experiences

Start free

The easiest way to build all kinds of search experiences

High performance & unique architecture

Synchronize your data across the world with our Distributed Search Network to ensure a 99.99% availability.

Full control search

Build a fully customized search experience for any platform. Power it by your business logic and metrics.

Passionate support

Our devs do the support. Consider us a part of your team!

One API, many possibilities

Instant Results Page

As-you-type experience for your users, tailored to their inputs. Take advantage of faceted search that allows users to drill into search results by any value of any attribute.

Autocomplete

Search within milliseconds across all the sections of your app and display your own combination of results in a rich autocomplete menu.

Mobile Search

What makes Algolia great on a desktop works even better on mobile: handling typos on the go, making speed even more critical because of network latency, and finding the best results at the very top of the list on a small screen.
We have all the API clients you need to help you with your mobile implementation: Objective-C, Swift, Android and C#.

Quickstart

Push your data
my_index = Algolia::Index.new('contacts')
my_index.add_object :firstname => "Jimmie",
:lastname => "Barninger",
:company => "California Paint"
Search!
p my_index.search('jimmie b')
Push your data
class Contact < ActiveRecord::Base
include AlgoliaSearch
algoliasearch do
attribute :firstname, :lastname, :company
end
end
Search!
p Contact.search("jimmie b")
Push your data
myIndex = apiClient.init_index("contacts")
myIndex.add_object({"firstname": "Jimmie",
"lastname": "Barninger",
"company": "California Paint"})
Search!
print myIndex.search("jimmie b")
Push your data
var myIndex = apiClient.initIndex('contacts');
myIndex.addObject({
firstname: 'Jimmie',
lastname: 'Barninger',
company: 'California Paint'
}, function(err, content) {
if (err) {
console.error(err);
return;
}
console.log(content);
});
Search!
myIndex.search('jimmie b', function(err, content) {
if (err) {
console.error(err);
return;
}
console.log(content);
});
Push your data
$myIndex = $apiClient->initIndex("contacts");
$myIndex->addObject(array("firstname" => "Jimmie",
"lastname" => "Barninger",
"company" => "California Paint"))
Search!
var_dump($myIndex->search('jimmie b'));
Push your data
/**
*
* @ORM\Entity
*
* @Algolia\Index()
*
*/
class Contact
{
/**
* @var string
*
* @ORM\Column(name="firstname", type="string")
* @Algolia\Attribute
*/
protected $firstname;
}
Search!
// search by query string and numeric range
$this->get('algolia.indexer')->rawSearch(
'MyCoolBundle:MyModel',
'jimmie b'
);
Push your data
// Push your records using a backend solution like Node.js
// You can also use your dashboard
Search!
myIndex.search('jimmie b', function(err, content) {
if (err) {
console.error(err);
return;
}
console.log(content);
});
Push your data
Index myIndex = apiClient.initIndex("contacts");
myIndex.addObject(new JSONObject()
.put("firstname", "Jimmie")
.put("lastname", "Barninger")
.put("company", "California Paint"));
Search!
System.out.println(myIndex.search(new Query("jimmie b")));
Push your data
object := make(map[string]interface{})
object["firstname"] = "Jimmie"
object["lastname"] = "Barninger"
res, err = index.AddObject(object)
Search!
res, err := index.Search("jimmie b", params)
Push your data
Index myIndex = apiClient.InitIndex("contacts");
myIndex.AddObject(JObject.Parse(
@"{""firstname"":""Jimmie"",
""lastname"":""Barninger"",
""company"":""California Paint""}"));
Search!
JObject res = myIndex.Search(new Query("jimmie b"));
System.Diagnostics.Debug.WriteLine(res["hits"]);
Push your data
ASRemoteIndex *myIndex = [apiClient getIndex:@"contacts"];
NSDictionary *n = @{
@"firstname": @"Jimmie",
@"lastname": @"Barninger",
@"company": @"California Paint"
};
[myIndex addObject:n];
Search!
[myIndex search:[ASQuery queryWithFullTextQuery:@"jimmie b"]
success:^(ASRemoteIndex *index, ASQuery *query, NSDictionary *result) {
NSLog(result)
} failure:nil];
Push your data
let myIndex = apiClient.getIndex("contacts")
let n = [
"firstname": "Jimmie",
"lastname": "Barninger",
"company": "California Paint"
]
myIndex.addObject(n)
Search!
myIndex.search(Query(query: "jimmie b"), block: { (content, error) -> Void in
if (error == nil) {
println(content)
}
})
Push your data
Index myIndex = apiClient.initIndex("contacts");
myIndex.addObjectASync("{ \"firstname\": \"Jimmie\", " +
"  \"lastname\":  \"Barninger\", " +
"  \"company\":   \"California Paint\"}", this);
Search!
myIndex.searchASync(new Query("jimmie b"), this);

All the features you need, out of the box

Built for developers
Unparalleled speed
Typo tolerance
Seamless indexing
Intuitive ranking
Smart highlighting
Instant faceting
Comprehensive analytics
99.99% SLA
First-class security
Geo-search capabilities
Shopify
Shopify

“Incredible how fast
and seamless Algolia's search is.
This is so exciting, I can't sleep.“

Ellen LiProduct Designer
Digital Ocean
Digital Ocean

“We replaced our Elastic Search cluster with Algolia, saved engineering time, got better and much faster real time results, and now can easily track all our search queries. Awesome!“

Moisey UretskyCo-founder
Product Hunt
Product Hunt

“It’s fan-freakin-tastic.
Easy to integrate and super fast.“

Ryan HooverCo-founder

Trusted by 3000+ companies