Обробляйте архівні сторінки пакетно, без живого потоку

Отримати API-ключ

Приклад запиту

cURL

curl --fail-with-body -H "Authorization: Bearer YOUR_API_KEY" "https://api.redditstreamapi.com/v1/posts?subreddit=datasets&limit=3&page=2"

Окремі історичні запити замість доставки подій

Reddit Stream API надає читання незалежного історичного архіву Reddit. Це не офіційний сервіс Reddit, він не пов’язаний із платформою. Stream у назві не означає доставки подій у реальному часі: API повертає окремі GET-відповіді, а не SSE-з’єднання, підписку WebSocket чи стрічку сповіщень. Повтор запиту — нове читання архіву, а не спосіб підписатися на поточну активність Reddit.

Плануйте пакетне завдання навколо явних фільтрів та обмежених номерів сторінок. Внутрішній порядок _doc не є хронологією, релевантністю чи оцінкою, повторні запити не гарантують тих самих записів і послідовності. Номер сторінки — не стабільне зміщення в потоці подій. Збереження локального прогресу організує вашу обробку, але не створює фіксованого знімка й не доводить відсутності пропусків або повторів.

Відповіді містять плоскі записи, без зібраних сервером дерев обговорень. Наявні parent_id та link_id дозволяють пов’язувати отримані дані локально, але не гарантують повної розмови чи ланцюжка батьківських записів. Відсутні поля та нерозв’язані посилання мають залишатися видимими у вашій обробці. Архів також не гарантує дат покриття, постійної доступності й розкладу оновлень. Його історичне призначення не обіцяє появи нових матеріалів через визначений інтервал.

Перевірте другу сторінку до оновлення прогресу

Використовуйте GET https://api.redditstreamapi.com/v1/posts?subreddit=datasets&limit=3&page=2. subreddit=datasets обмежує спільноту, limit=3 запитує щонайбільше три дописи, page=2 — другу сторінку з цими параметрами. Це не отримання двох сторінок одразу й не обіцянка наступних трьох дописів за часом. Записи datasets можуть бути відсутні або неповні. На сервері передавайте X-API-Key: <ключ> чи Authorization: Bearer <ключ>; обидва варіанти підтримуються.

Синтетичний фрагмент відповіді, лише для демонстрації: {"data":[],"pagination":{"page":2,"limit":3,"total":null,"relation":"unknown"},"credits":{"cost":1,"balance":99}}. Справжній запит не виконувався, баланс вигаданий. Порожня друга сторінка не встановлює підсумку нуль чи точного розміру набору збігів. Така успішна порожня відповідь усе одно коштує один кредит; вона відрізняється від мережевого збою або відхиленого ключа.

Збережіть отриману відповідь разом із фільтрами, limit і page до позначення сторінки обробленою у власному завданні. Перевірте data та наявні поля до запису перетворених рядків. Локальна контрольна точка — стан вашого застосунку, не виданий сервером токен відновлення. Повторна обробка збереженої копії не викликає API; нове отримання другої сторінки оплачується за успіху окремо й не гарантує ідентичного результату.

Обмежте вікна, запити та витрати

При ітерації по сторінках не гарантується повне покриття всього архіву чи вичерпний експорт усіх записів. Зупинка перебору після вичерпання допустимих сторінок не означає, що архів вичерпано. Цей підхід дозволяє обробляти дані частинами, що зручно для інтеграції в робочі процеси, де важливо керувати ресурсами та уникати величезних обсягів даних за один раз. Маршрути вмісту приймають limit і page від 1 до 100, по одній сторінці за запит. from і to використовують YYYY-MM-DD в UTC та застосовуються до created_utc, не часу надходження до архіву; останній день включений повністю. min_score задає числовий поріг без сортування.

Кожне успішне отримання коштує один кредит, включно з порожніми сторінками та успішними повторами: $1 за 1000 запитів. Некоректні запити не списуються; збій джерела повертає резерв. Тайм-аут або розрив з’єднання може статися після оплаченого успіху. Новий успішний повтор коштує ще один кредит, а помилка власної бази даних не скасовує списання. Розрізняйте 400, 401, 402 і 429 та обмежуйте кількість спроб.

Реєстрація за електронною поштою та паролем показує ключ один раз одразу після створення облікового запису, до оплати. Пароль займає 12–72 байти UTF-8. Умовні 100 пробних кредитів залежать від загальномережевого захисту від зловживань. Мінімальне платне поповнення $50 дає 50000 кредитів, без підписок і строку дії придбаних кредитів. До оплати завдання прочитайте документацію, ціни, сторінку ключа й посібник. Безоплатний /v1/status підтверджує лише статичний опис і HTTP-відповідь, не працездатність пошуку, свіжість архіву чи баланс.