Reddit API Stack

Исторический архив Reddit: API для разработчиков

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

Пример запроса

Python

import json
import urllib.request

request = urllib.request.Request('https://api.redditapistack.com/v1/search?q=asyncio&subreddit=learnpython&limit=3',
    headers={"Authorization": "Bearer YOUR_API_KEY"})
with urllib.request.urlopen(request, timeout=30) as response:
    payload = json.load(response)
print(payload)

JavaScript

const response = await fetch("https://api.redditapistack.com/v1/search?q=asyncio&subreddit=learnpython&limit=3", {
  headers: { Authorization: "Bearer YOUR_API_KEY" }
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const payload = await response.json();
console.log(payload);

Доступ к историческим данным Reddit

Reddit API Stack предоставляет доступ к независимому историческому архиву публикаций и комментариев. Это не официальный продукт Reddit и не источник обновлений в реальном времени. Приложение работает с сохраненными материалами, поэтому результат запроса нельзя считать отражением текущего состояния обсуждения. Для разработчика это прежде всего интерфейс чтения: он не предназначен для публикации новых сообщений, голосования или обмена личными сообщениями.

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

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

Гибкая модель оплаты и использования

Оплата зависит от числа успешных запросов на получение данных. Один такой запрос списывает один кредит, даже если список совпадений пуст. Тариф составляет $1 за 1000 успешных запросов, то есть $0.001 за кредит. Платные кредиты не имеют срока действия; подписка и ежемесячное продление не требуются. Количество записей внутри ответа не меняет стоимость успешного запроса в пределах установленного лимита.

Минимальная сумма платного пополнения составляет $50, что дает 50000 кредитов по указанному тарифу. До оплаты учетной записи может быть доступен пробный баланс в 100 кредитов. Его предоставление зависит от общих для сети ограничений против злоупотреблений и не гарантировано каждому пользователю. Пробные кредиты отделены от приобретенного баланса; они не меняют курс пересчета денег в платные кредиты.

Чтобы пополнить баланс, войдите в учетную запись и создайте счет. Именно текущий счет содержит адрес получателя, сеть и точную сумму перевода: USDT TRC20 либо USDC ERC20 в основной сети Ethereum. После платежа введите хеш транзакции для проверки. Кредиты добавляются после проверки подтвержденного подлинного перевода; фиксированный срок зачисления не обещается. Уникальность счета не означает выдачу нового адреса кошелька.

Техническая интеграция и ограничения

Работа начинается с регистрации по электронной почте и паролю. Ключ показывается один раз сразу после создания учетной записи и до оплаты. Панель управления находится на странице получения ключа. Для платного пополнения создайте счет, переведите указанную сумму получателю из счета и введите хеш транзакции. Наличие подтверждения в блокчейне само по себе не добавляет кредиты: сервер должен проверить перевод по предоставленному хешу.

Для поиска сохраненных материалов доступны отдельные маршруты поиска, публикаций, комментариев и сведений о сообществах. Параметр min_score задает минимальный числовой рейтинг и только отфильтровывает записи; он не меняет их порядок. Для /v1/item требуется id известной записи. Маршруты /v1/posts и /v1/comments не используют id как фильтр. Один запрос возвращает не более 100 записей, а номер страницы ограничен диапазоном от 1 до 100.

Публичный маршрут /v1/status возвращает статическое описание исторического сервиса и подтверждает ответ HTTP-сервера. Он не проверяет поисковую систему, доступность записей или полноту архива и не расходует кредиты. При работе с данными проверяйте HTTP-коды: 401 означает отсутствие или недействительность ключа, 402 — нехватку кредитов, 429 — ограничение частоты. Успешный пустой ответ следует отличать от любого из этих отказов.