429 Zbyt wiele żądań

Co oznacza kod HTTP 429, jak Google traktuje ograniczanie szybkości i zwalnia crawlowanie, jaki jest wpływ na budżet crawlowania oraz jak skonfigurować serwer do wysyłania 429 bez powodowania usunięcia stron z indeksu.

Opublikowano po raz pierwszy: 27 cze 2026 · Ostatnia aktualizacja: 9 sie 2026 · Advanced
Języki
2 sygnałów dowodowych na tej stronie

429 Too Many Requests to jedyny kod 4xx, którego Google nie traktuje jak błędu klienta. Po zaobserwowaniu wystarczającej liczby odpowiedzi odczytuje go jako sygnał przeciążenia serwera — w tej samej grupie co 5xx — i ogranicza szybkość crawlowania Googlebota w obrębie całego hosta, zamiast usuwać treści. To właściwy, aprobowany przez Google sposób spowolnienia crawlera (nigdy 403 ani 404). Jest to jednak narzędzie krótkoterminowe: ogranicz je do kilku godzin lub 1–2 dni, najlepiej wysyłaj nagłówek Retry-After i przypisz regułę do właściwego ruchu. Utrzymujące się przez wiele dni 429 dla tych samych adresów URL nadal mogą spowodować ich usunięcie z indeksu.

TL;DR — 429 jest jedynym kodem 4xx, który Google traktuje jak 5xx: gdy napotka znaczną liczbę odpowiedzi 500/503/429, odczytuje to jako sygnał przeciążenia serwera i ogranicza szybkość crawlowania Googlebota w obrębie całego hosta, zamiast usuwać treści. To jedyny kod, który Google aprobuje do spowalniania crawlera — nigdy 403 ani 404. Dokumentacja Google podaje wskazówkę dla sytuacji awaryjnych: “a couple of hours, or 1–2 days” (tłumaczenie) „kilka godzin lub 1–2 dni” — nie gwarantuje jednak bezpiecznego okna. Utrzymujące się 429 dla tych samych adresów URL mogą ostatecznie doprowadzić do ich usunięcia z indeksu, a ograniczenie zaczyna ponownie rosnąć (niekoniecznie natychmiast ani w pełni), gdy liczba błędów spada. RFC 6585 mówi, że 429 SHOULD wyjaśniać warunek i MAY zawierać Retry-After — jego wysłanie jest zalecaną praktyką, a nie wymogiem zgodności. Ograniczenie przypisz do właściwego ruchu i zweryfikuj tożsamość crawlera przed dodaniem wyjątków.

Czym jest 429 na poziomie protokołu

Wprost ze specyfikacji, w ujęciu MDN: “The HTTP 429 Too Many Requests client error response status code indicates the client has sent too many requests in a given amount of time. This mechanism of asking the client to slow down the rate of requests is commonly called ‘rate limiting.’” (tłumaczenie) „Kod odpowiedzi klienta HTTP 429 Too Many Requests oznacza, że klient wysłał zbyt wiele żądań w określonym czasie. Ten mechanizm proszenia klienta o spowolnienie tempa żądań nazywa się zwykle ograniczaniem szybkości.” Evidence for this claim A 429 response means the user sent too many requests in a given time, and the response may include Retry-After. Scope: RFC 9110 defines the status and optional Retry-After field; it does not define a universal rate threshold. Confidence: high · Verified: IETF: RFC 9110 §15.5.20 — 429 Too Many Requests

RFC 6585 §4 jest dokładniejszy niż większość jego skrótowych opisów. Reprezentacja 429 SHOULD wyjaśniać warunek i MAY zawierać nagłówek Retry-After, podający klientowi konkretną liczbę sekund (RFC 9110 dopuszcza także datę HTTP), które należy odczekać przed ponowieniem — Retry-After jest zalecaną praktyką, a nie wymogiem zgodności. Specyfikacja nie definiuje też, jak identyfikować klienta ani jak zliczać żądania; pozostawia to wystawcy odpowiedzi (na przykład według adresu IP, sesji, klucza API lub zasobu — to polityka implementacji, nie protokołu). Jest jeszcze jedna łatwa do przeoczenia reguła: RFC 6585 mówi, że odpowiedź 429 nie może być przechowywana przez cache. Jeśli zdrowe źródło zwraca odpowiedź 429 wyglądającą na zcache’owaną lub odtworzoną, problem dotyczy pośrednika (CDN, proxy), a nie ponownego ograniczenia przez źródło.

Zawsze ujmowałem to prosto w swoim poradniku o kodach stanu HTTP i ich wpływie na SEO: 429 to “a form of rate-limiting to protect the server because the client sent too many requests to the server too fast.” (tłumaczenie) „forma ograniczania szybkości, która chroni serwer, ponieważ klient wysłał do niego zbyt wiele żądań zbyt szybko.” Formalnie jest to błąd klienta — klient zrobił coś nieprawidłowego, żądając zbyt wiele. Właśnie tutaj opowieść SEO odchodzi od ujęcia specyfikacji.

