ProxyOmega Documentation

Welcome to ProxyOmega's developer documentation. Build powerful applications with our high-performance proxy network.

Instant Setup

Get up and running in minutes with auto-configuration and ready-to-use connection examples.

195+ Countries

Access 40M+ residential IPs and 1M+ mobile IPs with city and state-level targeting.

99.9% Uptime

Enterprise infrastructure with automatic failover and 24/7 monitoring for maximum reliability.

What is ProxyOmega?

ProxyOmega is a premium proxy service provider offering residential, mobile, ISP, and IPv6 proxies for web scraping, data collection, and privacy protection. Our network is built for scale, speed, and reliability.

Why Choose ProxyOmega?

  • High Success Rates: Industry-leading success rates with low IP scores and clean residential IPs
  • Flexible Pricing: Choose between unlimited bandwidth plans or pay-as-you-go options
  • Advanced Features: Session control, geo-targeting, automatic rotation, and more
  • Expert Support: 24/7 technical support with priority assistance for premium plans
  • 30-Day Guarantee: Risk-free trial with money-back guarantee
New to ProxyOmega? Check out our Quick Start Guide to begin using our proxies in your applications.

Quick Start Guide

Follow these simple steps to start using ProxyOmega proxies in your applications.

Step 1: Get Your Credentials

Log in to your ProxyOmega dashboard to find your username and password. These credentials will be used for proxy authentication.

Step 2: Choose Your Proxy Type

Available Proxy Types

  • Unlimited Residential: 2M+ IPs across US, GB, DE with unlimited bandwidth
  • Platinum Residential: 40M+ premium IPs in 195+ countries, pay-per-GB
  • Mobile Proxies: 1M+ real 3G/4G/5G device IPs with carrier-grade quality
  • ISP Static: Ultra-fast datacenter IPs (20-70ms) optimized for sneakers/tickets
  • IPv6 Network: 70+ octillion IPs with thread-based pricing

Step 3: Configure Your Application

Here's a basic example using cURL:

# Basic proxy request
curl -x http://username:[email protected]:10000 https://example.com

# With country targeting
curl -x http://username-country_US:[email protected]:10000 https://example.com

Authentication

ProxyOmega supports multiple authentication methods to secure your proxy connections.

Username/Password Authentication

The most common authentication method. Use your ProxyOmega credentials in the proxy URL:

http://username:password@proxy-server:port

IP Whitelist Authentication

For enhanced security, you can whitelist specific IP addresses that are allowed to use your proxies without credentials.

Security Note: Always use HTTPS connections when sending sensitive data through proxies to ensure end-to-end encryption.

Session Management

Control session persistence using username parameters:

Pro Tip: Use sticky sessions for multi-step processes like login sequences, and rotating sessions for large-scale data collection.
Parameter Description Example
session Maintain same IP for duration username-session_123456
country Target specific country username-country_US
city Target specific city username-city_newyork

Proxy Endpoints

Connect to our proxy network using your dashboard credentials. Username format: emailprefix_userid

Unlimited Residential Proxies

Endpoint residential.proxyomega.com
Port Range 10000-10XXX (based on threads purchased)
Protocol HTTP/HTTPS/SOCKS5
Default Rotation 3 minutes
Concurrency 60 threads per port

Example: 25 threads = ports 10000-10024, each supporting 60 concurrent connections

Platinum Residential Proxies

Endpoint platinum.proxyomega.com
Port 20228
Protocol HTTP/HTTPS/SOCKS5
Default Rotation Rotate on request

Location targeting via username parameters

Mobile Proxies

Endpoint mobile.proxyomega.com
Port 20229
Protocol HTTP/HTTPS/SOCKS5
Default Rotation Rotate on request

Real 4G/5G mobile IPs with carrier rotation

ISP Static Proxies

Type Direct IP:Port credentials
Format assigned.ip.address:port
Port Range Any port (varies by package)
Protocol HTTP/HTTPS or SOCKS5
Session Static (no rotation)

Dedicated IPs with custom port assignments

IPv6 Network

Endpoint ipv6.proxyomega.com
Port 9000
Protocol HTTP/HTTPS/SOCKS5
Default Rotation Rotate on request

Thread-based concurrency model

Username Parameters

Customize proxy behavior using username parameters:

Parameter Format Example Supported Types
country -country-{code} john_123-country-us All proxy types
state -state-{code} john_123-country-us-state-ny Platinum, Mobile only
city -city-{name} john_123-city-newyork Platinum, Mobile only
session -session-{id} john_123-session-abc123 Platinum, Mobile, IPv6
ttl -ttl-{minutes} john_123-ttl-30 Platinum, Mobile, IPv6

API Reference

Manage your ProxyOmega account programmatically with our RESTful API.

Base URL

https://api.proxyomega.com/v1

Authentication

Include your API key in the Authorization header:

curl -H "Authorization: Bearer YOUR_API_KEY" https://api.proxyomega.com/v1/account

Response Format

All API responses are returned in JSON format:

{
  "success": true,
  "data": {
    // Response data
  },
  "timestamp": "2024-06-13T12:00:00Z"
}

Error Handling

Error responses include helpful information for debugging:

{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "The provided API key is invalid",
    "details": {}
  }
}

Residential Proxies

Access our premium residential proxy networks with both unlimited and pay-as-you-go options.

Unlimited Residential

2M+ Clean IPs

