Как собирать данные Reddit в 2026 году: JSON Endpoints и лимит в 1,000
С тех пор как API Reddit стал платным, золотая жила стала труднодоступной — но публичный .json endpoint все еще работает. Вот как его использовать, обойти потолок в 1,000 элементов и собирать данные в большом масштабе, не попадая под ограничения по скорости.
Reddit — один из самых богатых наборов данных мнений в интернете — реальные люди обсуждают продукты, инструменты, бренды и новости в сообществах, доступных для поиска. С тех пор как Reddit перевел свой официальный API на платную основу в 2023 году (широко сообщалось о цене $0.24 за 1,000 вызовов, что закрыло сторонние приложения, такие как Apollo), сбор данных в большом масштабе стал сложнее. Но есть путь, который изменение цен не закрыло: публичный .json endpoint, который поддерживает каждую страницу Reddit. Это руководство охватывает, как его использовать, как обойти потолок в 1,000 элементов и как собирать данные, не попадая под ограничения по скорости.
Добавьте .json к любому URL Reddit
Почти каждый URL Reddit возвращает структурированный JSON, если вы добавите .json. Без OAuth, без клиентского секрета — просто HTTP GET. Список сабреддита, пост с деревом комментариев, история пользователя: все это. Начните здесь:
import requests
headers = {"User-Agent": "research-script/1.0 by u/yourname"}
proxies = {"http": "http://USER:PASS@gate.quantumproxies.io:8000",
"https": "http://USER:PASS@gate.quantumproxies.io:8000"}
url = "https://www.reddit.com/r/webscraping/new.json?limit=100"
r = requests.get(url, headers=headers, proxies=proxies, timeout=20)
data = r.json()
for child in data["data"]["children"]:
post = child["data"]
print(post["title"], post["ups"], post["num_comments"])
Установите описательный User-Agent — Reddit более строг с общими. JSON предоставляет вам заголовок, оценку (ups), соотношение голосов за, количество комментариев, автора и временные метки напрямую, так что ничего не нужно извлекать из HTML.
Пагинация с помощью токена after
Страница списка с курсором, а не номерами страниц. Каждый ответ включает токен after (полное имя последнего элемента, например t3_abc123); передайте его обратно, чтобы получить следующую партию. Повторяйте, пока after не вернется null:
def fetch_listing(subreddit, sort="new", pages=10):
after, out = None, []
for _ in range(pages):
url = f"https://www.reddit.com/r/{subreddit}/{sort}.json?limit=100"
if after:
url += f"&after={after}"
data = requests.get(url, headers=headers, proxies=proxies, timeout=20).json()
out += [c["data"] for c in data["data"]["children"]]
after = data["data"].get("after")
if not after:
break
return out