Jedyny wyjątek wśród kodów 4xx

Najważniejszy fakt na tej stronie jest taki: Google nie traktuje 429 tak jak reszty rodziny 4xx. Gary Illyes napisał o tym cały wpis na blogu Google Search Central w lutym 2023 r., ponieważ wystarczająco wiele witryn i CDN-ów niewłaściwie używało 404 do ograniczania Googlebota, więc Google musiało powiedzieć im, aby przestali.

Jego zasada brzmi: “The one exception is 429, which stands for ‘too many requests’. This error is a clear signal to any well-behaved robot, including our beloved Googlebot, that it needs to slow down because it’s overloading the server.” (tłumaczenie) „Jedynym wyjątkiem jest 429, który oznacza zbyt wiele żądań. Ten błąd wyraźnie sygnalizuje każdemu poprawnie działającemu robotowi, w tym naszemu ukochanemu Googlebotowi, że musi zwolnić, ponieważ przeciąża serwer.” Z drugiej strony, w referencji kodów stanu Google czytamy: “Don’t use 401 and 403 status codes for limiting the crawl rate. The 4xx status codes, except 429, have no effect on crawl rate.” (tłumaczenie) „Nie używaj kodów 401 i 403 do ograniczania szybkości crawlowania. Kody 4xx, z wyjątkiem 429, nie wpływają na szybkość crawlowania.”

W tym samym momencie, gdy 403 i 404 mogą spowodować usunięcie treści z wyszukiwarki, 429 powoduje tymczasowe spowolnienie. Google zalicza go dosłownie do błędów serwera: “Google’s crawlers treat the 429 status code as a signal that the server is overloaded, and it’s considered a server error.” (tłumaczenie) „Crawlery Google traktują kod 429 jako sygnał przeciążenia serwera i jest on uznawany za błąd serwera.” Evidence for this claim Google treats 429 as a server-overload signal that reduces crawl rate and recommends 429, 500, or 503 for temporary crawl reduction instead of other 4xx codes. Scope: Google's guidance covers Google crawler behavior and short-term overload; it does not promise indexing preservation during prolonged unavailability. Confidence: high · Verified: Google: Reduce Google crawl rate

To sprawia, że 429 jest użytecznym odpowiednikiem 503 Service Unavailable (tradycyjnego sygnału konserwacji lub tymczasowej niedostępności) — i dokładnym przeciwieństwem 403 Forbidden, który jest niewłaściwym narzędziem do ograniczania szybkości, mimo że wiele zapór domyślnie go używa.

Wpływ na szybkość crawlowania obejmuje cały host — po przekroczeniu progu

Mieszają się tu dwa różne zakresy, więc warto je rozdzielić. To, jak Ty zliczasz i kluczujesz limit — według adresu IP, sesji, klucza API, zasobu czy serwera — jest Twoją polityką; specyfikacja HTTP tego nie definiuje. To, co Google robi z błędami, które obserwuje, jest odrębnym, udokumentowanym zachowaniem zależnym od wolumenu, a nie od pojedynczej odpowiedzi: “Google’s crawling infrastructure reduces your site’s crawling rate when it encounters a significant number of URLs with 500, 503, or 429 HTTP response status codes.” (tłumaczenie) „Infrastruktura crawlująca Google zmniejsza szybkość crawlowania witryny, gdy napotyka znaczną liczbę adresów URL z kodami odpowiedzi HTTP 500, 503 lub 429.” Po osiągnięciu tego progu “the reduced crawl rate affects the whole hostname of your site (for example, subdomain.example.com), both the crawling of the URLs that return errors, as well as the URLs that return content.” (tłumaczenie) „Zmniejszona szybkość crawlowania obejmuje cały host, zarówno adresy URL zwracające błędy, jak i te zwracające treść.”

Innymi słowy, jeśli przy rzeczywistym wolumenie zwrócisz 429 dla części stron (na przykład ciężkiej ścieżki API), Googlebot zwolni crawlowanie całego hosta — także stron, które nadal zwracają 200. Zwykle właśnie o to chodzi, gdy celem jest zmniejszenie całkowitego obciążenia. Jednak pojedyncza odpowiedź 429 na jednej ścieżce sama w sobie nie ustanawia efektu obejmującego cały host — własne sformułowanie Google mówi o “a significant number” (tłumaczenie) „znacznej liczbie” odpowiedzi błędów, a nie o jednej odpowiedzi. Evidence for this claim When Google encounters a significant number of 500, 503, or 429 responses, its documented crawl-rate reduction affects the whole hostname, including error URLs and URLs still returning content; one isolated 429 does not establish that site-wide effect. Scope: hostname crawl-load incidents Confidence: high · Verified: Reduce Google crawl rate