Features:

  • ✓ Unlimited bandwidth
  • ✓ 3 Countries: US, GB, DE
  • ✓ Rotating & sticky sessions
  • ✓ City-level targeting
  • ✓ Low detection rates
  • ✓ Auto IP rotation (5 min default)

From $51.99/month

Platinum Residential

40M+ Premium IPs

Features:

  • ✓ Pay-per-GB pricing
  • ✓ 195+ Countries coverage
  • ✓ Ultra-low IP scores
  • ✓ State & city targeting
  • ✓ Sticky sessions (TTL control)
  • ✓ Priority support

From $4.00/GB

Proxy Generator Configuration

Unlimited Residential Setup

Endpoint residential.proxyomega.com
Port Range 10000 + (0 to threads-1)
Username Format emailprefix_userid
Password Your API key from dashboard

Example Configurations:

# 5 threads subscription (ports 10000-10004)
curl -x http://john_123:[email protected]:10000 https://example.com
curl -x http://john_123:[email protected]:10001 https://example.com

# 25 threads subscription (ports 10000-10024)
curl -x http://john_123:[email protected]:10024 https://example.com

# 100 threads subscription (ports 10000-10099)
curl -x http://john_123:[email protected]:10099 https://example.com

Platinum Residential Setup

Endpoint platinum.proxyomega.com
Port 20228 (fixed)
Username Format emailprefix_userid-parameters
Password Your API key from dashboard

Location Targeting Examples:

# Random location
curl -x http://john_123:[email protected]:20228 https://example.com

# Country targeting
curl -x http://john_123-country-us:[email protected]:20228 https://example.com

# State targeting
curl -x http://john_123-country-us-state-ca:[email protected]:20228 https://example.com

# City targeting
curl -x http://john_123-city-newyork:[email protected]:20228 https://example.com

# Sticky session with TTL (30 minutes)
curl -x http://john_123-session-abc123-ttl-30:[email protected]:20228 https://example.com

Advanced Usage

Session Control

# Unlimited - Sticky session (maintains IP across requests)
curl -x http://john_123-session-order123:[email protected]:10000 https://example.com

# Platinum - Session with custom TTL (time-to-live in minutes)
curl -x http://john_123-session-cart456-ttl-60:[email protected]:20228 https://example.com

# Force new IP on each request (no session parameter)
curl -x http://john_123:[email protected]:10000 https://example.com
Pro Tips:
  • • Unlimited proxies rotate IPs every 5 minutes by default
  • • Use different ports from your range for concurrent connections
  • • Platinum proxies support advanced geo-targeting down to ASN level
  • • Session IDs can be any alphanumeric string for tracking

Mobile Proxies

Premium 3G/4G/5G mobile IPs from real carrier networks with the highest trust scores.

1M+ Real Mobile Device IPs

Key Features

  • ✓ 3G/4G/5G carrier networks
  • ✓ 195+ Countries coverage
  • ✓ Real device IPs
  • ✓ Carrier-grade NAT
  • ✓ Highest trust scores
  • ✓ 2-minute default rotation
  • ✓ Carrier targeting
  • ✓ 100ms - 500ms latency

From $5.80/GB

Pay only for what you use

Proxy Generator Configuration

Connection Details

Endpoint mobile.proxyomega.com
Port 20229 (fixed)
Username Format emailprefix_userid-parameters
Password Your API key from dashboard
Default Rotation 2 minutes

Connection Examples

Basic Connections

# Basic mobile proxy connection
curl -x http://john_123:[email protected]:20229 https://example.com

# With country targeting
curl -x http://john_123-country-us:[email protected]:20229 https://example.com

# With state targeting
curl -x http://john_123-country-us-state-tx:[email protected]:20229 https://example.com

Advanced Targeting

# Carrier targeting (US carriers)
curl -x http://john_123-country-us-carrier-verizon:[email protected]:20229 https://example.com
curl -x http://john_123-country-us-carrier-att:[email protected]:20229 https://example.com
curl -x http://john_123-country-us-carrier-tmobile:[email protected]:20229 https://example.com

# City targeting
curl -x http://john_123-city-london:[email protected]:20229 https://example.com

# Session with custom TTL (keep same IP for 30 minutes)
curl -x http://john_123-session-mobile123-ttl-30:[email protected]:20229 https://example.com

# Multiple parameters combined
curl -x http://john_123-country-us-state-ca-city-losangeles-session-app1:[email protected]:20229 https://example.com

Why Mobile Proxies?

Maximum Trust

Mobile IPs have the highest trust scores, making them ideal for sensitive operations.

Real Devices

Genuine mobile device IPs from actual phones and tablets on carrier networks.

Anti-Detection

Nearly impossible to detect or block due to carrier-grade NAT protection.

Perfect For: Social media management, account creation, mobile app testing, and bypassing the strictest anti-bot systems.
Note: Mobile proxies automatically rotate every 2 minutes by default. Use session parameters with TTL to maintain the same IP for longer periods.

ISP Static Proxies

Ultra-fast datacenter IPs with residential classification, perfect for speed-critical applications.

20-70ms Ultra-Low Latency

Coverage & Features

Available Countries:

🇩🇪 Germany 🇬🇧 United Kingdom 🇮🇹 Italy 🇫🇷 France 🇵🇱 Poland 🇺🇸 United States 🇭🇰 Hong Kong 🇯🇵 Japan

