Häufige Probleme

Lösungen für die häufigsten Probleme bei der Nutzung der FourA API.

Leere oder unvollständige Inhalte

Symptom: Die API gibt einen Status 200 zurück, aber das Feld data ist leer oder es fehlen erwartete Inhalte.

Ursache: Die Zielseite nutzt JavaScript, um Inhalte nach dem ersten Laden der Seite zu rendern.

Lösung: Wechsle vom single-endpoint zum browser-endpoint. Nutze checkText, um zu prüfen, ob der Inhalt geladen wurde:

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"
  }'

Hinweis: Der browser-endpoint gibt Inhalte im Feld body zurück (nicht in data).

403 Forbidden oder Captcha-Seiten

Symptom: Die API gibt HTML zurück, das eine CAPTCHA-Abfrage oder eine Seite mit verweigertem Zugriff enthält.

Ursache: Die Zielseite hat den Request als automatisiert erkannt und blockiert.

Lösung: Nutze den proxy-endpoint für automatische IP-Rotation:

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
    }
  }'

Wenn das Problem weiterhin besteht, erhöhe maxTries, um der Proxy-Rotation mehr Versuche zu ermöglichen.

Timeout-Fehler

Symptom: Requests schlagen mit einem Timeout-Fehler fehl.

Ursache: Das Laden der Zielseite dauert länger als der konfigurierte Timeout.

Lösung: Erhöhe timeout_ms (Standard ist 15s für single, 30s für browser, 45s für 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
  }'

Prüfe bei browser-Requests auch, ob dein checkText-Wert tatsächlich auf der Seite erscheint. Ein Tippfehler führt immer zu einem Timeout.

429 Too Many Requests (RPM-Limit)

Symptom: Die API gibt den Status 429 mit der Meldung „rate limit exceeded“ zurück.

Ursache: Du hast dein Limit für Requests pro Minute (RPM) überschritten. Dies unterscheidet sich von Concurrency-Limits (siehe 503 unten).

Lösung: Nutze das Feld retryAfter aus der Response, um vor dem nächsten Versuch die richtige Zeitspanne zu warten:

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

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

Prüfe deine aktuelle Nutzung im Dashboard, um deine Rate-Limits einzusehen.

503 Service Unavailable

Symptom: Die API gibt den Status 503 zurück.

Ursache: Dies geschieht in zwei Fällen:

  1. Concurrency-Limit erreicht. Du hast zu viele gleichzeitige Requests laufen. Dies unterscheidet sich von 429, was die Requests pro Minute begrenzt. Bei 503 hast du dein RPM-Limit nicht überschritten, aber die maximale Anzahl an gleichzeitig laufenden Requests erreicht.
  2. Dienst vorübergehend deaktiviert. Es wird gerade ein Wartungsfenster durchgeführt.

Beide Fälle enthalten ein retryAfter-Feld in der Response.

Lösung: Warte die in retryAfter angegebenen Sekunden und versuche es erneut:

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

Wenn du regelmäßig an 503-Concurrency-Limits stößt, reduziere die Anzahl paralleler Requests in deiner Scraping-Pipeline oder prüfe das Concurrency-Limit deines Tarifs im Dashboard.

401 Authentifizierungsfehler

Symptom: Jeder Request gibt 401 Unauthorized zurück.

Checkliste:

  1. Stelle sicher, dass der Header X-API-Key: YOUR_API_KEY lautet (nicht Authorization: Bearer oder Api-Key)
  2. Prüfe deinen API-Key auf zusätzliche Leerzeichen oder Zeilenumbrüche
  3. Erstelle im Dashboard einen neuen Key, falls der aktuelle kompromittiert sein könnte

Unerwartetes HTML statt JSON

Symptom: Du hast JSON von der Zielseite erwartet, aber HTML erhalten.

Ursache: Die Zielseite liefert je nach Header möglicherweise unterschiedliche Inhalte aus.

Lösung: Füge einen Accept-Header hinzu und aktiviere unblocker für realistische Browser-Header:

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
  }'

Du kannst auch tryJsonData auf true setzen, damit FourA JSON-Responses automatisch parst.

Immer noch Probleme?

Wenn keine der oben genannten Lösungen hilft:

  1. Prüfe die Statusseite auf aktuelle Störungen
  2. Überprüfe deine Request-Metriken im Dashboard
  3. Kontaktiere den Support unter support@foura.ai mit deinen Request-Details

Nächste Schritte

Aktualisiert: 27. April 2026