Typowe problemy

Rozwiązania najczęstszych problemów podczas korzystania z API FourA.

Pusta lub niekompletna zawartość

Objaw: API zwraca status 200, ale pole data jest puste lub brakuje w nim oczekiwanej zawartości.

Przyczyna: Strona docelowa używa JavaScript do renderowania zawartości po początkowym załadowaniu strony.

Rozwiązanie: Przełącz się z endpointu single na endpoint browser. Użyj checkText, aby zweryfikować, czy zawartość się załadowała:

curl -X POST https://eu.api.foura.ai/api/browser/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/products",
    "timeout_ms": 15000,
    "checkText": "product-list"
  }'

Uwaga: endpoint browser zwraca zawartość w polu body (a nie data).

403 Forbidden lub strony z CAPTCHA

Objaw: API zwraca HTML zawierający wyzwanie CAPTCHA lub stronę z odmową dostępu.

Przyczyna: Strona docelowa wykryła request jako zautomatyzowany i go zablokowała.

Rozwiązanie: Użyj endpointu proxy do automatycznej rotacji IP:

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 5,
    "request": {
      "method": "GET",
      "url": "https://example.com/prices",
      "unblocker": true
    }
  }'

Jeśli problem nadal występuje, zwiększ maxTries, aby dać rotacji proxy więcej prób.

Błędy timeoutu

Objaw: Requesty kończą się błędem timeoutu.

Przyczyna: Ładowanie strony docelowej trwa dłużej niż skonfigurowany timeout.

Rozwiązanie: Zwiększ timeout_ms (domyślnie to 15s dla single, 30s dla browser, 45s dla proxy):

curl -X POST https://eu.api.foura.ai/api/browser/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://slow-site.com",
    "timeout_ms": 60000
  }'

W przypadku requestów browser upewnij się też, czy wartość checkText rzeczywiście pojawia się na stronie. Literówka zawsze spowoduje timeout.

429 Too Many Requests (limit RPM)

Objaw: API zwraca status 429 z komunikatem "rate limit exceeded".

Przyczyna: Przekroczono limit zapytań na minutę (RPM). Różni się to od limitów współbieżności (patrz błąd 503 poniżej).

Rozwiązanie: Użyj pola retryAfter z odpowiedzi, aby odczekać odpowiednią ilość czasu przed ponowną próbą:

import time
import requests

def make_request(endpoint_url, payload, retries=3):
    for i in range(retries):
        resp = requests.post(
            endpoint_url,
            headers={"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
            json=payload
        )
        if resp.status_code == 429:
            body = resp.json()
            wait = body.get("retryAfter", 2 ** i)
            time.sleep(wait)
            continue
        return resp
    raise Exception("Rate limit not resolved after retries")

# Example: single request
make_request(
    "https://eu.api.foura.ai/api/single/",
    {"method": "GET", "url": "https://example.com"}
)

Sprawdź swoje aktualne użycie w Dashboard, aby zobaczyć swoje limity rate limit.

503 Service Unavailable

Objaw: API zwraca status 503.

Przyczyna: Dzieje się tak w dwóch przypadkach:

  1. Osiągnięto limit współbieżności. Masz uruchomionych zbyt wiele jednoczesnych requestów. Różni się to od błędu 429, który ogranicza liczbę requestów na minutę. Przy 503 nie przekraczasz limitu RPM, ale osiągasz maksymalną liczbę requestów, które mogą być przetwarzane w tym samym czasie.
  2. Usługa tymczasowo niedostępna. Trwa przerwa konserwacyjna.

W obu przypadkach odpowiedź zawiera pole retryAfter.

Rozwiązanie: Odczekaj liczbę sekund wskazaną w retryAfter, a następnie spróbuj ponownie:

import time
import requests

def make_request_with_retry(endpoint_url, payload, retries=3):
    for i in range(retries):
        resp = requests.post(
            endpoint_url,
            headers={"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
            json=payload
        )
        if resp.status_code in (429, 503):
            body = resp.json()
            wait = body.get("retryAfter", 2 ** i)
            time.sleep(wait)
            continue
        return resp
    raise Exception("Request not resolved after retries")

Jeśli regularnie napotykasz błędy współbieżności 503, zmniejsz liczbę równoległych requestów w swoim procesie scrapowania lub sprawdź limit współbieżności swojego planu w Dashboard.

Błędy uwierzytelniania 401

Objaw: Każdy request zwraca błąd 401 Unauthorized.

Lista kontrolna:

  1. Upewnij się, że header to X-API-Key: YOUR_API_KEY (a nie Authorization: Bearer lub Api-Key)
  2. Sprawdź, czy w kluczu API nie ma dodatkowych spacji lub znaków nowej linii
  3. Wygeneruj nowy klucz w Dashboard, jeśli obecny mógł zostać ujawniony

Nieoczekiwany HTML zamiast JSON

Objaw: Oczekiwano formatu JSON ze strony docelowej, ale otrzymano HTML.

Przyczyna: Strona docelowa może serwować inną zawartość w zależności od nagłówków.

Rozwiązanie: Dodaj header Accept i włącz opcję unblocker, aby uzyskać realistyczne nagłówki przeglądarki:

curl -X POST https://eu.api.foura.ai/api/single/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "GET",
    "url": "https://api.example.com/data",
    "headers": [["Accept", "application/json"]],
    "unblocker": true
  }'

Możesz również ustawić tryJsonData na true, aby FourA automatycznie parsował odpowiedzi JSON.

Nadal masz problem?

Jeśli żadne z powyższych rozwiązań nie pomogło:

  1. Sprawdź status page pod kątem trwających awarii
  2. Przejrzyj metryki swoich requestów w Dashboard
  3. Skontaktuj się ze wsparciem pod adresem support@foura.ai, podając szczegóły swojego requestu

Kolejne kroki

Aktualizacja: 27 kwietnia 2026