An active CleanProxies plan
Static ISP proxies for fixed US IPs, or rotating residential / mobile proxies for pools. The $4.99 trial works too.
On Apify, open the Actor's Input tab, go to Proxy and browser configuration and enter your own proxy URL, http://USERNAME:PASSWORD@HOST:PORT, instead of Apify Proxy. In your own Actor code, pass the same URL to Actor.createProxyConfiguration({ proxyUrls: [...] }) and give the result to the crawler.
Apify runs scrapers (Actors) in the cloud and has its own proxy service built in. If you already have CleanProxies, for example residential GB that never expire or dedicated US ISP IPs, Actors that support custom proxies and the Apify SDK accept your proxy URLs directly.
Static ISP proxies for fixed US IPs, or rotating residential / mobile proxies for pools. The $4.99 trial works too.
From the dashboard's proxy manager: host (or IP), port, username and password. Convert lists with the proxy list formatter.
npm install apify crawlee (JavaScript) or pip install apify (Python).Both products use the same setup in Apify. What changes is how long an IP stays with you.
One rotating URL can give each request a new IP from 50M+ residential IPs in 190+ countries. For logins or paginated flows, generate sticky lines (5, 10, 15, 30 or 60 minutes, or 24 hours) and add them as separate URLs.
Residential IPs in 190+ countries with country, state and city targeting. Rotate on every request or hold a sticky session for up to 90 minutes; GB never expire.
Add each dedicated US ISP IP as its own URL in proxyUrls. The SDK uses them round-robin, every IP stays the same all month, and bandwidth is unlimited for long monitoring runs.
Dedicated static IPs registered to US and Canadian ISPs. The address stays the same for as long as you hold it, with unlimited bandwidth and HTTP(S) or SOCKS5 access.
Every product connects over HTTP(S); static ISP and ISP subnet proxies also run SOCKS5 and IP whitelisting. This is what the dashboard gives you to paste into Apify.
IP:PORT:USER:PASSOne line per dedicated IP. With IP whitelisting on, the line is just IP:PORT and no password is sent.
HOST:PORT:USER:PASSGenerated in the proxy manager. The username carries the location and session you pick, so generate a new list to change them.
http://USERNAME:PASSWORD@HOST:PORTsocks5://USERNAME:PASSWORD@HOST:PORTUse http:// even for HTTPS websites; the TLS session still runs end to end. The socks5:// form is for static ISP and ISP subnet proxies.
Four steps, then check the exit IP with the free proxy checker.
In the CleanProxies dashboard, generate a residential line (rotating or sticky, with the country you need) and write it as http://USERNAME:PASSWORD@HOST:PORT.
In Apify Console, open the Actor's Input tab and the Proxy and browser configuration section. It only appears for Actors whose input schema defines a proxy field.
Choose the option for your own (custom) proxies instead of Apify Proxy and paste one proxy URL per line.
Start the run. In your own Actors, use the SDK snippets below and log the exit IP once at the start of the run.
Replace the highlighted placeholders with the values from your dashboard. Pick an example to see its code.
In the input's JSON view (or a run started through the API), the proxy field is an object. With your own proxies, useApifyProxy is false and proxyUrls lists the URLs. The field name depends on the Actor, often proxyConfiguration or proxy, so check its input schema.
{
"startUrls": [{ "url": "https://example.com" }],
"proxyConfiguration": {
"useApifyProxy": false,
"proxyUrls": ["http://USERNAME:PASSWORD@HOST:PORT"]
}
}Actor.createProxyConfiguration() takes proxyUrls for custom proxies. Several URLs are used round-robin. Pass the result to any Crawlee crawler, or call newUrl() to get a URL for your own HTTP client.
import { Actor } from 'apify';
import { CheerioCrawler } from 'crawlee';
await Actor.init();
const proxyConfiguration = await Actor.createProxyConfiguration({
proxyUrls: ['http://USERNAME:PASSWORD@HOST:PORT'],
});
const crawler = new CheerioCrawler({
proxyConfiguration,
async requestHandler({ request, $, proxyInfo }) {
console.log(request.url, $('title').text(), 'via', proxyInfo?.hostname);
},
});
await crawler.run(['https://example.com']);
await Actor.exit();import asyncio
import httpx
from apify import Actor
async def main() -> None:
async with Actor:
proxy_cfg = await Actor.create_proxy_configuration(
proxy_urls=['http://USERNAME:PASSWORD@HOST:PORT'],
)
proxy_url = await proxy_cfg.new_url()
async with httpx.AsyncClient(proxy=proxy_url) as client:
r = await client.get('https://example.com')
Actor.log.info(f'Status: {r.status_code}')
asyncio.run(main())await Actor.createProxyConfiguration(input.proxyConfiguration). With useApifyProxy: false and no proxyUrls, it returns undefined and the crawler runs without a proxy.import { Actor } from 'apify';
import { gotScraping } from 'got-scraping';
await Actor.init();
const proxyConfiguration = await Actor.createProxyConfiguration({
proxyUrls: ['http://USERNAME:PASSWORD@HOST:PORT'],
});
const proxyUrl = await proxyConfiguration.newUrl();
const { body } = await gotScraping({ url: 'https://api.ipify.org', proxyUrl });
console.log('Exit IP:', body);
await Actor.exit();Run the snippet below locally with apify run or as an Actor: it prints the exit IP through the same proxy configuration. Compare it with your CleanProxies line, then remove it from production runs.
Open What is my IP? through the proxy to see the address and headers a website receives, or paste up to ten lines into the free proxy checker to test connectivity, latency and exit IP.
Still stuck? Our 24/7 support team answers fast: contact us with the error and the line you used (leave the password out).
useApifyProxy is still true.Set useApifyProxy to false with your proxyUrls, and check the Actor's input schema or README for its proxy field.createProxyConfiguration() returned undefined because the input had useApifyProxy: false and no proxyUrls.Make sure the input object passed in contains proxyUrls.HOST:PORT:USERNAME:PASSWORD instead of a URL.Convert it to http://USERNAME:PASSWORD@HOST:PORT with the proxy list formatter.Setup guides and best practices from the CleanProxies blog.
Setup guides for tools people run next to Apify.
ProxyConfiguration, one proxy per session, sticky residential lists and tiered ISP-to-residential fallback.
Setup guidemeta['proxy'] with credentials, a rotation middleware for ISP lists and crawl settings that avoid bans.
Setup guideThe HTTP Request node's Proxy option, instance-wide HTTP_PROXY and NO_PROXY, and per-item proxies.
Setup guideThe proxies dict, Session-level proxies, SOCKS5 with remote DNS and rotation over an ISP list.
Setup guideStraight answers about running CleanProxies in Apify.
Yes. Actors whose input has a proxy configuration field accept custom proxy URLs, and the Apify SDK takes them through createProxyConfiguration with proxyUrls.