Key Benefits:

  • ✓ Static IPs (no rotation)
  • ✓ Datacenter speed & stability
  • ✓ Residential classification
  • ✓ Anti-ban technology
  • ✓ City-level targeting
  • ✓ Dedicated packages

From $1.40/IP/month

Minimum 5 IPs • Volume discounts available

Proxy Configuration

How ISP Proxies Work

ISP proxies are provided as dedicated packages with direct IP:Port access. Each package includes:

  • • Fixed IP addresses that don't rotate
  • • Direct IP:Port credentials (no hostname)
  • • Both HTTP/HTTPS and SOCKS5 support
  • • Username/password or IP whitelist authentication

Example Package Configuration:

Format ip_address:port:username:password
Ports Any port number (assigned per package)
Protocol Support Same IP can support both HTTP and SOCKS5

Connection Examples

Package Credentials Format

# Example ISP package credentials (ports vary by package):
45.123.45.67:3128:user123:pass456
45.123.45.68:8888:user123:pass456
45.123.45.69:12345:user123:pass456
45.123.45.70:55443:user123:pass456
45.123.45.71:9999:user123:pass456

Connection Examples

# HTTP/HTTPS connection
curl -x http://user123:[email protected]:3128 https://example.com

# SOCKS5 connection (same IP, may use same or different port)
curl -x socks5://user123:[email protected]:3128 https://example.com

# With IP whitelist (no auth needed)
curl -x http://45.123.45.67:3128 https://example.com

# Multiple concurrent connections (different IPs)
curl -x http://user123:[email protected]:3128 https://example.com &
curl -x http://user123:[email protected]:8888 https://example.com &
curl -x http://user123:[email protected]:12345 https://example.com &

Optimized Use Cases

👟 Sneaker Copping

Lightning-fast response times for beating sneaker bots and securing limited releases.

🎫 Ticket Purchasing

Low latency connections perfect for high-demand ticket drops and queue systems.

Important Notes:
  • • ISP proxies are static and never rotate
  • • Each IP in your package is dedicated to you
  • • Credentials are provided after purchase in your dashboard
  • • Both username/password and IP whitelist auth are supported

IPv6 Network

Access the world's largest proxy pool with over 70 octillion unique IPv6 addresses.

70+ Octillion Unique IPv6 Addresses

Network Specifications

Coverage:

  • ✓ 130+ Countries
  • ✓ Massive IP diversity
  • ✓ Clean IP reputation
  • ✓ Dual-stack support (IPv4/IPv6)

Features:

  • ✓ Thread-based pricing
  • ✓ 3-minute default rotation
  • ✓ Bulk pricing available
  • ✓ Both HTTP and SOCKS5

From $7.00/day

Thread-based pricing • Unlimited requests per thread

Proxy Generator Configuration

Connection Details

Endpoint ipv6.proxyomega.com
Port 9000 (all threads use same port)
Username Format emailprefix_userid-parameters
Password Your API key from dashboard
Default Rotation 3 minutes

Thread-Based Model Explained

Unlike traditional proxy services, IPv6 proxies use a unique thread-based pricing model:

What is a Thread?

A thread represents one concurrent connection. You can make unlimited requests through each thread.

How It Works

All threads connect to the same port (9000). The system manages concurrency based on your subscription.

Scalability

Purchase threads based on concurrent connections needed. 100 threads = 100 simultaneous requests.

Connection Examples

Basic Connections

# Basic IPv6 connection
curl -x http://john_123:[email protected]:9000 https://example.com

# With country targeting
curl -x http://john_123-country-us:[email protected]:9000 https://example.com

# Country targeting only for IPv6
curl -x http://john_123-country-de:[email protected]:9000 https://example.com
curl -x http://john_123-country-jp:[email protected]:9000 https://example.com

Thread-Based Concurrency

# Multiple concurrent threads (all use same port!)
# Thread 1
curl -x http://john_123:[email protected]:9000 https://example1.com &

# Thread 2
curl -x http://john_123:[email protected]:9000 https://example2.com &

# Thread 3
curl -x http://john_123:[email protected]:9000 https://example3.com &

# Thread 4 with country targeting
curl -x http://john_123-country-de:[email protected]:9000 https://example4.com &

Note: All threads use port 9000. The proxy server manages concurrency internally based on your subscription.

Advanced Usage

# Session persistence (maintain same IP)
curl -x http://john_123-session-worker1:[email protected]:9000 https://example.com

# Custom TTL (time-to-live)
curl -x http://john_123-ttl-10:[email protected]:9000 https://example.com

# SOCKS5 protocol (if supported)
curl -x socks5://john_123:[email protected]:9000 https://example.com

# Combined parameters (country + session)
curl -x http://john_123-country-jp-session-api1:[email protected]:9000 https://example.com

Pricing Examples

Threads Daily Weekly Monthly Best For
100 $7.00 $43.94 $126.00 Small projects
500 $35.00 $219.70 $630.00 Medium operations
1000 $70.00 $439.40 $1,260.00 Large scale scraping
5000 $350.00 $2,197.00 $6,300.00 Enterprise
Pro Tips:
  • • Each thread allows unlimited requests
  • • All concurrent connections use the same port (9000)
  • • IPv6 addresses rotate every 3 minutes by default
  • • Perfect for high-volume operations requiring IP diversity

JavaScript Examples

Integration examples for Node.js and browser-based applications.

Basic Request with Axios

