99.9% uptime

Used by millions of crawlers to crawl web pages

Everywhere

Select IPs from any country, city, ASN or carrier

10,000+

Used by more than 10,000 data professionals

24/7 Support

IT specialists are 24/7 availa -ble for technical support

Residential Proxies

Residential Proxies

More Than 60 Million Residential Proxies From All Over the World

1 ∼99.9% success rates

2 Unlimited concurrent sessions

3 Up to 30 min. sticky sessions

Dedicated Datacenter Proxies

Huge Dedicated Datacenter Proxy Pool With 70M+ IP Addresses

1 > 99% IP availability

2 < 1s average response time

3 Unlimited bandwidth and domains

Unlimited Bandwidth Datacenter Proxies

Data Collection Solutions For Your Needs

Residential Proxies

60M+ Residential Proxy pool

60M+ IPs in 220+ worldwide regions. Boost your business with one of the most reliable proxy services on the market. With higher quality data, best network uptime, absolute accuracy.

Residential Proxies

Large-scaleweb crawling

With unlimited concurrent connection requests and unlimited bandwidth, we ensure your web crawlers run smoothly and efficiently. You can scale your web scraping in no time and without any hassle.

Residential Proxies

Trusted by Fortune 500 Companies

Collect data efficiently, IPIDEA offers companies on-demand data collection service and saves thousands of business cost. Assist top leading institutions in marketing campaign and conducting academic research.

Residential Proxies

Powerful Dashboard

Obtain and view information through the dashboard at any time. Perform traffic statistics, check balance, query transaction history, manage whitelists and authenticate accounts within one site.

Quality product service in the industry

Update IP resources
Tens of millions of proxy pools update IP addresses daily to maintain IP purity
99.9% success rates
Extremely stable running time, which can improve the efficiency of businesses
Unlimited concurrent sessions
No limit to the number of proxies used or how often they can be invoked
Country and city-level targeting
More than 220 locations with IP addresses, unbanned on most websites
Multiple protocols
HTTP/HTTPS/SOCKS5 protocols to meet various business needs
Dedicated account manager
Customize the best proxy solution for you and ready to solve your problems

Easily Integrated and Customisable

Various common crawler programming language code samples and API parameter notes ensure that you can get started quickly with IPIDEA.Simply add
&account-zone-custom-region-us:password or &sessTime-30 to custom IP geolocation, IP sticky sessions duration , and more.

API Mode

Proxy Mode

              
int GetUrlSocks5(char *url, char *buff)
{
	CURL *curl;
	CURLcode res;
	curl = curl_easy_init();
	if (curl)
	{
		curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://Test IP:port");
		curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);
		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff_data);
		curl_easy_setopt(curl, CURLOPT_URL, url);
		curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);
		curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);
		curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 2000000L);/*Maximum download speed*/
		res = curl_easy_perform(curl);
		curl_easy_cleanup(curl);
		if (res == CURLE_OK) {
			return res;
		}
		else {
			printf("error code:%d\n", res);
			MessageBox(NULL, TEXT("Get IP Error"), TEXT("assistant"), MB_ICONINFORMATION | MB_YESNO);
		}
	}
	return res;
}
              
            
              
//socks5 proxy
func Socks5Proxy(proxyUrl, user, pass string) {

	defer func() {
		if err := recover(); err != nil {
			fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "Return information:", err)
		}
	}()

	var userAuth proxy.Auth
	if user != "" && pass != "" {
		userAuth.User = user
		userAuth.Password = pass
	}
	dialer, err := proxy.SOCKS5("tcp", proxyUrl, &userAuth, proxy.Direct)
	if err != nil {
		panic(err)
	}
	httpClient := &http.Client{
		Transport: &http.Transport{
			DialContext: func(ctx context.Context, network, addr string) (conn net.Conn, err error) {
				return dialer.Dial(network, addr)
			},
		},
		Timeout: time.Second * 10,
	}

	//Request Network
	if resp, err := httpClient.Get(testApi); err != nil {
		panic(err)
	} else {
		defer resp.Body.Close()
		body, _ := ioutil.ReadAll(resp.Body)
		fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "【socks5 success】", 
             "Return information:", string(body))
	}
              
            
              
               
#!/usr/bin/env node
require('request-promise')({
    url: 'https://ipinfo.io',
    proxy: 'http://ip:port',
    })
.then(function(data){ console.log(data); },
    function(err){ console.error(err); });
              
            
              
  >?php
	// Target page to visit
	$targetUrl = "http://baidu.com";
	// proxy server
	$proxyServer = "http://{{ip}}:{{domain}}";

	// Tunnel Identity Information
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $targetUrl);
	curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

	// Setting up a proxy server
	curl_setopt($ch, CURLOPT_PROXYTYPE, 0); //http
	// curl_setopt($ch, CURLOPT_PROXYTYPE, 5); //sock5
	curl_setopt($ch, CURLOPT_PROXY, $proxyServer);

	// Set Tunnel Verification Information
	curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)");
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
	curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	curl_setopt($ch, CURLOPT_HEADER, true);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	$result = curl_exec($ch);
	$err = curl_error($ch);

	curl_close($ch);

	var_dump($err);
	var_dump($result);
              
            
              
        public static void testSocks5WithOkHttp() throws IOException {
        String url = "http://api.myip.la/en?json";
        Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("ip", 8080));
        OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();

        Request request = new Request.Builder().url(url).build();
        okhttp3.Response response = client.newCall(request).execute();
        String responseString = response.body().string();
        System.out.println(responseString);
    }
              
            
              
    class ThreadFactory(threading.Thread):
    def __init__(self, host, port):
        threading.Thread.__init__(self)
        self.host = host
        self.port = port

    def run(self):
        testPost(self.host, self.port)


