BirdProxies
BirdProxies

Integration Guides

Simple copy-paste examples to get started quickly.

Quick Start

Connection Details

Residential Proxy: residential.birdproxies.com:8080
ISP Proxy: Use the IP:Port provided in your dashboard
Username: Your BirdProxies username
Password: Your BirdProxies password

Python

Basic Request

python
import requests

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

response = requests.get('https://httpbin.org/ip', proxies=proxies)
print(response.json())

With Error Handling

python
import requests
from requests.exceptions import RequestException

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

try:
    response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=10)
    print(f"Success! Proxy IP: {response.json()['origin']}")
except RequestException as e:
    print(f"Error: {e}")

Node.js

Using Axios

javascript
const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');

const proxyAgent = new HttpsProxyAgent(
    'http://username:[email protected]:8080'
);

axios.get('https://httpbin.org/ip', {
    httpsAgent: proxyAgent,
    timeout: 10000
})
.then(response => {
    console.log('Proxy IP:', response.data.origin);
})
.catch(error => {
    console.error('Error:', error.message);
});

Using node-fetch

javascript
const fetch = require('node-fetch');
const HttpsProxyAgent = require('https-proxy-agent');

const proxyAgent = new HttpsProxyAgent(
    'http://username:[email protected]:8080'
);

fetch('https://httpbin.org/ip', { agent: proxyAgent })
    .then(res => res.json())
    .then(data => console.log('Proxy IP:', data.origin))
    .catch(err => console.error('Error:', err));

cURL

Basic Request

bash
curl -x http://username:[email protected]:8080 https://httpbin.org/ip

With Headers

bash
curl -x http://username:[email protected]:8080 \
     -H "User-Agent: Mozilla/5.0" \
     -H "Accept: application/json" \
     https://httpbin.org/ip

Download File

bash
curl -x http://username:[email protected]:8080 \
     -o output.html \
     https://example.com

Selenium (Browser Automation)

Selenium is perfect for web scraping JavaScript-heavy websites and social media automation.

Chrome with Proxy

python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# Setup Chrome options
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://residential.birdproxies.com:8080')

# Create driver with proxy authentication extension
driver = webdriver.Chrome(options=chrome_options)

# Note: For authenticated proxies, you'll need a Chrome extension
# or use a proxy authentication plugin

Using Selenium Wire (Recommended for Authentication)

python
from seleniumwire import webdriver

# Configure proxy
proxy_options = {
    'proxy': {
        'http': 'http://username:[email protected]:8080',
        'https': 'http://username:[email protected]:8080',
        'verify_ssl': False,
    }
}

# Create driver
driver = webdriver.Chrome(seleniumwire_options=proxy_options)

# Navigate to website
driver.get('https://httpbin.org/ip')
print(driver.page_source)

driver.quit()

Puppeteer

Puppeteer is ideal for web scraping, e-commerce price monitoring, and headless browser automation.

Basic Browser Automation

javascript
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({
        args: [
            '--proxy-server=http://residential.birdproxies.com:8080'
        ]
    });

    const page = await browser.newPage();

    // Authenticate proxy
    await page.authenticate({
        username: 'your_username',
        password: 'your_password'
    });

    await page.goto('https://httpbin.org/ip');
    const content = await page.content();
    console.log(content);

    await browser.close();
})();

C# / .NET

Using HttpClient

csharp
using System;
using System.Net;
using System.Net.Http;

class Program
{
    static async Task Main()
    {
        var proxy = new WebProxy
        {
            Address = new Uri("http://residential.birdproxies.com:8080"),
            Credentials = new NetworkCredential("username", "password")
        };

        var handler = new HttpClientHandler
        {
            Proxy = proxy,
            UseProxy = true
        };

        using var client = new HttpClient(handler);
        var response = await client.GetStringAsync("https://httpbin.org/ip");
        Console.WriteLine(response);
    }
}

Go

Basic Request

go
package main

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

func main() {
    proxyURL, _ := url.Parse("http://username:[email protected]:8080")

    client := &http.Client{
        Transport: &http.Transport{
            Proxy: http.ProxyURL(proxyURL),
        },
    }

    resp, err := client.Get("https://httpbin.org/ip")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}

PHP

Using cURL

php
<?php
$proxy = 'residential.birdproxies.com:8080';
$proxyAuth = 'username:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://httpbin.org/ip');
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyAuth);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
} else {
    echo $response;
}

curl_close($ch);
?>

Using Guzzle

php
<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

$client = new Client([
    'proxy' => 'http://username:[email protected]:8080'
]);

$response = $client->request('GET', 'https://httpbin.org/ip');
echo $response->getBody();
?>

Java

Using HttpURLConnection

java
import java.net.*;
import java.io.*;

public class ProxyExample {
    public static void main(String[] args) throws Exception {
        Proxy proxy = new Proxy(Proxy.Type.HTTP,
            new InetSocketAddress("residential.birdproxies.com", 8080));

        Authenticator.setDefault(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(
                    "username", "password".toCharArray());
            }
        });

        URL url = new URL("https://httpbin.org/ip");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);

        BufferedReader reader = new BufferedReader(
            new InputStreamReader(conn.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

OpenClaw (AI Agent)

OpenClaw is an open-source AI agent framework for browser automation and web scraping. BirdProxies integrates with both the browser tool and web_fetch HTTP client. See the full OpenClaw proxy setup guide for detailed instructions.

Browser Proxy Configuration

json
{
  "browser": {
    "proxy": {
      "server": "http://gate.birdproxies.com:7777",
      "username": "YOUR_USERNAME",
      "password": "YOUR_PASSWORD"
    }
  }
}

HTTP Proxy (web_fetch)

bash
# Add to your .env file
HTTP_PROXY=http://USER:[email protected]:7777
HTTPS_PROXY=http://USER:[email protected]:7777
NO_PROXY=127.0.0.1,localhost

**Important:** Set NO_PROXY=127.0.0.1,localhost to prevent proxy routing from breaking OpenClaw's internal CDP health checks.

For sticky sessions (multi-page workflows), append -session-RANDOM to your username. For country targeting, append -country-us or any ISO code.

Troubleshooting

Common Issues

  • Increase timeout to 30 seconds
  • Check if your IP is whitelisted (ISP proxies)
  • Verify credentials are correct
  • Check username and password
  • Ensure proxy format is correct: `http://user:pass@host:port`
  • Some tools require URL encoding for special characters in password
  • Add `verify=False` in Python requests
  • Use `--insecure` flag in cURL
  • Disable SSL verification in your HTTP client (development only)

1. Test with cURL first: curl -x http://user:pass@host:port https://httpbin.org/ip

2. Check if residential proxies are active in your dashboard

3. For ISP proxies, verify the specific IP:Port is correct

4. Contact support if issues persist

**Need more help?** See our Troubleshooting Guide or Best Practices.

Found an issue? Let us know on Discord
Go to Dashboard