Algolia Recommend Logo
Algolia Pride Logo
  • Pricing
  • Partners
  • Log in
  • Start free
Inspiration Library

Get inspired by 200+ customer examples and take your search and discovery experience to the next level.

Log inStart free
Algolia logo blueprint

Looking for our logo?

We got you covered!

Download logo packMore algolia assets

Algolia media Search & Discovery

Drive engagement. Increase loyalty. Retain users.

Create engaging experiences for your users by providing the freshest and most relevant content, personalized for each user, and delivered in real-time on the device and platform your users choose.

Free Trial

Or contact us

Laptop mockup

Global media companies choose Algolia to power content discovery experiences

  • 8tracks logo

    “Our goal at 8Tracks is to push the barrier on what’s possible in terms of music discovery. That wouldn’t be possible without Algolia’s API.”

    Rémi Gabillet
    Co-founder & CTO
  • Dubsmash logo

    “Once we implemented Algolia and saw how much it was outperforming our previous solution just in terms of providing relevant search results, it was a no brainer for us to migrate to Algolia.”

    Tim Specht
    Co-founder & CTO
NBCUniversal
Discovery
Twitch
Universal
Medium
France TV
NPR
Ouest France
Cafeyn
Dailymotion
Coursera
Iflix
Ibis World
America’s Test Kitchen
ABC
iPad illustration containing a play button

Think outside the (search) box

Learn how to improve your media KPIs, boost your revenue and delight your users.

Global search illustration

Global search

In today’s connected society, people across the world are consuming content and event coverage in real-time. Users expect that the relevant and freshest content will be available, in an instant, regardless of where they might be in the world at that moment. With Algolia’s globally distributed infrastructure and flexibility to support any language, extending a consistent and best-in-class search experience to every corner of the globe is no longer a challenge.

Custom crawler illustration

Activate your archives

With Algolia’s Custom Crawler, unlocking your archives for users to discover your catalogue of rich content is made simple. In addition, boosting relevance based on custom engagement variables such as shares, likes, or even metrics from Google Analytics is all possible.

Multiple devices illustration

Unified experience across devices

Build consistent Search & Discovery experiences across all platforms and devices so that users are able to find exactly what they’re looking for whenever, wherever and however they want.

Cover for the Winning video streaming arms race ebook

Learn from Twitch, iFlix and FranceTV

How 3 media companies manage to increase content consumption thanks to search.

Integrating Algolia to your media use case is a breeze

Use our APIs to customize and integrate great Search & Discovery on all of your media properties.

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)}
Get started with our APIs

Recommended content

See more