const axios = require('axios');

const proxy = {
  host: 'residential.proxyomega.com',
  port: 10000,
  auth: {
    username: 'your_username',
    password: 'your_password'
  }
};

axios.get('https://api.example.com/data', { proxy })
  .then(response => {
    console.log('Response:', response.data);
  })
  .catch(error => {
    console.error('Error:', error.message);
  });

Rotating Proxies

class ProxyRotator {
  constructor(username, password, portRange = [10000, 10099]) {
    this.username = username;
    this.password = password;
    this.portRange = portRange;
    this.currentPort = portRange[0];
  }

  getNextProxy() {
    const proxy = {
      host: 'residential.proxyomega.com',
      port: this.currentPort,
      auth: {
        username: this.username,
        password: this.password
      }
    };
    
    this.currentPort++;
    if (this.currentPort > this.portRange[1]) {
      this.currentPort = this.portRange[0];
    }
    
    return proxy;
  }
}

// Usage
const rotator = new ProxyRotator('username', 'password');
const proxy = rotator.getNextProxy();

Python Examples

Use ProxyOmega with Python's popular HTTP libraries.

Basic Request with Requests

import requests

proxies = {
    'http': 'http://username:[email protected]:10000',
    'https': 'http://username:[email protected]:10000'
}

response = requests.get('https://api.example.com/data', proxies=proxies)
print(response.json())

Async Requests with aiohttp

import asyncio
import aiohttp

async def fetch_with_proxy(session, url):
    proxy = 'http://username:[email protected]:10000'
    async with session.get(url, proxy=proxy) as response:
        return await response.json()

async def main():
    async with aiohttp.ClientSession() as session:
        data = await fetch_with_proxy(session, 'https://api.example.com/data')
        print(data)

asyncio.run(main())

PHP Examples

Complete examples for integrating ProxyOmega with PHP applications.

Basic cURL Request

Proxy Rotation Class

 ['host' => 'residential.proxyomega.com', 'ports' => []],
        'platinum' => ['host' => 'platinum.proxyomega.com', 'port' => 20228],
        'mobile' => ['host' => 'mobile.proxyomega.com', 'port' => 20229],
        'ipv6' => ['host' => 'ipv6.proxyomega.com', 'port' => 9000]
    ];
    private $currentPort = 0;
    
    public function __construct($email, $userId, $apiKey, $threads = 5) {
        $emailPrefix = explode('@', $email)[0];
        $this->username = $emailPrefix . '_' . $userId;
        $this->password = $apiKey;
        
        // Setup unlimited residential ports based on threads
        for ($i = 0; $i < $threads; $i++) {
            $this->endpoints['unlimited']['ports'][] = 10000 + $i;
        }
    }
    
    public function request($url, $proxyType = 'unlimited', $params = []) {
        $proxy = $this->getProxy($proxyType, $params);
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_PROXY, $proxy['host']);
        curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy['auth']);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        
        $response = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
        
        return [
            'response' => $response,
            'info' => $info,
            'proxy_used' => $proxy
        ];
    }
    
    private function getProxy($type, $params = []) {
        $username = $this->username;
        
        // Add parameters to username
        if (!empty($params['country'])) {
            $username .= '-country-' . $params['country'];
        }
        if (!empty($params['session'])) {
            $username .= '-session-' . $params['session'];
        }
        if (!empty($params['ttl'])) {
            $username .= '-ttl-' . $params['ttl'];
        }
        
        switch ($type) {
            case 'unlimited':
                $port = $this->endpoints['unlimited']['ports'][$this->currentPort];
                $this->currentPort = ($this->currentPort + 1) % count($this->endpoints['unlimited']['ports']);
                return [
                    'host' => $this->endpoints['unlimited']['host'] . ':' . $port,
                    'auth' => $username . ':' . $this->password
                ];
                
            case 'platinum':
                return [
                    'host' => $this->endpoints['platinum']['host'] . ':' . $this->endpoints['platinum']['port'],
                    'auth' => $username . ':' . $this->password
                ];
                
            case 'mobile':
                return [
                    'host' => $this->endpoints['mobile']['host'] . ':' . $this->endpoints['mobile']['port'],
                    'auth' => $username . ':' . $this->password
                ];
                
            case 'ipv6':
                return [
                    'host' => $this->endpoints['ipv6']['host'] . ':' . $this->endpoints['ipv6']['port'],
                    'auth' => $username . ':' . $this->password
                ];
                
            default:
                throw new Exception('Invalid proxy type: ' . $type);
        }
    }
}

// Usage example
$rotator = new ProxyRotator('[email protected]', 123, 'your_api_key_here', 25);

// Unlimited residential request
$result = $rotator->request('https://api.example.com/data', 'unlimited');
echo $result['response'];

// Platinum with country targeting
$result = $rotator->request('https://api.example.com/data', 'platinum', [
    'country' => 'us',
    'session' => 'order123'
]);

// Mobile with session
$result = $rotator->request('https://api.example.com/data', 'mobile', [
    'country' => 'uk',
    'ttl' => 30
]);
?>

Guzzle HTTP Client Example

 'http://john_123:[email protected]:10000',
    'timeout' => 30,
    'verify' => false // Disable SSL verification if needed
]);

