# Website won't load

The page is blank, half-loaded, or just spinning. Walk through this from top to bottom.

## 1. Is helodata returning anything at all?

Run a known-good request through the same credentials:

```bash
curl -v --proxy http://USER:PASS@gate.helodata.io:7777 https://ipv4.icanhazip.com
```

If that returns an IP, the gateway path is fine — move on. If not, see [407](/troubleshooting/407.md) or [522](/troubleshooting/522.md).

## 2. Is the target reachable from this exit IP?

Use the request\_id from the failed request, or test directly:

```bash
curl -v --proxy http://USER:PASS@gate.helodata.io:7777 https://example.com
```

Look for the response status and headers. Possibilities:

* **`200` but empty body** — site requires JS rendering, see step 4
* **`403` from helodata** (`X-Helodata-Error-Code: restricted-category-*`) — target is on the [restricted list](/products/overview/restricted-targets.md)
* **`403` from target** (no `X-Helodata-Error-Code`, `Server: cloudflare`) — IP reputation, see [CAPTCHAs](/troubleshooting/captchas.md)
* **`5xx`** — see [522](/troubleshooting/522.md) or [SSL errors](/troubleshooting/ssl-errors.md)

## 3. Is the target a JS app (SPA)?

Open the target in a non-proxied browser. If it loads via DevTools showing a flurry of XHR / fetch calls after the initial HTML, it's a SPA. Plain `requests` won't render the page — it only gets the empty shell.

**Fix** — switch to a real browser:

* [Playwright](/integrations/scraping-tools/playwright.md) or [Puppeteer](/integrations/scraping-tools/puppeteer.md)
* An antidetect browser ([AdsPower](/integrations/antidetect-browsers/adspower.md), [Multilogin](/integrations/antidetect-browsers/multilogin.md))

When [Web Unblocker](/products/overview-4.md) ships, it does this transparently.

## 4. Does the site return different markup to your IP's country?

Compare what you get through helodata vs what you see in a regular browser:

```bash
curl --proxy http://USER:PASS@gate.helodata.io:7777 https://example.com -o through-proxy.html
curl https://example.com -o direct.html
diff <(head -200 through-proxy.html) <(head -200 direct.html)
```

Differences mean the site geo-personalizes content. That's expected for `region-de` requests — make sure that's what you wanted.

## 5. Is the page being served but resources are blocked?

Inspect with curl `--include` and look at `Content-Security-Policy`, `X-Frame-Options`, or redirects to a captcha challenge. Browsers will display a blank page if a script-src is blocked.

## 6. Are you hitting a Cloudflare challenge?

A response with HTML content like `cf_chl_opt` or a `cf-mitigated: challenge` header means Cloudflare is challenging you. Handling:

* Try sticky session + browser-aligned headers — see [CAPTCHAs](/troubleshooting/captchas.md)
* Use a real browser (Playwright/Puppeteer with stealth)
* Try a different exit IP — reputation may differ

## 7. Is there a redirect loop?

```bash
curl -L --max-redirs 10 --proxy http://USER:PASS@gate.helodata.io:7777 https://example.com
```

`-L` follows redirects. If `--max-redirs` triggers, the target is bouncing you between two URLs based on a cookie / header it expects.

**Fix** — capture and replay the cookie expected at each hop, or use a real browser.

## 8. Last resort — open a ticket

```
- Target URL:
- Sub-user:
- Two X-Helodata-Request-Ids from failing requests:
- What you tried already:
```

Email <support@helodata.com>. We can replay the request from our side and tell you whether the issue is on us, the target, or your client.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.helodata.com/troubleshooting/website-wont-load.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