# Extract the link to the proxy  Return value of json type
tiqu = 'Extract the link'

while 1 == 1:
    # Extract 10 at a time and put them into the thread
    resp = rq.get(url=tiqu, timeout=5)
    try:
        if resp.status_code == 200:
            dataBean = json.loads(resp.text)
        else:
            print("failure")
            time.sleep(1)
            continue
    except ValueError:
        print("failure")
        time.sleep(1)
        continue
    else:
        # Parsing json arrays
        print("code=", dataBean["code"])
        code = dataBean["code"]
        if code == 0:
            threads = []
            for proxy in dataBean["data"]:
                threads.append(ThreadFactory(proxy["ip"], proxy["port"]))
            for t in threads:  # Open the thread
                t.start()
                time.sleep(0.01)
            for t in threads:  # Blocking threads
                t.join()
    # break
    time.sleep(1)
              
            
              
int GetUrlSocks5(char *url, char *buff)
{
	CURL *curl;
	CURLcode res;
	curl = curl_easy_init();
	if (curl)
	{
		curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://Domain name: port");//Set Socks5 proxy address
		curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "User name: Password");//Proxy username password, with':'style username and password
		curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);//Set Read-Write Cache
		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff_data);//Set Callback Function
		curl_easy_setopt(curl, CURLOPT_URL, url);//Set URL address
		curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);//Sets a long integer to control how many seconds CURLOPT_LOW_SPEED_LIMIT bytes are passed
		curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);//Set a long integer to control how many bytes are transferred;
		curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 2000000L);/*Maximum download speed*/
		res = curl_easy_perform(curl);
		curl_easy_cleanup(curl);
		if (res == CURLE_OK) {
			return res;
		}
		else {
			printf("error code:%d\n", res);
			MessageBox(NULL, TEXT("Get IP Error"), TEXT("assistant"), MB_ICONINFORMATION | MB_YESNO);
		}
	}
	return res;
}
              
            
              
//Socks5 proxy
func Socks5Proxy(proxyUrl, user, pass string) {

	defer func() {
		if err := recover(); err != nil {
			fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "Return information:", err)
		}
	}()

	var userAuth proxy.Auth
	if user != "" && pass != "" {
		userAuth.User = user
		userAuth.Password = pass
	}
	dialer, err := proxy.SOCKS5("tcp", proxyUrl, &userAuth, proxy.Direct)
	if err != nil {
		panic(err)
	}
	httpClient := &http.Client{
		Transport: &http.Transport{
			DialContext: func(ctx context.Context, network, addr string) (conn net.Conn, err error) {
				return dialer.Dial(network, addr)
			},
		},
		Timeout: time.Second * 10,
	}

	//Request Network
	if resp, err := httpClient.Get(testApi); err != nil {
		panic(err)
	} else {
		defer resp.Body.Close()
		body, _ := ioutil.ReadAll(resp.Body)
		fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "【socks5 success】", "Return information:", string(body))
	}
              
            
              
#!/usr/bin/env node
require('request-promise')({
    url: 'https://ipinfo.io',
    proxy: 'http://???-zone-custom:????@proxy.ipidea.io:4399',
    })
.then(function(data){ console.log(data); },
    function(err){ console.error(err); });
              
            
              
  // Target page to visit
	$targetUrl = "http://baidu.com";
	// proxy server
	$proxyServer = "http://proxy.ipidea.io:4399";
	$proxyUserPwd = "{{user}}:{{psswd}}";



	// Tunnel Identity Information
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $targetUrl);
	curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

	// Setting up a proxy server
	curl_setopt($ch, CURLOPT_PROXYTYPE, 0); //http
	// curl_setopt($ch, CURLOPT_PROXYTYPE, 5); //sock5
	curl_setopt($ch, CURLOPT_PROXY, $proxyServer);

	// Set Tunnel Verification Information
	curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)");
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
	curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	curl_setopt($ch, CURLOPT_HEADER, true);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyUserPwd);
	$result = curl_exec($ch);
	$err = curl_error($ch);

	curl_close($ch);

	var_dump($err);
	var_dump($result);
                
              
            
              
        public static void testSocks5WithOkHttp() throws IOException {
        String url = "https://api.myip.la/en?json";
        Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("Proxy Address", 8080));
        java.net.Authenticator.setDefault(new java.net.Authenticator() {
            private PasswordAuthentication authentication =
                    new PasswordAuthentication("account", "Password".toCharArray());

            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return authentication;
            }
        });
        OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build();
        
        Request request = new Request.Builder().url(url).build();
        okhttp3.Response response = client.newCall(request).execute();
        String responseString = response.body().string();
        System.out.println(responseString);
    }
              
            
              
    def testUrl():
    # Accounts
    entry = 'http://{}:{}@ip:port'.format("account", "Password")

    proxy = {
        'http': entry,
        'https': entry,
    }
    try:
        res = requests.post(mainUrl, headers=headers, proxies=proxy, timeout=10)
        print(res.status_code, res.text)
    except Exception as e:
        print("Access Failure", e)
        pass


for port in range(0, 10):
    _thread.start_new_thread(testUrl, ())
    time.sleep(0.1)

time.sleep(10)
              
            
  • C/C++
  • GO
  • Node.js
  • PHP
  • JAVA
  • Python
  • C/C++
  • GO
  • Node.js
  • PHP
  • JAVA
  • Python

See Documentation

This website uses cookies to improve the user experience.To learn more about our cookie policy or withdraw from it, please check our Privacy Policy and Cookie Policy

Agree