Which Screenshot APIs Let You Bring Your Own Proxy?
Compare screenshot APIs with documented custom proxy support, how each accepts proxy settings, and what to verify before routing captures through your proxy.
Short answer: ScreenshotNeo is the first alternative to consider if you want clean captures, no charges for bot checks or failed loads, and a low-cost starting plan. For APIs that explicitly document bringing your own proxy, the reviewed documentation covers PagePixels, ScreenshotOne, ScreenshotAPI.net, and Screenshots.Dev. Their integration models differ: PagePixels stores a proxy and uses its ID, while the other three document a proxy request parameter. Documentation establishes advertised options, not that a proxy will work with every target site.
What “bring your own proxy” means for a screenshot API
A hosted screenshot API runs a browser on its infrastructure and returns an image or PDF. With a custom proxy, the browser’s network traffic is routed through a proxy you control or subscribe to. This can be useful for regional testing, a fixed egress IP, or reaching a site available only from a particular network. It does not guarantee access, defeat a CAPTCHA, or override a site’s rules.
Before choosing a screenshot API with proxy support, check how the proxy is configured, which protocol and authentication format it accepts, whether all browser requests use it, how credentials are protected, and whether proxy support changes the API or proxy bill.
Screenshot API proxy support compared
| Provider | Documented configuration | Routing detail | Plan and billing detail in reviewed docs |
|---|---|---|---|
| ScreenshotNeo | One GET request for a screenshot; the supplied product facts do not document a custom-proxy parameter. | Clean-capture features accept consent banners and remove known consent platforms, newsletter popups, and chat widgets before capture. | 1,000 shots/month free without a card; paid plans start at $5 for 3,000. Only clean shots are billed. |
| PagePixels | Store a proxy with a store-proxy endpoint, then pass the returned ID as custom_proxy_id. |
Docs describe HTTP or HTTPS proxies, including static IPs. custom_proxy_id takes precedence over real_location. |
Bring Your Own Proxy is an add-on for paid screenshot plans. The proxy provider bills traffic; PagePixels Real Location bandwidth is not used. |
| ScreenshotOne | Request options proxy and proxy_bypass_hosts. |
Matching hostnames can bypass the proxy and load directly. This can route the target document through the proxy while loading selected assets directly. | The cited options reference does not establish plan requirements, accepted protocols, or credential storage details. |
| ScreenshotAPI.net | A proxy parameter on the browser emulation reference. |
Docs show address-and-port and authenticated username:password@address:port forms; regional testing is a stated use case. |
The cited reference does not provide a complete plan or credential-security comparison. |
| Screenshots.Dev | A proxy string in API docs. |
Docs show address:port and user:password@address:port formats. |
Confirm supported protocol, plan requirements, and credential handling with the provider. |
The Screenshot API docs surfaced in the research list format, viewport, JavaScript, geolocation, and caching options but no proxy parameter. That means proxy support is not documented in that reference; it is not proof that the service never supports proxy routing.
How to configure a custom proxy
The following examples show the documented integration shapes. Replace placeholder hosts and credentials with values from your proxy provider, and use the provider’s current API documentation for the complete capture request schema. The research references do not establish complete runnable request schemas for ScreenshotOne, ScreenshotAPI.net, or Screenshots.Dev, so their snippets below demonstrate only the documented proxy setting.
PagePixels: store a proxy, then reuse its ID
- Use the PagePixels store-proxy endpoint to register the proxy and receive an ID. Follow its current documentation for the endpoint and required fields.
- Pass the returned ID as
custom_proxy_idon the screenshot or scheduled screenshot request. - Do not send proxy credentials with every capture request; PagePixels says credentials are stored and the password is encrypted.
# Capture request shape after storing the proxy
curl -G "$PAGEPIXELS_SCREENSHOT_ENDPOINT" \
--data-urlencode "url=https://example.com" \
--data-urlencode "custom_proxy_id=$CUSTOM_PROXY_ID"
PAGEPIXELS_SCREENSHOT_ENDPOINT is intentionally a placeholder: use the endpoint and other required parameters in the current PagePixels API documentation. The documented precedence rule is that custom_proxy_id wins over real_location if both are sent.
ScreenshotOne: pass proxy options on the request
# Documented option names; add the endpoint, authentication, and capture options
# from ScreenshotOne's current API documentation.
curl -G "$SCREENSHOTONE_ENDPOINT" \
--data-urlencode "url=https://example.com" \
--data-urlencode "proxy=$PROXY_URL" \
--data-urlencode "proxy_bypass_hosts=static.example.com,cdn.example.com"
proxy_bypass_hosts applies only when a proxy is specified. Use it when matching hostnames should load directly instead of going through the custom proxy. Confirm the expected hostname-list syntax in the current options documentation before shipping.
ScreenshotAPI.net: pass a proxy parameter
# Documented proxy value formats:
# proxy.example.net:8080
# username:password@proxy.example.net:8080
curl -G "$SCREENSHOTAPI_RENDER_ENDPOINT" \
--data-urlencode "url=https://example.com" \
--data-urlencode "proxy=$PROXY_URL"
The cited emulation reference establishes these proxy formats, but not a full request schema or the encoding and escaping rules for special characters in credentials. Consult the current endpoint documentation.
Screenshots.Dev: pass a proxy string
# Documented proxy value formats:
# proxy.example.net:8080
# username:password@proxy.example.net:8080
curl -G "$SCREENSHOTS_DEV_ENDPOINT" \
--data-urlencode "url=https://example.com" \
--data-urlencode "proxy=$PROXY_URL"
Use the endpoint’s documented parameter names and authentication method for the rest of the capture request. The surfaced documentation does not settle protocol support or how proxy credentials are protected.
Choose the right proxy and routing model
- Static or rotating address: If a target allow-lists an IP, a static proxy address may be required. PagePixels explicitly documents static IP use; the other cited references do not establish equivalent support.
- Protocol: PagePixels documents HTTP and HTTPS proxy types. The other references list address formats but do not establish protocol support in the material reviewed. Verify before subscribing.
- Authentication: An authenticated proxy URL can expose credentials in logs, traces, and error messages. Prefer secret storage and restricted log access in your own system. PagePixels says its flow stores the proxy and encrypts the password; do not assume other providers use the same model.
- Routing scope: Ask whether document requests, scripts, images, fonts, and redirects all use the proxy. ScreenshotOne documents hostname bypasses; the cited references do not establish a uniform routing scope across providers.
- Schedules and jobs: PagePixels specifically documents using the stored proxy ID on snap or scheduled screenshot requests. For other services, check whether proxy settings carry through asynchronous jobs or scheduled captures.
- Policy: Confirm that both the screenshot provider and target site permit the intended use. Proxy support is a routing option, not permission to access protected content.
Implementation checklist
- Pick the required egress location and determine whether the target requires a static IP.
- Check the proxy protocol, authentication format, and whether credentials are stored or sent per request.
- Decide which hosts must use the proxy and whether assets should bypass it.
- Make one capture request against a page you are permitted to access; inspect the returned image and provider status details.
- Test redirects, asset loading, and the target’s normal bot or consent behavior. Do not interpret a challenge page as successful access.
- Measure screenshot API charges and proxy-provider traffic separately. Confirm how failures, retries, and scheduled captures are billed.
- Keep proxy credentials out of source control, client-side code, and unredacted logs. Rotate credentials if they are exposed.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server. Use its one-call API when you need a clean screenshot without setting up and maintaining a browser yourself. The supplied product details do not document a custom-proxy parameter, so choose a proxy-enabled provider above if routing through your own proxy is a requirement.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for request details. Cookie and consent banners are accepted and removed before the shot, along with known newsletter popups and chat widgets. Bot checks, blank pages, and failed loads are never billed; response headers report the page verdict and billing status. An MCP server exposes take_screenshot, get_page_info, and capture_pdf to AI agents. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.
Python and Node.js calls for ScreenshotNeo
These examples are useful when you want a hosted capture without managing browser processes. They do not configure a custom proxy.
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer())));
Performance, reliability, and cost
A proxy adds a network hop. Its location, capacity, DNS behavior, and the target site’s response can affect capture time and whether resources load. No comparable latency or success benchmarks were established by the reviewed documentation, so test with your actual pages and proxy provider rather than relying on a generic speed claim.
For reliable automation, set a client timeout, use bounded retries for transient network errors, and avoid retrying every failure as if it were temporary. A CAPTCHA, access denial, or invalid credential needs diagnosis rather than repeated requests. Track the screenshot result separately from proxy connection errors, and avoid logging secrets. Confirm provider retry and billing behavior directly: the sources do not establish a consistent policy.
Budget for both the screenshot service and proxy vendor. PagePixels explicitly says its add-on requires a paid screenshot plan and proxy traffic is billed by the proxy provider. The cited materials do not provide enough information for an apples-to-apples total-cost comparison for the other proxy-enabled providers.
Troubleshooting
| Symptom | Likely cause | What to check |
|---|---|---|
| Proxy connection refused or times out | Wrong host or port, unavailable proxy, network policy, or incompatible protocol. | Check the proxy address, protocol, allow-list, and provider status; verify the screenshot service supports that proxy type. |
| Authentication failure | Incorrect credentials or special characters parsed as URL delimiters. | Confirm credentials with the proxy vendor and use the screenshot provider’s documented encoding or stored-proxy flow. Never paste secrets into shared logs. |
| Page loads but assets are missing | Assets use different hosts, the proxy cannot reach them, or routing differs by hostname. | Check browser network behavior and proxy routing. For ScreenshotOne, review proxy_bypass_hosts for hosts that should load directly. |
| Unexpected region or source IP | The proxy endpoint may rotate, use a different exit location, or not apply to all requests. | Check the proxy vendor’s exit-location behavior and the screenshot service’s routing scope. PagePixels documents that custom_proxy_id takes precedence over real_location. |
| Target shows a bot check or CAPTCHA | The target challenged the request, or the page requires an interaction the capture flow does not provide. | Do not assume a different proxy will bypass it. Check permitted access methods and target-site terms; the reviewed docs promise no CAPTCHA bypass. |
| Proxy option appears ignored | Parameter name, endpoint, or request encoding may be wrong, or the setting may not carry to a job type. | Check the exact current endpoint docs and verify proxy behavior on a simple permitted page. For PagePixels, pass the stored ID as custom_proxy_id. |
| Costs exceed expectation | Proxy traffic is billed separately, retries repeat traffic, or the plan requires an add-on. | Compare screenshot-provider billing with proxy-provider usage. PagePixels states both the paid-plan requirement and separate proxy-vendor traffic billing. |
Frequently asked questions
Does a proxy guarantee a screenshot from a specific country?
No. The cited docs describe proxy routing and regional testing use cases, but an exit location depends on the proxy service and request routing. Verify the observed location with your proxy provider and capture setup.
Can I use a residential proxy?
The reviewed references do not consistently specify residential proxy support. Confirm protocol, provider compatibility, and permitted use with both services before relying on it.
Which provider stores proxy credentials?
PagePixels documents a stored-proxy flow, says it encrypts the stored password, and says credentials are not supplied on each screenshot request. The cited material does not establish equivalent credential handling for the other providers.
Does ScreenshotNeo support my own proxy?
The supplied ScreenshotNeo product information does not document a custom-proxy setting. Its API is useful when clean captures and billing only for clean shots matter; use a provider with documented proxy routing when a custom proxy is essential.
Are the listed proxy features independently tested?
No. This comparison summarizes provider documentation. It does not establish independent tests, success rates, or compatibility with every proxy and website.