Wskazówka 1–2 dni — kiedy 429 staje się ryzykowny

429 jest sygnałem krótkoterminowym, a Google podaje dla niego konkretną wskazówkę dotyczącą sytuacji awaryjnych — nie gwarantowane bezpieczne okno ani twardą granicę. W dokumentacji „reduce crawl rate” czytamy: “If you need to urgently reduce the crawl rate for short period of time (for example, a couple of hours, or 1-2 days), then return 500, 503, or 429 HTTP response status code instead of 200 to the crawl requests.” (tłumaczenie) „Jeśli pilnie potrzebujesz krótkotrwale zmniejszyć szybkość crawlowania, na przykład przez kilka godzin lub 1–2 dni, zwróć dla żądań crawlowania kod 500, 503 lub 429 zamiast 200.”

Przekroczenie tego czasu oznacza większe ryzyko, choć Google opisuje je jako możliwość, a nie obietnicę: “We don’t recommend that you do this for a long period of time (meaning, longer than 1-2 days) as it may have a negative effect on how your site appears in Google products… if Googlebot observes these status codes on the same URL for multiple days, the URL may be dropped from Google’s index.” (tłumaczenie) „Nie zalecamy robić tego przez długi czas, czyli dłużej niż 1–2 dni, ponieważ może to negatywnie wpłynąć na wygląd witryny w produktach Google; jeśli Googlebot obserwuje te kody dla tego samego adresu URL przez wiele dni, adres może zostać usunięty z indeksu Google.” Referencja kodów stanu mówi to samo o 5xx i 429 razem: “already indexed URLs are preserved in the index, but eventually dropped.” (tłumaczenie) „Adresy URL już zindeksowane pozostają w indeksie, ale ostatecznie są usuwane.”

Uczciwie ujęty model ryzyka jest taki: krótkotrwały 429 mieści się w oknie zalecanym przez Google dla użycia awaryjnego; utrzymujący się 429 dla tych samych adresów URL przez wiele dni to moment, gdy własne sformułowania Google przechodzą w „może” i „ostatecznie usunięty” — udokumentowane ryzyko, a nie gwarantowany wynik w żadną stronę. To ta sama dynamika co przy przedłużającym się 503.

Szybkość crawlowania odzyskuje się automatycznie

Uspokajająca druga strona: po witrynie nie ciągnie się żadna flaga kary. Gdy liczba błędów spadnie, Google mówi, że “the crawl rate will automatically start increasing again.” (tłumaczenie) „Szybkość crawlowania automatycznie zacznie ponownie rosnąć.” Nie trzeba niczego zgłaszać ani ponownie prosić o crawlowanie. Zwróć jednak uwagę na dokładne sformułowanie — Google mówi “starts increasing,” (tłumaczenie) „zaczyna rosnąć”, a nie “instantly returns to your prior rate.” (tłumaczenie) „natychmiast wraca do poprzedniej szybkości”. Traktuj odzyskiwanie jako udokumentowany kierunek bez ustalonego harmonogramu i gwarantowanego punktu końcowego, a nie jako SLA. Evidence for this claim Google says crawl rate automatically starts increasing after the number of overload responses falls; this describes direction, not an immediate return, fixed recovery time, or guaranteed prior crawl rate. Scope: hostname crawl-load incidents Confidence: high · Verified: Reduce Google crawl rate

(Dla kontrastu istnieje problem odwrotny — chcesz, aby Google na stałe crawlowalo Cię mniej. Jeśli wysyłanie błędów nie jest możliwe, Google mówi, aby “file a special request to report a problem with unusually high crawl rate” (tłumaczenie) „złożyć specjalne zgłoszenie problemu z niezwykle wysoką szybkością crawlowania” — jest to ręczna ścieżka, która może potrwać kilka dni i nie daje gwarancji. Odzyskiwanie nie wiąże się z takim utrudnieniem.)

Jak Bing obsługuje 429

Powszechnie opisuje się, że Bingbot zachowuje się podobnie — sygnały przeciążenia 429/500/503 powodują wycofanie się Bingbota — choć w tej rundzie badań nie udało mi się niezależnie potwierdzić aktualnego brzmienia na stronach pomocy Binga (są to aplikacje SPA renderowane przez JavaScript, które nie udostępniły pobieralnego tekstu statycznego). Traktuj więc twierdzenie o zgodności jako informację branżową, a nie coś zweryfikowanego w aktualnej dokumentacji Binga. Bing potwierdza natomiast we własnych historycznych wytycznych dwa proaktywne mechanizmy, których Google nie oferuje w tej samej formie:

  • Crawl Control w Bing Webmaster Tools — siatkę żądań na sekundę, w której ustawiasz szybkość Bingbota według pory dnia.
  • Dyrektywę crawl-delay w robots.txt. Aktualne wytyczne Binga opisują wartości od 1 do 20 sekund. Jest to rozwiązanie właściwe dla Binga; nie ogranicza Googlebota.