try {
    // Simple GET request
    $response = $client->get('https://api.example.com/data');
    echo $response->getBody();
    
    // POST request with data
    $response = $client->post('https://api.example.com/submit', [
        'json' => [
            'name' => 'John Doe',
            'email' => '[email protected]'
        ]
    ]);
    
    echo "Status: " . $response->getStatusCode() . "\n";
    echo "Body: " . $response->getBody() . "\n";
    
} catch (RequestException $e) {
    echo "Error: " . $e->getMessage();
    if ($e->hasResponse()) {
        echo "\nResponse: " . $e->getResponse()->getBody();
    }
}

// Using different proxy types with Guzzle
$proxies = [
    'unlimited' => 'http://john_123:[email protected]:10000',
    'platinum' => 'http://john_123-country-us:[email protected]:20228',
    'mobile' => 'http://john_123-session-mob1:[email protected]:20229',
    'ipv6' => 'http://john_123:[email protected]:9000'
];

// Rotate through different proxy types
foreach ($proxies as $type => $proxy) {
    $client = new Client(['proxy' => $proxy]);
    
    try {
        $response = $client->get('https://httpbin.org/ip');
        $data = json_decode($response->getBody(), true);
        echo "$type proxy IP: " . $data['origin'] . "\n";
    } catch (Exception $e) {
        echo "$type proxy error: " . $e->getMessage() . "\n";
    }
}
?>

Concurrent Requests with Guzzle

 $url) {
    $port = 10000 + $index; // Assuming you have at least 5 threads
    
    $promises[] = $client->getAsync($url, [
        'proxy' => "http://john_123:[email protected]:$port"
    ]);
}

// Wait for all requests to complete
$responses = Promise\settle($promises)->wait();

// Process responses
foreach ($responses as $index => $response) {
    if ($response['state'] === 'fulfilled') {
        echo "Request $index succeeded: " . $response['value']->getBody() . "\n";
    } else {
        echo "Request $index failed: " . $response['reason']->getMessage() . "\n";
    }
}
?>
PHP Tips:
  • • Always handle cURL errors and check HTTP status codes
  • • Use connection pooling for better performance
  • • Set appropriate timeouts to avoid hanging requests
  • • Consider using Guzzle for more complex HTTP operations

Go Examples

High-performance proxy integration for Go applications with connection pooling and concurrency.

Basic HTTP Request

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
    "time"
)

func main() {
    // Configure proxy
    proxyURL, err := url.Parse("http://john_123:[email protected]:10000")
    if err != nil {
        panic(err)
    }
    
    // Create HTTP client with proxy
    client := &http.Client{
        Transport: &http.Transport{
            Proxy: http.ProxyURL(proxyURL),
        },
        Timeout: 30 * time.Second,
    }
    
    // Make request
    resp, err := client.Get("https://api.example.com/data")
    if err != nil {
        fmt.Printf("Error: %v\n", err)
        return
    }
    defer resp.Body.Close()
    
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Printf("Error reading body: %v\n", err)
        return
    }
    
    fmt.Printf("Status: %d\n", resp.StatusCode)
    fmt.Printf("Response: %s\n", string(body))
}

Proxy Manager Struct

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
    "strings"
    "sync"
    "time"
)

type ProxyManager struct {
    username    string
    password    string
    endpoints   map[string]ProxyEndpoint
    currentPort int
    mu          sync.Mutex
}

type ProxyEndpoint struct {
    Host  string
    Ports []int
}

func NewProxyManager(email string, userID int, apiKey string, threads int) *ProxyManager {
    emailPrefix := email[:strings.Index(email, "@")]
    username := fmt.Sprintf("%s_%d", emailPrefix, userID)
    
    // Setup unlimited residential ports
    unlimitedPorts := make([]int, threads)
    for i := 0; i < threads; i++ {
        unlimitedPorts[i] = 10000 + i
    }
    
    return &ProxyManager{
        username: username,
        password: apiKey,
        endpoints: map[string]ProxyEndpoint{
            "unlimited": {Host: "residential.proxyomega.com", Ports: unlimitedPorts},
            "platinum":  {Host: "platinum.proxyomega.com", Ports: []int{20228}},
            "mobile":    {Host: "mobile.proxyomega.com", Ports: []int{20229}},
            "ipv6":      {Host: "ipv6.proxyomega.com", Ports: []int{9000}},
        },
        currentPort: 0,
    }
}

func (pm *ProxyManager) GetClient(proxyType string, params map[string]string) (*http.Client, error) {
    proxyURL, err := pm.buildProxyURL(proxyType, params)
    if err != nil {
        return nil, err
    }
    
    return &http.Client{
        Transport: &http.Transport{
            Proxy:                 http.ProxyURL(proxyURL),
            MaxIdleConns:          100,
            IdleConnTimeout:       90 * time.Second,
            TLSHandshakeTimeout:   10 * time.Second,
            ExpectContinueTimeout: 1 * time.Second,
        },
        Timeout: 30 * time.Second,
    }, nil
}

