Прежде всего totalResults - приблизительное значение.
Как написано в документах :
Общее количество результатов в наборе результатов. Обратите внимание, что значение является приблизительным и может не представлять точное значение. Кроме того, максимальное значение составляет 1 000 000.
Вы не должны использовать это значение для создания ссылок на страницы. Вместо этого используйте значения свойств nextPageToken и prevPageToken, чтобы определить, показывать ли ссылки на страницы.
Так что это может быть подсчет результатов до того, как были применены какие-либо фильтры (просто предположение).
Теперь о nextPageToken и пустых предметов
Есть много открытых вопросов об их странном поведении на https://issuetracker.google.com
И они годами работают над их исправлением. см. Один из них
Похоже, Youtube пытается оптимизировать время сервера ЦП для каждого поискового запроса с оценками или, возможно, содержание, которое должно приходить, ограничено вашим регионом (например) или может быть из-за какого-то другого условия, выполненного после выборки nextPagetokens.
Это нормально? Или мне нужно искать частичные списки элементов, чтобы определить, закончены ли результаты?
ИМО на данный момент, да.
Возможные реализации:
До тех пор, пока доступен nextPageToken, продолжайте совершать последовательные вызовы.
Это больше рекомендуется.
После некоторых вызовов API, если элементы становятся пустыми, нет необходимости в вызовах API.
Это можно считать действительным для текущего состояния, в котором есть ошибки в реализации разбиения на страницы. Но ненадежный.