W Bingu możesz więc proaktywnie ograniczać szybkość przez crawl-delay lub Crawl Control, zamiast reagować kodami stanu. (Google wycofał własny ręczny suwak szybkości crawlowania w 2024 r. i obecnie całkowicie polega na odpowiedziach serwera.)

Uwaga: aktualne strony Binga dotyczące Crawl Control i błędów crawlowania są renderowane przez JavaScript; powyższe sformułowanie o crawl-delay pochodzi z własnego wpisu na blogu Binga z 2009 r. i stanowi nadal honorowane wytyczne, a nie zrzut obecnego interfejsu. Twierdzenie o podobnym działaniu 429 oraz aktualny stan crawl-delay/Crawl Control wymagają ponownego sprawdzenia w bieżącej dokumentacji Binga — przed cytowaniem ich jako aktualnych potwierdź dokładne brzmienie w Bing Webmaster Tools.

Kiedy celowo wysłać 429

Uzasadnione powody, aby celowo zwrócić 429:

  • Awaryjne obciążenie serwera — skok ruchu, nieudana migracja lub awaria, gdy trzeba natychmiast spowolnić Googlebota na kilka godzin.
  • Ochrona API i punktów końcowych innych niż HTML przed nadużyciami crawlerów i botów — crawlery wyszukiwarek, zewnętrzne crawlery SEO (Ahrefs, Screaming Frog) i scrapery mogą trafić na limity mające zatrzymać nadużycia.

Do czego 429 nie służy: do trwałego blokowania botów, których w ogóle nie chcesz wpuszczać. Jeśli czegoś nigdy nie chcesz crawlowac, użyj zakazu w robots.txt, a nie 429. Jeśli chcesz zachować stronę, ale wyłączyć ją z indeksu, użyj noindex. 429 oznacza tylko „później”, a nie „nigdy”.

Niezamierzone 429 — typowi winowajcy

Gdy odpowiedzi 429 pojawiają się w raporcie indeksowania stron lub statystykach crawlowania GSC, mimo że ich nie skonfigurowałeś, źródłem jest zwykle jedna z poniższych rzeczy — nie znam dobrych dowodów na uniwersalny ranking częstości, więc potraktuj to jako listę hipotez do potwierdzenia lub odrzucenia, a nie diagnozę:

  • Błędnie działające reguły WAF / zapory dotyczące prawidłowych zakresów adresów IP crawlerów.
  • Zbyt ciasne domyślne limity współdzielonego hostingu lub CDN-u dla rzeczywistego crawlowania.
  • Narzędzia zarządzania botami błędnie klasyfikujące Googlebota lub Bingbota jako ruch nadużywający.
  • Agresywne oprogramowanie pośredniczące do ograniczania szybkości przeznaczone do ochrony API, które przechwytuje własne crawlery.

Zanim zmienisz próg lub napiszesz regułę zwalniającą prawdziwe boty wyszukiwarek, najpierw ustal pochodzenie odpowiedzi — nie zgaduj, która warstwa ją wystawiła. Pobierz surowe nagłówki odpowiedzi, dokładne wiersze logu żądania (nie podsumowanie pulpitu), identyfikator uruchomionej reguły lub strefy limitu, klucz klienta użyty do zliczania (IP, sesja, klucz API), trasę, lokalizację POP-u CDN-u lub krawędzi oraz przedział czasu. Ten zestaw pokaże, która warstwa rzeczywiście wystawiła 429 i co zliczała — dopiero wtedy ma sens poluzowanie limitu albo dodanie wyjątku. Tożsamość crawlera zweryfikuj przez odwrotne i ponowne wyszukiwanie DNS (oficjalna metoda Google), a nie tylko przez ciąg user-agenta — fałszywe user-agenty „Googlebot” są częste. Karta Scripts zawiera dokładne polecenia.

Skrócona wersja planu działania

  1. Użyj 429 lub 503 z Retry-After, aby spowolnić crawlera — nigdy 403 ani 404.
  2. Ogranicz to do godzin lub 1–2 dni — później adresy URL mogą zostać usunięte.
  3. Pamiętaj, że ograniczenie obejmuje cały host i odzyskuje się automatycznie, gdy błędy ustaną.
  4. Ogranicz regułę do właściwego ruchu i zweryfikuj tożsamość crawlera przed zwolnieniem botów z limitu.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.