func (pm *ProxyManager) buildProxyURL(proxyType string, params map[string]string) (*url.URL, error) {
    endpoint, ok := pm.endpoints[proxyType]
    if !ok {
        return nil, fmt.Errorf("invalid proxy type: %s", proxyType)
    }
    
    // Build username with parameters
    username := pm.username
    if country, ok := params["country"]; ok {
        username += "-country-" + country
    }
    if session, ok := params["session"]; ok {
        username += "-session-" + session
    }
    if ttl, ok := params["ttl"]; ok {
        username += "-ttl-" + ttl
    }
    
    // Get port
    var port int
    if proxyType == "unlimited" {
        pm.mu.Lock()
        port = endpoint.Ports[pm.currentPort]
        pm.currentPort = (pm.currentPort + 1) % len(endpoint.Ports)
        pm.mu.Unlock()
    } else {
        port = endpoint.Ports[0]
    }
    
    proxyURL := fmt.Sprintf("http://%s:%s@%s:%d", username, pm.password, endpoint.Host, port)
    return url.Parse(proxyURL)
}

// Usage example
func main() {
    pm := NewProxyManager("[email protected]", 123, "your_api_key", 25)
    
    // Unlimited residential request
    client, err := pm.GetClient("unlimited", nil)
    if err != nil {
        panic(err)
    }
    
    resp, err := client.Get("https://httpbin.org/ip")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Printf("Unlimited proxy response: %s\n", string(body))
    
    // Platinum with country targeting
    client, err = pm.GetClient("platinum", map[string]string{
        "country": "us",
        "session": "test123",
    })
    if err != nil {
        panic(err)
    }
    
    resp, err = client.Get("https://httpbin.org/ip")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    
    body, _ = ioutil.ReadAll(resp.Body)
    fmt.Printf("Platinum proxy response: %s\n", string(body))
}

Concurrent Requests

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
    "sync"
    "time"
)

func makeRequest(proxyURL string, targetURL string, wg *sync.WaitGroup, results chan<- string) {
    defer wg.Done()
    
    proxy, _ := url.Parse(proxyURL)
    client := &http.Client{
        Transport: &http.Transport{
            Proxy: http.ProxyURL(proxy),
        },
        Timeout: 30 * time.Second,
    }
    
    resp, err := client.Get(targetURL)
    if err != nil {
        results <- fmt.Sprintf("Error: %v", err)
        return
    }
    defer resp.Body.Close()
    
    body, _ := ioutil.ReadAll(resp.Body)
    results <- fmt.Sprintf("Success: %s", string(body))
}

func main() {
    var wg sync.WaitGroup
    results := make(chan string, 10)
    
    // URLs to scrape
    urls := []string{
        "https://httpbin.org/ip",
        "https://httpbin.org/headers",
        "https://httpbin.org/user-agent",
        "https://api.example.com/data1",
        "https://api.example.com/data2",
    }
    
    // Use different proxy ports for each request
    for i, targetURL := range urls {
        wg.Add(1)
        port := 10000 + i // Assuming you have at least 5 threads
        proxyURL := fmt.Sprintf("http://john_123:[email protected]:%d", port)
        
        go makeRequest(proxyURL, targetURL, &wg, results)
    }
    
    // Start a goroutine to close results channel when all requests are done
    go func() {
        wg.Wait()
        close(results)
    }()
    
    // Collect results
    for result := range results {
        fmt.Println(result)
    }
}

Advanced HTTP Client with Retry

package main

import (
    "context"
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
    "time"
)

type ProxyClient struct {
    client      *http.Client
    maxRetries  int
    retryDelay  time.Duration
}

func NewProxyClient(proxyURL string, maxRetries int) (*ProxyClient, error) {
    proxy, err := url.Parse(proxyURL)
    if err != nil {
        return nil, err
    }
    
    transport := &http.Transport{
        Proxy:                 http.ProxyURL(proxy),
        MaxIdleConns:          100,
        IdleConnTimeout:       90 * time.Second,
        TLSHandshakeTimeout:   10 * time.Second,
        ExpectContinueTimeout: 1 * time.Second,
        DisableCompression:    true,
    }
    
    return &ProxyClient{
        client: &http.Client{
            Transport: transport,
            Timeout:   30 * time.Second,
        },
        maxRetries: maxRetries,
        retryDelay: 2 * time.Second,
    }, nil
}

func (pc *ProxyClient) GetWithRetry(ctx context.Context, url string) ([]byte, error) {
    var lastErr error
    
    for attempt := 0; attempt <= pc.maxRetries; attempt++ {
        if attempt > 0 {
            select {
            case <-ctx.Done():
                return nil, ctx.Err()
            case <-time.After(pc.retryDelay):
                // Continue with retry
            }
        }
        
        req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
        if err != nil {
            return nil, err
        }
        
        // Add headers
        req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36")
        req.Header.Set("Accept", "text/html,application/json")
        
        resp, err := pc.client.Do(req)
        if err != nil {
            lastErr = err
            fmt.Printf("Attempt %d failed: %v\n", attempt+1, err)
            continue
        }
        
        defer resp.Body.Close()
        
        if resp.StatusCode >= 500 {
            lastErr = fmt.Errorf("server error: %d", resp.StatusCode)
            fmt.Printf("Attempt %d got status %d\n", attempt+1, resp.StatusCode)
            continue
        }
        
        body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            lastErr = err
            continue
        }
        
        return body, nil
    }
    
    return nil, fmt.Errorf("max retries exceeded: %v", lastErr)
}

