Arrow right icon Arrow up icon Activity icon Analytics icon Phone icon Caret down icon Caret left icon Caret right icon Caret up icon Checkmark Servers cluster icon Cross icon Devices icon Discover symbol icon Find symbol icon Inspire symbol icon Iphone icon Lock icon Open lock icon Lock icon Magnifying glass icon Mac icon No network icon Multi cluster icon Menu icon Minus icon Partners icon Personalization icon Plus icon Question icon Search API icon Server icon Shield icon Triangle-right icon Triangle-left icon Triangle-right icon Vault icon

Algolia Saas search and discovery

Secure & Reliable
Search that Scales
with Your Business

Increase user retention with fast and relevant search,
powered by Algolia’s Search API.

Sign up Or talk to one of our Product specialist

The World's leading SaaS companies trust Algolia's Search APIs

Flexport logo

“Algolia has become so mission critical for navigating our application that users instantly notice whenever we ship a new enhancement to our Algolia implementation.”

Desmond Brand,
Director of Engineering
zendesk logo

“Algolia’s federated search helps us facilitate seamless customer experiences by empowering our employees to easily and quickly find the relevant information and resources they need to do their job every day.”

Brit Atilano
Program Manager, IT Operations
Zendesk logo
Shipstation logo
Sense logo
Wework logo
Aftership logo
Flexport logo
Various logos illustration

Developers First

Save your team time and dev cycles with detailed documentation that removes the complexity of integrating search into your products. Algolia provides 16 API clients, 9 client libraries, and 5 supported plugins to make it easy to build a consistent search and discovery experience across multiple platforms and devices.

Documentation
Server illustration

Reliability

With Algolia, you don’t have to worry about search going down. An available 99.999% SLA ensures that you can rely on our APIs, so your team can focus on building great products for your users, rather than on maintaining core services.

Algolia status
Multilanguage illustration

Scalable

Whether you’re building an MVP or adding search for millions of users, Algolia provides you with the search stack that scales to your use case. With 55+ data centers on 6 continents, plus offline search functionality, Algolia gives your users a lightning-fast search experience anywhere in the world. In 2017, Algolia returned 99% of search queries in under 17ms.

Infrastructure

Integrating Algolia to any app is a breeze

Use our APIs to customize and integrate great search and discovery in your app or website.

Backend
Frontend
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 := algoliasearch.Object{
    "firstname": "Jimmie",
    "lastname":  "Barninger",
    "company":   "California Paint"
}
res, err := index.AddObject(object)

Index myIndex = apiClient.InitIndex("contacts");
var jsonObject = new JObject();
jsonObject.Add("firstname", "Jimmie");
jsonObject.Add("lastname", "Barninger");
jsonObject.Add("company", "California Paint");
myIndex.AddObject(jsonObject);

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-index>
  <ais-search-box />
  <ais-results>
    <template scope="{ result }">
      <h2>{{ result.company }}</h2>
      <p>{{ result.firstname }} {{ result.lastname }}</p>
    </template>
  </ais-results>
  <ais-refinement-list attributeName="company" />
  <ais-pagination />
</ais-index>

<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)
}