Jak zeskrobać dane z Reddita w 2026 roku: JSON Endpoints i limit 1,000

Od kiedy API Reddita stało się płatne, kopalnia złota stała się trudniej dostępna — ale publiczny endpoint .json nadal działa. Oto jak go stronicować, pokonać limit 1,000 pozycji i zbierać na dużą skalę bez ograniczeń szybkości.

Reddit to jedno z najbogatszych zbiorów opinii w sieci — prawdziwi ludzie dyskutują o produktach, narzędziach, markach i wiadomościach w przeszukiwalnych społecznościach. Od kiedy Reddit przeniósł swoje oficjalne API na płatne w 2023 roku (powszechnie raportowane jako $0.24 za 1,000 wywołań, co zamknęło aplikacje trzecie jak Apollo), zbieranie tych danych na dużą skalę stało się trudniejsze. Ale jest droga, której zmiana cenowa nie zamknęła: publiczny endpoint .json, który wspiera każdą stronę Reddita. Ten przewodnik obejmuje, jak go stronicować, jak pokonać limit 1,000 pozycji i jak zbierać bez przekraczania limitu szybkości.

Dodaj .json do dowolnego URL Reddita

Prawie każdy URL Reddita zwraca ustrukturyzowany JSON, jeśli dodasz .json. Bez OAuth, bez tajemnicy klienta — tylko HTTP GET. Lista subreddita, post z drzewem komentarzy, historia użytkownika: wszystko to. Zacznij tutaj:

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"])

Ustaw opisowy User-Agent — Reddit jest bardziej rygorystyczny wobec ogólnych. JSON daje ci tytuł, wynik (ups), stosunek głosów w górę, liczbę komentarzy, autora i znaczniki czasu bezpośrednio, więc nie ma potrzeby parsowania z HTML.

Paginacja z tokenem after

Strona listy z kursorem, nie numerami stron. Każda odpowiedź zawiera token after (pełna nazwa ostatniego elementu, jak t3_abc123); przekaż go z powrotem, aby uzyskać następną partię. Pętla, dopóki after nie wróci jako 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
Kluczowe liczby dla zeskrobywania Reddita: limit listy 1,000 pozycji, $0.24 za 1,000 wywołań API, endpoint .json i łączenie czterech sortów
Limit 1,000 pozycji dotyczy każdego sortu — łączenie sortów i filtrów czasowych to sposób, aby go przekroczyć.

Limit 1,000 pozycji (i jak go przełamać)

Oto limit, który zaskakuje ludzi: każda lista Reddita zatrzymuje się na około 1,000 pozycji. Stronicuj kanał new subreddita i po ~1,000 postach token after się wyczerpuje, niezależnie od tego, ile więcej postów istnieje. To zachowanie platformy, a nie błąd skrobaka. Nie dotyczy to komentarzy wewnątrz pojedynczego posta — możesz pobrać tysiące z nich. Aby zebrać więcej niż 1,000 postów z jednej społeczności, pomnóż swoje widoki na nią:

# 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")

Limity szybkości i unikanie blokad

Jedno IP intensywnie ankietujące endpointy JSON szybko zostaje ograniczone — Reddit zwraca 429 i ostatecznie blokuje. Dwie rzeczy utrzymują zdrowie zadania zbierania: tempo (krótkie opóźnienie między żądaniami pokonuje nagły wybuch, który uruchamia ogranicznik) i rozłożenie na IP, aby żaden pojedynczy adres nie niósł całego obciążenia. Przekierowanie przez proxies rezydencjalne pozwala, aby badanie wyglądało jak wielu zwykłych czytelników, a nie jeden agresywny klient, a Scraper API obsługuje tę rotację i tempo za ciebie. Jeśli ciągle napotykasz 429, nasz przewodnik po limitach szybkości i wycofywaniu obejmuje matematyczne tempo.

Co z tym zrobić: słuchanie na dużą skalę