func main() {
    // Example with different proxy types
    proxies := map[string]string{
        "unlimited": "http://john_123:[email protected]:10000",
        "platinum":  "http://john_123-country-us:[email protected]:20228",
        "mobile":    "http://john_123-session-mob1:[email protected]:20229",
        "ipv6":      "http://john_123:[email protected]:9000",
    }
    
    ctx := context.Background()
    
    for proxyType, proxyURL := range proxies {
        client, err := NewProxyClient(proxyURL, 3)
        if err != nil {
            fmt.Printf("Error creating %s client: %v\n", proxyType, err)
            continue
        }
        
        body, err := client.GetWithRetry(ctx, "https://httpbin.org/ip")
        if err != nil {
            fmt.Printf("%s proxy failed: %v\n", proxyType, err)
            continue
        }
        
        fmt.Printf("%s proxy response: %s\n", proxyType, string(body))
    }
}
Go Tips:
  • • Use connection pooling by reusing http.Transport
  • • Implement context for proper request cancellation
  • • Handle retries with exponential backoff for reliability
  • • Use goroutines for concurrent requests but respect rate limits

Best Practices

Follow these guidelines to maximize performance and reliability.

✅ Do's

  • Use connection pooling for better performance
  • Implement retry logic with exponential backoff
  • Rotate user agents and headers
  • Monitor your usage and set alerts
  • Use sticky sessions for multi-step processes

❌ Don'ts

  • Don't exceed rate limits of target websites
  • Don't use the same session for unrelated requests
  • Don't ignore HTTP status codes and errors
  • Don't hardcode credentials in your code
  • Don't make requests without error handling

Performance Optimization

Pro Tip: Use concurrent requests with proper throttling (10-50 threads) to maximize throughput while respecting target site limits.

Frequently Asked Questions

What is the difference between rotating and sticky sessions?

Rotating sessions provide a new IP address for each request, ideal for large-scale data collection. Sticky sessions maintain the same IP for a specified duration (up to 30 minutes), perfect for multi-step processes like login sequences.

How many concurrent connections can I use?

The number of concurrent connections depends on your subscription plan. Residential proxies support up to 1000 concurrent connections, Mobile proxies support up to 100, and ISP proxies support up to 500.

What locations are available?

ProxyOmega offers proxies in 195+ countries with city-level targeting in major regions. Use country codes (US, UK, DE, etc.) in your username string to target specific locations.

Need more help? Contact our support team at [email protected] or visit your dashboard for live chat support.

Account Management API

Manage user accounts, subscriptions, and billing through our REST API.

Get User Profile

GET /api/auth/me

Retrieve the authenticated user's profile information.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.proxyomega.com/v1/auth/me

Response

{
  "success": true,
  "data": {
    "user": {
      "id": 12345,
      "email": "[email protected]",
      "name": "John Doe",
      "role": "user",
      "created_at": "2024-01-15T10:30:00Z",
      "email_verified": true,
      "two_factor_enabled": false
    }
  }
}

Update Profile

PUT /api/user/profile

Update user profile information.

curl -X PUT -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Jane Doe", "company": "ProxyUser Inc"}' \
  https://api.proxyomega.com/v1/user/profile

Get Active Subscriptions

GET /api/subscriptions/active

List all active proxy subscriptions for the authenticated user.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.proxyomega.com/v1/subscriptions/active

Response

{
  "success": true,
  "data": {
    "subscriptions": [
      {
        "id": "sub_1234567890",
        "type": "unlimited",
        "status": "active",
        "threads": 25,
        "price": 183.20,
        "billing_cycle": "monthly",
        "current_period_end": "2024-07-15T00:00:00Z",
        "auto_renew": true
      }
    ]
  }
}

Cancel Subscription

POST /api/subscriptions/{id}/cancel

Cancel an active subscription. The subscription remains active until the end of the current billing period.

curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.proxyomega.com/v1/subscriptions/sub_1234567890/cancel

IP Whitelist API

Manage IP whitelist for authentication-free proxy access. Each user can whitelist up to 50 IP addresses.

List Whitelisted IPs

GET /api/proxy/whitelist

Retrieve all whitelisted IP addresses for a specific proxy type.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.proxyomega.com/v1/proxy/whitelist?type=unlimited"

Response

{
  "success": true,
  "data": {
    "ips": [
      {
        "id": 1,
        "ip_address": "192.168.1.100",
        "label": "Office Network",
        "created_at": "2024-06-01T10:30:00Z"
      },
      {
        "id": 2,
        "ip_address": "10.0.0.50",
        "label": "Home VPN",
        "created_at": "2024-06-05T15:45:00Z"
      }
    ],
    "count": 2,
    "max": 50
  }
}

Add IP to Whitelist

POST /api/proxy/whitelist/add

Add a new IP address to the whitelist. Maximum 50 IPs per user.

curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "ip_address": "203.0.113.45",
    "proxy_type": "unlimited",
    "label": "Production Server"
  }' \
  https://api.proxyomega.com/v1/proxy/whitelist/add

Parameters

Parameter Type Required Description
ip_address string Yes Valid IPv4 or IPv6 address
proxy_type string Yes Proxy type: unlimited, platinum, mobile, isp, ipv6
label string No Optional label for identification

Remove IP from Whitelist

DELETE /api/proxy/whitelist/remove

Remove an IP address from the whitelist.

curl -X DELETE -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id": 12345}' \
  https://api.proxyomega.com/v1/proxy/whitelist/remove
Important: IP whitelist changes take effect immediately. Ensure you're whitelisting the correct IP addresses to avoid losing access.

Usage Statistics API

Monitor your proxy usage, bandwidth consumption, and connection statistics in real-time.

Get Usage Summary

GET /api/proxy/{type}/usage

