# Jak zeskrobać dane z Twitcha: widzowie, kategorie i sygnały sponsorskie

Oficjalne API Helix ogranicza to, co możesz pobrać, i ukrywa dane, których badacze faktycznie potrzebują. Oto jak uzyskać liczbę widzów, całkowitą liczbę obserwujących i trendy kategorii z własnego endpointu GraphQL Twitcha — oraz proxy, które to umożliwiają.

Twitch posiada kopalnię publicznych danych — liczby widzów na żywo, rankingi kategorii, całkowite liczby obserwujących, klipy, tytuły transmisji i tagi — które interesują marketerów, analityków i łowców sponsorów. Problem polega na tym, że oficjalne API Helix daje ci wyselekcjonowany fragment tych danych, z ograniczeniami szybkości i brakującymi metrykami, o które ludzie najczęściej pytają (jak liczba obserwujących na grę czy historyczne trendy widzów). Ten przewodnik opisuje, jak zeskrobać resztę: co API ci nie da, jak to uzyskać z własnych webowych endpointów Twitcha oraz konfigurację proxy, która zapobiega blokadom skrobaka.

## Gdzie kończy się API Helix

Helix to oficjalna droga i powinieneś ją preferować tam, gdzie cię obejmuje: jest stabilna, udokumentowana i zwraca czyste dane o transmisjach, użytkownikach, grach i klipach. Ale ma swoje ograniczenia. Wymaga rejestracji aplikacji i OAuth, mierzy cię przeciwko punktowemu wiadru (domyślnie 800 punktów na minutę) i po prostu nie udostępnia niektórych rzeczy, których ludzie chcą — nie możesz zapytać "ile obserwujących ma główny kanał tej gry" ani odtworzyć krzywej liczby widzów z ostatniej godziny. W momencie, gdy twoje pytanie wykracza poza jego schemat, skrobiesz.

Zeskrobywanie Twitcha oznacza pobieranie tych samych publicznych danych — liczb, które możesz zobaczyć na stronie bez logowania — za pomocą kodu zamiast ręcznie. Nic tutaj nie dotyka danych prywatnych ani uwierzytelnionych stron; to katalog, strony kategorii i publiczne widoki kanałów, które widzi każdy odwiedzający.

![Oficjalne API Twitch Helix obok publicznego endpointu GraphQL, którego używa serwis: Helix wymaga OAuth i nalicza 800 punktów na minutę, GraphQL zwraca pełniejsze dane bez logowania; karta pokazuje, że Helix jest stabilne, ale nie podaje liczby obserwujących w podziale na kategorie ani historii widzów minuta po minucie.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335174/blog/generated/qp-b9-038-diag1.png)
*Helix jest stabilny, ale wyselekcjonowany i z ograniczeniami szybkości; publiczny endpoint GraphQL, którego używa sama strona, zwraca pełniejsze dane bez logowania.*

## Szybka ścieżka: endpoint GraphQL Twitcha

Własny klient webowy Twitcha komunikuje się z publicznym endpointem GraphQL, używając dobrze znanego Client-ID, który jest zawarty w JavaScripcie strony. Bezpośrednie uderzenie w niego to najszybszy, najlżejszy sposób na zeskrobywanie: bez logowania, bez przeglądarki bezgłowej, strukturalny JSON od razu z powrotem. Wysyłasz zapytanie z nagłówkiem publicznego Client-ID i otrzymujesz transmisje, liczby widzów, tagi i klipy w jednym wywołaniu. Ponieważ to to samo API, którego używa strona, zwraca dokładnie to, co widzi odwiedzający — i znacznie więcej na jedno zapytanie niż zeskrobywanie strony.

```python
import requests

PROXY = "http://USER:PASS@residentialpremium.quantumproxies.io:8080"
proxies = {"http": PROXY, "https": PROXY}

# public web Client-ID shipped in Twitch's own frontend
HEADERS = {"Client-ID": "kimne78kx3ncx6brgo4mv6wki5h1ko", "Content-Type": "application/json"}

query = {
    "query": """
      query($name: String!) {
        user(login: $name) {
          displayName
          followers { totalCount }
          stream { title viewersCount game { name } }
        }
      }""",
    "variables": {"name": "somestreamer"},
}

r = requests.post("https://gql.twitch.tv/gql", json=query,
                  headers=HEADERS, proxies=proxies, timeout=15)
print(r.json()["data"]["user"])
```