Powód zbierania danych z Reddita to słuchanie. Śledź wzmianki o swojej marce lub konkurencji w społecznościach, analizuj sentyment w drzewach komentarzy, obserwuj niszowy subreddit pod kątem powtarzających się problemów, wokół których warto budować, lub dostrzegaj trend, zanim trafi na główny nurt. Dla wszystkiego poza dopasowaniem słów kluczowych, przepuszczenie surowego tekstu przez etap ekstrakcji LLM zamienia chaotyczne wątki w ustrukturyzowane sygnały — tematy, skargi, prośby o funkcje. Publiczne dane Reddita są dozwolone do zbierania, ale to posty ludzi; jeśli planujesz przetwarzać nazwy użytkowników lub dane osobowe, nasz przegląd legalności skrobania w 2026 roku jest wart przeczytania (informacyjne, nie porada prawna).

Pętla zbierania Reddita: stronicowanie endpointu .json przez wyjście rezydencjalne, usuwanie duplikatów według id posta i używanie danych do słuchania
Stronicuj JSON, rozłóż go na czyste IP, usuń duplikaty według pełnej nazwy, a dane zasilają słuchanie marki lub badania trendów.

Zbieraj dane z Reddita na czystych adresach IP rezydencjalnych

Często zadawane pytania

Czy nadal można zeskrobywać Reddita po zmianach API?

Tak. Oficjalne API jest teraz płatne, ale publiczny endpoint .json za każdą stroną Reddita nadal zwraca ustrukturyzowane dane przez zwykły HTTP GET bez OAuth. Jest ograniczony szybkością, więc tempuj żądania i rozłóż je na IP, ale dla zbierania na skalę badawczą pozostaje to najbardziej praktyczną drogą. old.reddit.com i kanały RSS to dodatkowe lekkie źródła.

Dlaczego Reddit zatrzymuje się na 1,000 postach?

Reddit ogranicza każdą pojedynczą listę — sort subreddita, historię użytkownika, wyszukiwanie — do około 1,000 pozycji na całej platformie; kursor paginacji po prostu się zatrzymuje. To nie twój skrobak. Przejdź przez to, łącząc sorty (new, top, hot, controversial), stosując filtry czasowe, używając wyszukiwania i uruchamiając inkrementalne zadania, które uchwycą posty, zanim się zestarzeją poza oknem.

Czy potrzebuję proxy do zeskrobywania Reddita?

Dla kilku żądań, nie. Dla ciągłego zbierania tak: jedno IP uderzające w endpointy JSON zostaje ograniczone do 429 i potem zablokowane. Proxies rezydencjalne rozkładają obciążenie, więc ruch wygląda jak wielu zwykłych czytelników, a tempo między żądaniami utrzymuje cię poniżej ogranicznika. Razem pozwalają na ciągłe działanie badania bez uruchamiania obrony.

Czy zeskrobywanie Reddita jest legalne?

Zbieranie publicznie widocznych stron jest szeroko uzasadnione, ale warunki Reddita ograniczają zautomatyzowany dostęp, a dane zawierają treści generowane przez użytkowników i nazwy użytkowników. Trzymaj się publicznych danych, respektuj limity szybkości i bądź ostrożny z czymkolwiek, co identyfikuje osoby. To ogólne informacje, nie porada prawna — sprawdź aktualne warunki Reddita i swoją jurysdykcję przed dużym projektem.

Płatne API nie zamknęło drzwi — po prostu przesunęło klamkę. Endpoint .json, paginacja kursora i strategia dla limitu 1,000 pozycji dostarczają ci danych; adresy IP rezydencjalne i uprzejme tempo utrzymują zbieranie w ruchu. Stamtąd to problem słuchania, a Reddit to jeden z najlepszych sygnałów, na które możesz go skierować. Jeśli chcesz również historii cen API na innych platformach, nasz post o danych X/Twitter bez API mapuje ten sam teren.

Zeskrobuj Reddita na dużą skalę z Scraper API