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 e-commerce search and discovery

Accelerate conversions.
Increase engagement.
Build customer loyalty.

Algolia enables e-commerce and retail businesses to create personalized, intuitive product search and discovery experiences that shoppers love.

Sign up Or talk to one of our Product specialist

World’s leading e-commerce and retailers chose Algolia

BetterWorldBooks logo

+10%

Conversion rate

Birchbox logo

+13%

Average order value

Birchbox logo

+37%

conversion rate

Download the Case Study
Fanatics logo
Lacoste logo
the Kooples logo
Teespring logo
Goat logo
Vestiaire Collective logo
Personalization illustration

Deliver personalized shopper experiences

Your customers send you signals every time they interact with your brand; online and even offline. Capture that data into Algolia to serve your customers the right products based on purchase history, preferences, demographics, favorite store or anything else.

Query rules illustration

Stay in control with built-in merchandising and business logic

Your store is unique. Use our visual dashboard to fine-tune the products ranking based on their popularity, reviews, profit margins or any data that matters to you. Your e-commerce store is living. Uncover the best performing relevance strategies with A/B Testing, and leverage Query Rules to promote specific results, display promotional banners, or redirect your customers when they search for the latest trends.

Analytics illustration

Understand your customers with powerful Analytics

With Algolia Analytics, understand what your customers are searching for, what filters they use, what results they click and how their searches turn into conversions. Use those insights to improve your product catalog, adapt your SEO strategy, fuel merchandising initiatives and fine-tune your search relevance.

Learn more

Integrating Algolia to your e-commerce use case is a breeze

Use our APIs to customize and integrate great search and discovery in your e-commerce 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)
}

Use our pre-built extensions to improve your store experience in a few minutes.

Shopify logo Magento logo
Landscape with a giant book

Discover how Better World Books increased their conversion rate by 10%

“Customers are quickly finding the products that they are looking for, and we are seeing the benefits.”

Matt Byers
Sr. Director of technology

Download the Case Study