よくある問題

FourA APIを使用する際、最もよく発生する問題の解決策です。

コンテンツが空、または不完全な場合

症状: APIはステータス200を返しますが、dataフィールドが空であるか、期待されるコンテンツが含まれていません。

原因: 対象のページが、初期ロードの後にJavaScriptを使用してコンテンツをレンダリングしています。

解決策: single endpointからbrowser endpointに切り替えます。checkTextを使用して、コンテンツがロードされたことを確認してください:

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

注意: browser endpointは、コンテンツを(dataではなく)bodyフィールドで返します。

403 ForbiddenまたはCaptchaページ

症状: APIが、captchaチャレンジまたはアクセス拒否ページを含むHTMLを返します。

原因: 対象のサイトがリクエストを自動化されたものと検知し、ブロックしました。

解決策: 自動IPローテーションを行うためにproxy endpointを使用します:

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

問題が解決しない場合は、maxTriesを増やしてproxyローテーションの試行回数を増やしてください。

タイムアウトエラー

症状: リクエストがタイムアウトエラーで失敗します。

原因: 対象のページのロードに、設定されたタイムアウト以上の時間がかかっています。

解決策: timeout_msを増やします(デフォルトはsingleが15秒、browserが30秒、proxyが45秒です):

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

browserリクエストの場合は、checkTextの値が実際にページ上に表示されていることも確認してください。タイポがあると、常にタイムアウトが発生します。

429 Too Many Requests (RPM制限)

症状: APIが429ステータスと「rate limit exceeded」メッセージを返します。

原因: 1分あたりのリクエスト数(RPM)制限を超過しました。これは同時実行数制限(以下の503を参照)とは異なります。

解決策: レスポンスのretryAfterフィールドを使用して、適切な時間待機してから再試行してください:

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

Dashboardで現在の使用状況を確認し、rate limitを確認してください。

503 Service Unavailable

症状: APIが503ステータスを返します。

原因: これは次の2つのケースで発生します。

  1. 同時実行数制限への到達。 同時に実行されているリクエストが多すぎます。これは、1分あたりのリクエスト数を制限する429とは異なります。503の場合、RPMは超過していませんが、同時に実行できるリクエスト数が上限に達しています。
  2. サービスの一時的な停止。 メンテナンスが実施されています。

どちらのケースでも、レスポンスにretryAfterフィールドが含まれます。

解決策: retryAfter秒間待機してから、再試行してください:

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

503の同時実行数制限に頻繁に達する場合は、スクレイピングパイプライン内の並行リクエスト数を減らすか、Dashboardでプランの同時実行数制限を確認してください。

401 Authenticationエラー

症状: すべてのリクエストが401 Unauthorizedを返します。

チェックリスト:

  1. headerがX-API-Key: YOUR_API_KEYであることを確認してください(Authorization: BearerApi-Keyではありません)
  2. API keyに余分な空白や改行が含まれていないか確認してください
  3. 現在のキーが漏洩した可能性がある場合は、Dashboardから新しいキーを作成してください

JSONではなく予期しないHTMLが返される場合

症状: 対象サイトからJSONを期待していましたが、HTMLを受信しました。

原因: 対象ページが、headersに基づいて異なるコンテンツを返している可能性があります。

解決策: Accept headerを追加し、現実的なブラウザheadersを適用するためにunblockerを有効にします:

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

tryJsonDatatrueに設定して、FourAにJSONレスポンスを自動的にパースさせることもできます。

解決しない場合

上記の解決策のいずれも機能しない場合:

  1. ステータスページで現在発生しているインシデントを確認してください
  2. Dashboardでリクエストのメトリクスを確認してください
  3. リクエストの詳細を添えて、support@foura.aiまでサポートにお問い合わせください

次のステップ

最終更新日: 2026年4月27日