Reddit Search API

Создайте приложение для поиска по историческим обсуждениям

Спроектируйте фильтры, отображение неполных результатов и бюджет запросов для исторического поиска Reddit без обещания полного охвата архива.

Получить API-ключ

Переведите исследовательский вопрос в элементы формы

Начните с вопроса, на который должен отвечать интерфейс. Исследователю ремонта могут понадобиться обсуждения замены аккумуляторов в одном сообществе за выбранный период. Разделите поисковую фразу, сообщество и даты на самостоятельные поля. Показывайте отправленные значения вместе с результатами, чтобы смена фильтра не меняла смысл сравнения незаметно для читателя. Сохранённое название локального набора результатов полезно связать именно с условиями запроса, а не с обещанием полного описания темы на Reddit.

Используйте /v1/search с q и документированными фильтрами, не создавая произвольный язык запросов. Значения from и to задаются как даты UTC в формате YYYY-MM-DD, причём to включается. Выберите kind=post или kind=comment, если публикации и комментарии решают разные части задачи. Порог min_score определяет включение записи, но не релевантность выдачи. Независимый исторический архив не описывает текущую активность и не представляет официальную позицию Reddit по выбранному вопросу.

Сделайте неполноту контекста видимой

Первый ответ — ограниченный набор плоских записей. Отображайте исходный текст как данные, не выполняя его в качестве разметки приложения. Сохраняйте доступные идентификаторы и даты рядом с собственными вычисленными метками. Если присутствуют parent_id или link_id, локальная группировка помогает показать связи между уже полученными элементами. Она не добавляет отсутствующие сообщения и не гарантирует полную беседу. Отдельно обозначайте ваши выводы, чтобы пользователь не принимал их за поля или оценки, рассчитанные сервисом.

Стройте пагинацию с учётом реальных ограничений: до 100 записей за обращение и до 100 страниц для одного запроса. Показывайте, является ли итог точным числом, нижней оценкой или неизвестным значением. Достижение лимита требует пояснения, а не заявления, что совпадения закончились. Более узкие интервалы дат могут организовать работу клиента, но само разбиение не доказывает ни полноту сбора, ни отсутствие повторяющихся записей. В собственном рабочем наборе проверяйте идентификаторы перед объединением результатов нескольких обращений.

Разделяйте успешный пустой ответ и ошибку

В состоянии клиента отличайте пустой успешный поиск от неудачного обращения. И пустая, и непустая успешная выдача стоят один кредит. При 400 исправьте параметры, при 401 проверьте ключ, при 402 учитывайте недостаточный баланс, при 429 уменьшите частоту или сделайте паузу. При ошибке источника резерв возвращается. Ответ открытого маршрута статуса не доказывает исправность поискового источника, даже если сам HTTP-сервис доступен. Повтор после устранения причины всё равно является отдельным обращением с обычными правилами оплаты.

Для локального эксперимента сохраняйте выбранные фильтры, исходы запросов и полученные идентификаторы с учётом собственных правил обработки данных. Эти заметки объясняют наблюдение, но не обещают одинаковую выдачу в будущем или постоянный доступ к архивным материалам. Считайте дополнительные страницы и успешные повторы отдельно. При цене $1 за 1000 успешных запросов сравнивайте планируемое число обращений с балансом перед запуском расписания; платное пополнение $50 даёт 50 000 кредитов.