Потолок в 1,000 элементов (и как его обойти)
Вот лимит, который удивляет людей: любой список Reddit останавливается примерно на 1,000 элементах. Пролистайте ленту new сабреддита, и после ~1,000 постов токен after иссякает, независимо от того, сколько еще постов существует. Это поведение платформы, а не ошибка скрапера. Это не относится к комментариям внутри одного поста — вы можете извлечь тысячи из них. Чтобы собрать более 1,000 постов из сообщества, увеличьте количество просмотров:
- Комбинируйте сортировки. Собирайте
new, затемtop,hotиcontroversial. Каждая из них — это отдельное окно на 1,000 элементов в тот же сабреддит, и перекрытие частичное — вместе они выявляют гораздо больше уникальных постов. - Добавьте временные фильтры. На
top, итерация?t=hour,day,week,month,year,allраскрывает разные срезы. - Используйте поиск. Поиск по ключевым словам выявляет старые посты, которые полностью исчезли из основных списков.
- Запускайте инкрементально. Опросите
newпо расписанию и удалите дубликаты по id поста, чтобы захватить все до того, как оно выйдет за пределы окна в 1,000 элементов.
# combine sorts to break past the 1,000-item cap
seen, posts = set(), []
for sort in ("new", "top", "hot", "controversial"):
for post in fetch_listing("webscraping", sort=sort, pages=10):
if post["id"] not in seen:
seen.add(post["id"])
posts.append(post)
print(f"{len(posts)} unique posts across four sorts")
Ограничения по скорости и как оставаться незаблокированным
Один IP, интенсивно опрашивающий JSON endpoints, быстро подвергается ограничению — Reddit возвращает 429 и в конечном итоге блокирует. Две вещи поддерживают сбор данных: установите темп (короткая задержка между запросами лучше, чем всплеск, который срабатывает ограничитель) и распределите его по IP, чтобы ни один адрес не нес всю нагрузку. Маршрутизация через резидентные прокси позволяет исследовательскому сбору выглядеть как множество обычных читателей, а Scraper API справляется с этой ротацией и темпом за вас. Если вы постоянно получаете 429, наше руководство по ограничениям по скорости и откату охватывает математику темпа.
Что с этим делать: слушать в масштабе
Причина для сбора данных Reddit — это слушать. Отслеживайте упоминания вашего бренда или конкурента в сообществах, проводите анализ настроений на деревьях комментариев, наблюдайте за нишевым сабреддитом на предмет повторяющихся проблем, вокруг которых стоит строить, или замечайте тренд до того, как он станет мейнстримом. Для всего, что выходит за рамки сопоставления ключевых слов, пропуск сырого текста через этап LLM извлечения превращает запутанные ветки в структурированные сигналы — темы, жалобы, запросы на функции. Публичные данные Reddit можно собирать, но это посты людей; если вы планируете обрабатывать имена пользователей или личные данные, наш обзор законности веб-скрапинга в 2026 году стоит прочитать (информативно, не юридический совет).

Собирайте данные Reddit на чистых резидентных IP
Часто задаваемые вопросы
Можно ли все еще собирать данные Reddit после изменений в API?
Да. Официальный API теперь платный, но публичный .json endpoint за каждой страницей Reddit все еще возвращает структурированные данные через простой HTTP GET без OAuth. Он ограничен по скорости, поэтому устанавливайте темп запросов и распределяйте их по IP, но для сбора в исследовательском масштабе это остается самым практичным маршрутом. old.reddit.com и RSS-ленты — дополнительные легковесные источники.
Почему Reddit останавливается на 1,000 постах?
Reddit ограничивает любой отдельный список — сортировку сабреддита, историю пользователя, поиск — примерно на 1,000 элементов по всей платформе; курсор пагинации просто останавливается. Это не ваш скрапер. Обойдите это, комбинируя сортировки (новые, топ, горячие, спорные), применяя временные фильтры, используя поиск и запуская инкрементальные задания, которые захватывают посты до того, как они выйдут за пределы окна.
Нужны ли прокси для сбора данных Reddit?
Для нескольких запросов — нет. Для устойчивого сбора — да: один IP, интенсивно опрашивающий JSON endpoints, получает ограничение 429 и затем блокируется. Резидентные прокси распределяют нагрузку, чтобы трафик выглядел как множество обычных читателей, а темп между запросами удерживает вас под ограничителем. Вместе они позволяют исследовательскому сбору работать непрерывно, не срабатывая защиту.
Законно ли собирать данные Reddit?
Сбор общедоступных страниц в целом защищаем, но условия Reddit ограничивают автоматизированный доступ, а данные включают контент, созданный пользователями, и имена пользователей. Соблюдайте публичные данные, уважайте ограничения по скорости и будьте осторожны с чем-либо, что идентифицирует личности. Это общая информация, не юридический совет — проверьте текущие условия Reddit и вашу юрисдикцию перед крупным проектом.
Переход API на платную основу не закрыл дверь — он просто переместил ручку. .json endpoint, пагинация курсора и стратегия для лимита в 1,000 элементов дают вам данные; резидентные IP и вежливый темп поддерживают сбор. Оттуда это проблема прослушивания, и Reddit — один из лучших сигналов, на которые вы можете указать. Если вас также интересует история ценообразования API на других платформах, наш пост о данных X/Twitter без API охватывает ту же территорию.