Jedno zapytanie zwraca nazwę wyświetlaną, całkowitą liczbę obserwujących i — jeśli kanał jest na żywo — tytuł transmisji, obecnych widzów i kategorię. Ta całkowita liczba obserwujących to dokładnie pole, które API Helix utrudnia uzyskanie na dużą skalę, a tutaj to jedno zapytanie.

Obiekt kanału jest bogaty poza podstawy. Typowy rekord zawiera numeryczny `channelId`, slug `login` i `displayName`, opis profilu, czy kanał ma status partnera i — dla kanałów na żywo — aktualną grę, liczbę widzów i tagi transmisji. Tagi mają większe znaczenie, niż się wydaje: to one pozwalają segmentować streamerów według języka, regionu lub typu treści, gdy budujesz krótką listę do kontaktu. Pobierz to samo zapytanie dla listy loginów i masz porównywalny zestaw danych — wielkość obserwujących, status partnera, kategorię na żywo — w jednym przejściu, bez ładowania stron dla każdego kanału.

## Katalog: trendy kategorii i widzów

Dla sygnałów na poziomie rynku — które gry są popularne, jak zmienia się oglądalność w ciągu dnia — źródłem jest katalog kategorii. Wzorzec, który dobrze działa, to robienie migawki strony kategorii (na przykład Just Chatting) w stałych odstępach czasu i przechowywanie najlepszych transmisji z ich tytułami, streamerami i liczbą widzów plus znacznik czasu. Rób to co 15 minut, a zbudujesz krzywe trendów widzów i rankingi kategorii, których oficjalne API nigdy ci nie przekaże. Lekki harmonogram i przeglądarka lub zapytanie GraphQL to wszystko, czego potrzeba; dyscyplina tkwi w interwale i przechowywaniu, nie w pobieraniu.

```python
import requests, time
from datetime import datetime, timezone

def snapshot_category(slug):
    payload = {
        "query": "query($slug: String!){ game(slug:$slug){ streams(first:30){ edges{ node{ title viewersCount broadcaster{ login } } } } } }",
        "variables": {"slug": slug},
    }
    r = requests.post("https://gql.twitch.tv/gql", json=payload,
                      headers=HEADERS, proxies=proxies, timeout=15)
    ts = datetime.now(timezone.utc).isoformat()
    rows = []
    for e in r.json()["data"]["game"]["streams"]["edges"]:
        n = e["node"]
        rows.append({"ts": ts, "login": n["broadcaster"]["login"],
                     "title": n["title"], "viewers": n["viewersCount"]})
    return rows

# run on a schedule (e.g. every 15 min) and append to storage
while True:
    save(snapshot_category("just-chatting"))
    time.sleep(900)
```

