{
  "kind": "company",
  "basic": {
    "name": "",
    "short_title": "Hidden XHR API behind a web page",
    "version": "1.0",
    "category": "",
    "tags": "web, xhr, json, browser",
    "about": "## What this API does\n\nMany sites load their data through a background XHR/fetch call that plain HTTP clients cannot reach (bot protection, signed requests, tokens minted in the page). This route opens the page in a real browser, waits for the network to settle and returns the JSON the page itself received from the matching API call (`output_mode: xhr_json`).\n\n## Finding the XHR path\n\nUse **Start faster → Import → Import from live URL** in this wizard: it opens the page in a browser, lists the JSON calls the page made and lets you pick one. Put the distinctive part of that call's path into `intercept_url` (`*/api/{{XHR_PATH_FRAGMENT}}*` matches any call whose URL contains `/api/<fragment>`). Buyers can override the pattern per call with `X-ApiClay-Intercept-Url`.\n\n## Notes\n\nDescribe which data the captured call carries and how it is paginated.",
    "status": "public"
  },
  "datasource": {
    "datasource_type": "custom_http_api",
    "custom_http_routes": [
      {
        "name": "Captured JSON",
        "method": "GET",
        "playground_path": "/data",
        "upstream_url": "{{PAGE_URL}}",
        "headers": [],
        "query_params": [],
        "body_mode": "fields",
        "body_fields": [],
        "render_mode": "js",
        "browser_engine": "auto",
        "wait_until": "networkidle0",
        "output_mode": "xhr_json",
        "intercept_url": "*/api/{{XHR_PATH_FRAGMENT}}*",
        "request_policy": {
          "max_requests_per_buyer_per_day_paid": 500,
          "max_requests_total_trial": 3,
          "estimated_total_requests": 100000
        },
        "proxy": {
          "visibility": "private",
          "value": {
            "hostname": "{{YOUR_PROXY_HOST_PORT}}",
            "username": "{{YOUR_PROXY_USERNAME}}",
            "password": "{{YOUR_PROXY_PASSWORD}}"
          }
        }
      }
    ]
  },
  "pricing": {
    "requests_per_credit": 20,
    "plans": [],
    "trial_enabled": true,
    "trial_requests": 3
  }
}
