Catalog and search
GET/v1.3/titles
Search titles by name and pick them from the whole database with filters.
The main list in the API: search, storefronts and selections by any property. Filters, sorting and presets are covered in Filters and sorting; paging and fields in Lists and pagination.
Without sort the catalog goes by popularity, with titles that have no votes last. Pair sorting by a rating with a vote threshold: a handful of people can rate a title too.
Query parameters
qstringSearch by title in any language. Forgives typos: “matrx” finds The Matrix. With
qthe default order is relevance.Example:q=матрицаfiltersAny catalog filter with the
.any,.all,.not,.gte,.lteoperators:kind=anime,country=jp,year.gte=1990,votes_imdb.gte=50000,person=kp:41477. The full list is in Filters and sorting.sortstringOrder: a key with a sign,
-for descending,+for ascending. Two keys are allowed:sort=-rating_imdb,+year. Popularity by default, relevance withq.popularityrelevancerelease_dateyearruntimeratingrating_imdbrating_kprating_tmdbrating_krrating_letterboxdrating_rtrating_metacriticrating_criticsvotes_imdbvotes_kpvotes_tmdbvotes_krvotes_letterboxdvotes_totalrating_weighteddivergencebudgetbox_office_usrevenue_worldwins_imdboscars_wonrandomDefault:
Example:popularity,relevancewithqsort=-rating_imdbpresetenumA ready-made set of filters. Explicit parameters refine it. What each one holds is in Filters and sorting.
tophidden_gemstrendingnewclassicsExample:preset=toplimitintegerTitles per page, from 1 to 50.
Default:50
Example:limit=20offsetintegerHow many titles to skip from the start.
Default:0
cursorstringA cursor for deep paging. Send an empty
cursor=first, then thenext_cursorvalue from the response. Doesn’t work withsort=random. Only the catalog has it.fieldscsvWhich item fields to return:
fields=title,year. With a-sign, which to drop:fields=-genres.titlekeepstitle_ruandtitle_en,poster_urlkeepsposter_url_ruandposter_url_en. IDs always come back.titletitle_originalyearrelease_datekindposter_urlposters_by_sourcerating_kprating_tmdbrating_imdbrating_krrating_letterboxdvotes_kpvotes_tmdbvotes_imdbcountriesgenresExample:fields=title,yearlangru | enKeep one language in the response.
Response fields
itemsarrayTitles.
Show 24 fields
imdb_id · kp_id · tmdb_id · tmdb_tv_id · kinorium_idstring | nullThe title’s catalog IDs. Always returned, even with
fields.title_ru · title_en · title_originalstring | nullTitles: Russian, English and in the original language.
yearinteger | nullRelease year.
release_datestring | nullFirst release date,
YYYY-MM-DD.kindenumKind of title:
movie,series,mini_series,tv_show,anime,cartoon,short.poster_url_ru · poster_url_enstring | nullPoster for a Russian and an English storefront.
posters_by_sourceobjectEach source’s poster:
kp,tmdb,imdb,kinorium.rating_kp · rating_tmdb · rating_imdb · rating_kr · rating_letterboxdnumber | nullKinopoisk, TMDB, IMDb, Kinorium and Letterboxd ratings, 0–10 scale.
votes_kp · votes_tmdb · votes_imdbinteger | nullKinopoisk, TMDB and IMDb votes.
countriesarrayCountries:
code,name_ru,name_en.genresarrayGenres:
slug,name_ru,name_en.
totalnullThe catalog doesn’t count the total: an exact count of a filtered set is a second pass over the whole database. Page by
has_more.limit · offsetintegerPage size and offset. There is no
offsetwhen you page with a cursor.has_morebooleanWhether there is a next page.
next_cursorstring | nullThe next page’s cursor, only if the request had
cursor.nullmeans there is nothing more.
Errors
| status | code | when |
|---|---|---|
| 400 | invalid_request | An unknown filter, operator, |
| 401 | unauthorized | The |
| 429 | rate_limited | The per-second rate limit or the daily quota is used up. |
Every code and what to do about it is on the Errors page.