Документация API фильмов

Кинобаза API отдаёт данные о фильмах и сериалах в JSON. Все запросы делаются методом GET на адрес https://api.cinemapi.ru, тексты приходят в UTF-8.

  1. Получите ключ. Укажите почту на главной, ключ придёт письмом.
  2. Отправьте запрос. Передайте ключ в заголовке X-API-Key.
  3. Разберите ответ. Если данных нет, поле приходит как null, пустой список как [].

Тестовые запросы на этой странице уходят на сервер ниже с вашим ключом. Ключ хранится только в этом браузере.

Авторизация

Каждый запрос должен содержать ключ в заголовке X-API-Key. Без ключа или с неверным ключом API ответит кодом 401. Не публикуйте ключ в коде сайта или приложения, который видят пользователи: делайте запросы со своего сервера.

curl "https://api.cinemapi.ru/v1/films/258687" \
  -H "X-API-Key: $KINOBAZA_KEY"

Ответы и ошибки

Успешный ответ приходит с кодом 200. При ошибке приходит объект error с машинным кодом и описанием на русском:

{
  "error": {
    "code": "not_found",
    "message": "Фильма с ID 1 нет в базе"
  }
}
HTTPcodeКогда
400bad_requestНеверный параметр: не тот тип, значение вне диапазона, неизвестный жанр или страна
401unauthorizedНет ключа или ключ неверный
404not_foundФильма с таким ID нет в базе или адрес метода неверный
429rate_limitedПревышен лимит запросов, см. Лимиты
503unavailableБаза временно недоступна, повторите запрос позже

Постраничная выдача

Поиск и фильтры возвращают список частями. Параметры page (с 1) и limit (от 1 до 100, по умолчанию 20) выбирают страницу. В ответе кроме items есть номер страницы, размер, общее число найденных фильмов и число страниц:

{ "items": [ … ], "page": 1, "limit": 20, "total": 1773, "pages": 89 }

Лимиты

Бесплатный ключ: 500 запросов в сутки и 5 запросов в секунду. Суточный лимит обнуляется в полночь по Москве. При превышении API отвечает кодом 429, а заголовок Retry-After говорит, через сколько секунд повторить запрос. Лимиты платных тарифов указаны на странице тарифов.

В каждом ответе есть заголовки X-RateLimit-Limit с суточным лимитом ключа и X-RateLimit-Remaining с числом запросов, оставшихся до полуночи.

GET/v1/films/{id}

Фильм или сериал по ID Кинопоиска. Ответ: объект фильма.

ПараметрТипОписание
id обязательныйinteger, в путиID фильма на Кинопоиске, например 258687

GET/v1/films

Список фильмов и сериалов с фильтрами и сортировкой. Все параметры необязательные, их можно сочетать. Ответ: список объектов фильма.

ПараметрТипОписание
genrestringЖанр из справочника, регистр не важен
countrystringСтрана из справочника
typestringmovie — фильмы, series — сериалы
year_from, year_tointegerГод выхода от и до, включительно
rating_fromnumberМинимальная оценка Кинопоиска, от 0 до 10
votes_fromintegerМинимальное число голосов на Кинопоиске. Полезно вместе с сортировкой по оценке
orderstringvotes — популярные первыми (по умолчанию), rating — по оценке Кинопоиска, year — новые первыми, -year — старые первыми, name — по названию. В сортировках votes и rating участвуют только фильмы с оценкой Кинопоиска
page, limitintegerСтраница и размер, см. Постраничная выдача

GET/v1/genres

Все жанры и число фильмов в каждом, самые частые первыми. Эти названия принимает параметр genre.

GET/v1/countries

Все страны и число фильмов из каждой. Эти названия принимает параметр country.

GET/v1/stats

Сколько в базе фильмов и сериалов и у скольких из них заполнено каждое поле. Поле coverage поможет заранее понять, на какие данные можно рассчитывать. Значения обновляются раз в 10 минут.

GET/v1/films/{id}/persons

Актёры и съёмочная группа фильма. В actors актёры по порядку титров с ролью в character, в crew режиссёры, сценаристы, продюсеры и другие с кодом профессии в profession, как в фильмографии. У каждого есть id, name, original_name и photo. Если полный состав фильма ещё не загружен, люди берутся из фильмографий, и тогда порядок актёров приблизительный.

GET/v1/persons/{id}

Актёр, режиссёр или другой участник по ID Кинопоиска. Ответ: объект персоны с полем facts: список фактов о человеке.

GET/v1/persons/{id}/films

Фильмография, сначала новые фильмы. Если человек участвовал в фильме в нескольких ролях, например режиссёр и сценарист, фильм приходит отдельной строкой на каждую. Ответ: список с полями film_id, name, original_name, year, type, profession (код), role (подпись на русском, например «Актер: играет самого себя») и character (роль актёра).

ПараметрТипОписание
id обязательныйinteger, в путиID персоны на Кинопоиске
professionstringactor, voice_actor, director, writer, producer, composer, operator, editor, designer, voice_director, translator, sound, production_manager или other
page, limitintegerСтраница и размер, по умолчанию 50 на странице

Объект фильма

Одинаковый во всех методах. Все поля присутствуют всегда, отсутствующие данные приходят как null.

ПолеТипОписание
idintegerID на Кинопоиске
imdb_idstring | nullID на IMDb, например tt0816692
typestringmovie или series
namestring | nullНазвание на русском
original_namestring | nullОригинальное название
yearinteger | nullГод выхода, у сериала год начала
durationinteger | nullПродолжительность в минутах
age_ratingstring | nullВозрастной рейтинг, например 18+
genresstring[]Жанры
countriesstring[]Страны производства
short_descriptionstring | nullКороткое описание в одно-два предложения
descriptionstring | nullПолное описание
ratingsobjectОценки из разных источников, см. Оценки
posterobject | nullurl — постер в полном размере, preview_url — уменьшенный, около 300×450

Объект персоны

Все поля присутствуют всегда, отсутствующие данные приходят как null.

ПолеТипОписание
idintegerID на Кинопоиске
namestring | nullИмя на русском
original_namestring | nullИмя в оригинале
sexstring | nullmale или female
birth_date, death_datestring | nullДата в формате ГГГГ-ММ-ДД
birth_place, death_placestring | nullМесто рождения и смерти
heightinteger | nullРост в сантиметрах
professionsstring[]Профессии, например «Актер», «Режиссер»
films_countinteger | nullСколько разных фильмов в фильмографии
photoobject | nullurl — фото. У многих людей фото на Кинопоиске нет, тогда null

Оценки

Каждая оценка — объект {"value", "votes"} или null, если её нет. Ключи в ratings есть всегда.

Ключvaluevotes
kinopoiskОценка Кинопоиска, от 0 до 10Число голосов
imdbОценка IMDb, от 0 до 10Число голосов
criticsОценка мировых критиков, от 0 до 10Число рецензий
russian_criticsДоля положительных рецензий российских критиков, %Число рецензий
positive_reviewsДоля положительных зрительских рецензий, %Число рецензий