[Zdobądź proxy rezydencjalne do zeskrobywania Twitcha](https://quantumproxies.io/residential-proxies)

![Zaplanowany monitor Twitch w czterech krokach: odczytaj 30 najpopularniejszych transmisji z katalogu kategorii, wyślij żądanie przez nowe rotujące IP rezydencyjne, zapisz migawkę JSON z loginem, tytułem, liczbą widzów i znacznikiem czasu i dopisz ją do magazynu szeregów czasowych; karta pokazuje 15-minutowy interwał migawek.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335174/blog/generated/qp-b9-038-diag2.png)
*Zaplanowana migawka przez rotujące IP rezydencjalne zamienia dane katalogu publicznego w trendy widzów i sygnały sponsorskie.*

## Dlaczego proxy rezydencjalne mają tutaj znaczenie

Twitch monitoruje ruch jak każda duża platforma. Zaplanowany skrobak działający z jednego IP centrum danych co 15 minut to oczywisty wzorzec, a endpoint GraphQL zacznie zwracać błędy lub puste wyniki, gdy cię oznaczy. IP rezydencjalne od prawdziwych ISP wtapiają się w normalny ruch widzów, a ich rotacja przy każdym uruchomieniu rozprasza zapytania, dzięki czemu żaden pojedynczy adres nie wygląda jak bot. Dla badań wrażliwych na lokalizację — niektóre kategorie i klipy pojawiają się inaczej w zależności od regionu — będziesz także potrzebować [wyjść z konkretnych krajów](https://quantumproxies.io/locations), które pula rezydencjalna w ponad 200 krajach ci zapewnia. Mobilne IP są najsilniejszą opcją dla najbardziej agresywnych celów; nasz [przewodnik po proxy dla platform społecznościowych](https://quantumproxies.io/blog/using-proxies-for-social-media-automation-instagram-tiktok-x) opisuje, kiedy po nie sięgnąć.

## Co możesz z tym zbudować

Przypadki użycia podążają za danymi. Liczby obserwujących i obecność w kategoriach napędzają odkrywanie influencerów i poszukiwanie sponsorów — znajdowanie odpowiednich streamerów przed kampanią, odpowiednio dobranych. Migawki trendów widzów zasilają badania branży gier: które tytuły zyskują, kiedy publiczność osiąga szczyt, jak premiera wypada godzina po godzinie. Dane klipów i tytułów wspierają analizę treści i trendów. Komercyjne skrobaki Twitcha pobierają około pięciu dolarów za tysiąc wyników za to; uruchomienie tego samodzielnie z własnymi proxy to ułamek tej kwoty, gdy już masz pipeline, i posiadasz surowe dane. To samo podejście migawki i różnicowania zasila nasze inne przewodniki platformowe, jak [wydobywanie danych z YouTube poza limitem API](https://quantumproxies.io/blog/scrape-youtube-data-comments).

## Często zadawane pytania

### Czy można zeskrobać dane z Twitcha?

Tak — publiczne dane, takie jak tytuły transmisji, liczby widzów, całkowite liczby obserwujących, kategorie i klipy są widoczne bez logowania i można je zbierać za pomocą kodu. Własny klient webowy Twitcha używa publicznego endpointu GraphQL, który można zapytać bezpośrednio. Szanuj zasady platformy, unikaj danych prywatnych lub uwierzytelnionych i dostosuj tempo swoich zapytań.

### Dlaczego nie użyć po prostu API Twitch Helix?

Używaj Helix tam, gdzie pasuje — jest oficjalne i stabilne. Ale wymaga OAuth, mierzy cię przeciwko wiadru 800 punktów na minutę i pomija pola, których badacze chcą, takie jak liczby obserwujących powiązane z kategoriami czy historia widzów minuta po minucie. Gdy twoje pytanie wykracza poza jego schemat, zeskrobywanie publicznych webowych endpointów wypełnia lukę.

### Czy potrzebuję proxy, aby zeskrobać Twitcha?

Dla jednorazowego zapytania, nie. Dla czegokolwiek zaplanowanego lub na dużą skalę, tak. Powtarzający się wzorzec z jednego IP zostaje oznaczony, a endpoint zwraca błędy lub puste dane. Rotujące proxy rezydencjalne rozpraszają zapytania na adresy prawdziwych ISP, dzięki czemu twój monitor nadal zwraca pełne wyniki i pozwala na pobieranie widoków specyficznych dla regionu.

### Jak często mogę robić migawki danych z Twitcha?

Dla trendów widzów, co 10-15 minut to dobry balans — wystarczająco często, aby zobaczyć zmiany w ciągu dnia bez obciążania endpointu. Dodaj mały losowy jitter do interwału, rotuj swoje wyjściowe IP przy każdym uruchomieniu i przechowuj znaczniki czasu, aby móc odtworzyć trendy. Częstsze interwały zwiększają ryzyko blokady przy niewielkim dodatkowym sygnale.

Publiczne dane Twitcha są znacznie bogatsze niż to, co ujawnia API Helix, a jego własny endpoint GraphQL zwraca większość z nich w pojedynczych zapytaniach — całkowite liczby obserwujących, liczby widzów, katalogi kategorii, klipy. Owiń to w uprzejmy harmonogram, przekieruj przez rotujące IP rezydencjalne, a masz monitor, który ujawnia trendy i sygnały sponsorskie, które oficjalne API trzyma poza zasięgiem.

[Zacznij zeskrobywać Twitcha z QuantumProxies](https://quantumproxies.io/residential-proxies)
