Comment extraire des données Reddit en 2026 : points de terminaison JSON et la limite de 1 000
Depuis que l'API de Reddit est devenue payante, le filon est devenu plus difficile à atteindre — mais le point de terminaison public .json fonctionne toujours. Voici comment le paginer, dépasser la limite de 1 000 éléments, et collecter à grande échelle sans être limité par le taux.
Reddit est l'un des ensembles de données d'opinion les plus riches du web — de vraies personnes débattant de produits, outils, marques et actualités dans des communautés consultables. Depuis que Reddit a déplacé son API officielle vers une tarification payante en 2023 (largement rapportée à 0,24 $ pour 1 000 appels, ce qui a fermé des applications tierces comme Apollo), collecter ces données à grande échelle est devenu plus complexe. Mais il existe une voie que le changement de tarification n'a pas fermée : le point de terminaison public .json qui soutient chaque page Reddit. Ce guide couvre comment le paginer, comment dépasser la limite de 1 000 éléments, et comment collecter sans déclencher la limite de taux.
Ajoutez .json à n'importe quelle URL Reddit
Presque chaque URL Reddit renvoie un JSON structuré si vous ajoutez .json. Pas d'OAuth, pas de secret client — juste un HTTP GET. Une liste de subreddit, un post avec son arbre de commentaires, l'historique d'un utilisateur : tout y est. Commencez ici :
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"])
Définissez un User-Agent descriptif — Reddit est plus strict avec les génériques. Le JSON vous donne directement le titre, le score (ups), le ratio de votes positifs, le nombre de commentaires, l'auteur et les horodatages, donc il n'y a rien à extraire du HTML.
Pagination avec le jeton after
Page de listes avec un curseur, pas des numéros de page. Chaque réponse inclut un jeton after (le nom complet du dernier élément, comme t3_abc123); renvoyez-le pour obtenir le lot suivant. Bouclez jusqu'à ce que after revienne nul :
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

La limite de 1 000 éléments (et comment la dépasser)
Voici la limite qui surprend les gens : toute liste Reddit s'arrête à environ 1 000 éléments. Paginer le flux new d'un subreddit et après ~1 000 messages, le jeton after s'épuise, peu importe combien de messages supplémentaires existent. C'est un comportement à l'échelle de la plateforme, pas un bug de l'extracteur. Cela ne s'applique pas aux commentaires à l'intérieur d'un seul post — vous pouvez en extraire des milliers. Pour collecter plus de 1 000 messages d'une communauté, multipliez vos vues de celle-ci :
- Combinez les tris. Extrayez
new, puistop,hotetcontroversial. Chacun est une fenêtre différente de 1 000 éléments dans le même subreddit, et le chevauchement est partiel — ensemble, ils révèlent beaucoup plus de messages uniques. - Ajoutez des filtres temporels. Sur
top, itérez?t=hour,day,week,month,year,allpour révéler différentes tranches. - Utilisez la recherche. Les recherches par mots-clés révèlent des messages plus anciens qui ont complètement disparu des listes principales.
- Exécutez de manière incrémentale. Sondez
newselon un calendrier et dédupliquez par identifiant de message, afin de capturer tout avant qu'il ne dépasse la fenêtre de 1 000 éléments.
# 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")
Limites de taux et rester débloqué
Une IP sondant intensément les points de terminaison JSON est rapidement limitée — Reddit renvoie des 429 et finit par bloquer. Deux choses maintiennent un travail de collecte en bonne santé : le rythmer (un court délai entre les requêtes surpasse une rafale qui déclenche le limiteur) et le répartir sur plusieurs IPs pour qu'aucune adresse unique ne supporte toute la charge. Le routage via des proxies résidentiels permet à une exploration de recherche de ressembler à de nombreux lecteurs ordinaires plutôt qu'à un client agressif, et une Scraper API gère cette rotation et ce rythme pour vous. Si vous rencontrez constamment des 429, notre guide sur les limites de taux et le backoff couvre les calculs de rythme.
Que faire avec : écouter à grande échelle
La raison de collecter des données Reddit est d'écouter. Suivez les mentions de votre marque ou d'un concurrent à travers les communautés, effectuez une analyse de sentiment sur les arbres de commentaires, surveillez un subreddit de niche pour des problèmes récurrents qui méritent d'être développés, ou repérez une tendance avant qu'elle n'atteigne le grand public. Pour tout ce qui dépasse la correspondance de mots-clés, alimenter le texte brut par une étape d'extraction LLM transforme les fils désordonnés en signaux structurés — thèmes, plaintes, demandes de fonctionnalités. Les données publiques de Reddit sont légitimes à collecter, mais ce sont les messages des gens ; si vous prévoyez de traiter des noms d'utilisateur ou des détails personnels, notre aperçu de la légalité de l'extraction de données en 2026 mérite d'être lu (informatif, pas un conseil juridique).

Collecter des données Reddit sur des IPs résidentielles propres
Questions fréquemment posées
Pouvez-vous encore extraire des données Reddit après les changements de l'API ?
Oui. L'API officielle est désormais payante, mais le point de terminaison public .json derrière chaque page Reddit renvoie toujours des données structurées via un simple HTTP GET sans OAuth. Il est limité par le taux, donc rythme les requêtes et répartis-les sur plusieurs IPs, mais pour une collecte à l'échelle de la recherche, cela reste la voie la plus pratique. old.reddit.com et les flux RSS sont des sources supplémentaires légères.
Pourquoi Reddit s'arrête-t-il à 1 000 messages ?
Reddit limite toute liste unique — un tri de subreddit, l'historique d'un utilisateur, une recherche — à environ 1 000 éléments à l'échelle de la plateforme ; le curseur de pagination s'arrête simplement. Ce n'est pas votre extracteur. Dépassez-le en combinant les tris (new, top, hot, controversial), en appliquant des filtres temporels, en utilisant la recherche, et en exécutant des tâches incrémentales qui capturent les messages avant qu'ils ne sortent de la fenêtre.
Ai-je besoin de proxies pour extraire des données Reddit ?
Pour quelques requêtes, non. Pour une collecte soutenue, oui : une seule IP martelant les points de terminaison JSON est limitée à 429 puis bloquée. Les proxies résidentiels répartissent la charge pour que le trafic ressemble à celui de nombreux lecteurs ordinaires, et un rythme entre les requêtes vous maintient sous le limiteur. Ensemble, ils permettent à une exploration de recherche de fonctionner en continu sans déclencher de défenses.
Est-il légal d'extraire des données Reddit ?
Collecter des pages publiquement visibles est généralement défendable, mais les conditions de Reddit restreignent l'accès automatisé et les données incluent du contenu généré par les utilisateurs et des noms d'utilisateur. Respectez les données publiques, respectez les limites de taux, et soyez prudent avec tout ce qui identifie des individus. Ceci est une information générale, pas un conseil juridique — vérifiez les conditions actuelles de Reddit et votre juridiction avant un grand projet.
Le passage de l'API à payante n'a pas verrouillé la porte — il a juste déplacé la poignée. Le point de terminaison .json, la pagination par curseur, et une stratégie pour la limite de 1 000 éléments vous procurent les données ; les IPs résidentielles et un rythme poli maintiennent la collecte en cours. À partir de là, c'est un problème d'écoute, et Reddit est l'un des meilleurs signaux que vous pouvez y diriger. Si vous voulez aussi l'histoire de la tarification de l'API sur les autres plateformes, notre article sur les données X/Twitter sans l'API cartographie le même terrain.
Extraire des données Reddit à grande échelle avec une Scraper API