Retrieve usage statistics for a specific proxy type over a given time period.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.proxyomega.com/v1/proxy/unlimited/usage?days=7"

Response

{
  "success": true,
  "data": {
    "usage": [
      {
        "timestamp": "2024-06-13T12:00:00Z",
        "connections": 150,
        "bandwidth_gb": 12.5,
        "requests": 45000,
        "success_rate": 98.5
      },
      {
        "timestamp": "2024-06-13T13:00:00Z",
        "connections": 210,
        "bandwidth_gb": 18.2,
        "requests": 62000,
        "success_rate": 99.1
      }
    ],
    "summary": {
      "total_bandwidth_gb": 245.8,
      "total_requests": 1250000,
      "average_success_rate": 98.7,
      "peak_connections": 290
    }
  }
}

Get Real-time Metrics

GET /api/proxy/metrics/realtime

Get current real-time proxy metrics including active connections and throughput.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.proxyomega.com/v1/proxy/metrics/realtime

Response

{
  "success": true,
  "data": {
    "active_connections": 87,
    "throughput_mbps": 156.4,
    "requests_per_second": 342,
    "average_latency_ms": 45,
    "error_rate": 0.02,
    "proxy_types": {
      "unlimited": {
        "connections": 45,
        "throughput_mbps": 82.3
      },
      "platinum": {
        "connections": 32,
        "throughput_mbps": 64.1
      },
      "mobile": {
        "connections": 10,
        "throughput_mbps": 10.0
      }
    }
  }
}

Get Bandwidth Usage

GET /api/proxy/bandwidth/{year}/{month}

Get detailed bandwidth usage for a specific month.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.proxyomega.com/v1/proxy/bandwidth/2024/06

Response

{
  "success": true,
  "data": {
    "month": "2024-06",
    "daily_usage": [
      {
        "date": "2024-06-01",
        "bandwidth_gb": 125.4,
        "cost": 0.00
      },
      {
        "date": "2024-06-02",
        "bandwidth_gb": 143.2,
        "cost": 0.00
      }
    ],
    "total_bandwidth_gb": 3845.6,
    "total_cost": 0.00,
    "billing_type": "unlimited"
  }
}

Export Usage Report

POST /api/proxy/usage/export

Generate and download a detailed usage report in CSV or JSON format.

curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "start_date": "2024-06-01",
    "end_date": "2024-06-30",
    "format": "csv",
    "include_details": true
  }' \
  https://api.proxyomega.com/v1/proxy/usage/export
Pro Tip: Use webhooks to receive real-time notifications when you reach usage thresholds. Configure webhooks in your dashboard settings.

Troubleshooting Guide

Common issues and their solutions when using ProxyOmega services.

Connection Issues

🔴 Cannot Connect to Proxy

Symptoms:

  • Connection timeout errors
  • "Proxy server refusing connections"
  • Unable to establish tunnel

Solutions:

  1. Verify Credentials:
    # Test your credentials
    curl -v -x http://username:[email protected]:10000 http://ipinfo.io
  2. Check IP Whitelist: Ensure your IP is whitelisted if using IP authentication
  3. Verify Port Range: Use ports within your allocated range (10000-10099 for residential)
  4. Test Network Connectivity:
    # Check if proxy server is reachable
    ping residential.proxyomega.com
    telnet residential.proxyomega.com 10000

Authentication Errors

🟡 407 Proxy Authentication Required

Common Causes:

  • Incorrect username or password
  • Expired subscription
  • Account suspended
  • Using wrong proxy type credentials

Solutions:

  1. Double-check credentials in your dashboard
  2. Ensure subscription is active
  3. Verify you're using the correct proxy endpoint
  4. Reset password if needed

Performance Issues

🐌 Slow Connection Speeds

Troubleshooting Steps:

  1. Check Latency:
    # Measure proxy latency
    time curl -x http://username:[email protected]:10000 -o /dev/null https://example.com
  2. Use Geographically Closer Proxies:
    # Target specific country for lower latency
    curl -x http://username-country_US:[email protected]:10000 https://example.com
  3. Optimize Connection Pool:
    • Reuse connections when possible
    • Implement connection pooling
    • Use HTTP/2 if supported
  4. Consider Proxy Type:
    • ISP proxies: 20-70ms latency (fastest)
    • Residential: 100-300ms latency
    • Mobile: 100-500ms latency

IP Rotation Issues

🔄 IPs Not Rotating as Expected

Common Issues:

  • Using sticky session parameters unintentionally
  • Connection pooling maintaining same IP
  • Rotation interval set too high

Solutions:

# Force new IP on each request (no session parameter)
curl -x http://username:[email protected]:10000 https://example.com

# Use specific session for sticky IP
curl -x http://username-session_12345:[email protected]:10000 https://example.com

# Set custom rotation interval (mobile proxies)
curl -x http://username-rotate_5m:[email protected]:30000 https://example.com

Error Codes Reference

Error Code Description Solution
400 Bad Request Check request format and parameters
401 Unauthorized Verify API key or credentials
403 Forbidden Check account permissions and subscription
407 Proxy Authentication Required Provide valid proxy credentials
429 Too Many Requests Reduce request rate or upgrade plan
502 Bad Gateway Proxy server issue, retry request
503 Service Unavailable Temporary outage, check status page
Still Need Help? Contact our 24/7 support team at [email protected] or use the live chat in your dashboard.