NEW CARDING CHAT IN TELEGRAM

Create your own BOT

Friend

Professional
Messages
2,641
Reputation
194
Reaction score
823
Points
113
Introducing: THE BENDER-SEARCH API

The Bender-Search website works great for manual lookups, but let's face it – when you need to integrate into your systems or process hundreds of requests, an API is what you really need.

Our API delivers the same reliable data you're used to, just packaged for direct integration into your applications and needs.

HOW THE API WORKS

The API keeps things clean and simple with three core endpoints:
  • Available Base - Check available lookup types and pricing
  • Search Data - Submit your lookup request
  • Result - Grab your lookup results
Authentication is handled via a token we provide in your dashboard, making implementation straightforward in your language of choice.

Br5tL6H.png


For example with Python:

Python:
import requests
import time

API_KEY = "your_api_key_here"
BASE_URL = "https://bender-search.ru/apiv1"

def lookup_ssn(firstname, lastname, zip_code):
    """
    Complete SSN lookup with result retrieval and error handling
    """
    # Step 1: Submit the search request
    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/x-www-form-urlencoded"
    }
 
    payload = {
        "search_type": 1,  # SSN/DOB(TOP)
        "firstname": firstname,
        "lastname": lastname,
        "zip": zip_code
    }
 
    try:
        response = requests.post(f"{BASE_URL}/search_data", data=payload, headers=headers)
        response.raise_for_status()  # Raise exception for 4XX/5XX responses
   
        result = response.json()
   
        if result["status"] != "SUCCESS":
            return {"error": result.get("message", "Unknown error")}
   
        search_id = result["result"]["search_id"]
   
        # Step 2: Wait briefly and retrieve results
        time.sleep(3)  # Allow time for processing
   
        result_response = requests.post(
            f"{BASE_URL}/result",
            data={"search_id": search_id},
            headers=headers
        )
        result_response.raise_for_status()
        result_data = result_response.json()
   
        if result_data["status"] == "SUCCESS":
            return {
                "status": "SUCCESS",
                "search_id": search_id,
                "data": result_data["result"]
            }
        elif "Task not ready" in result_data.get("message", ""):
            return {
                "status": "PENDING",
                "search_id": search_id,
                "message": "Task is still processing, check again later"
            }
        else:
            return {
                "status": "FAILED",
                "message": result_data.get("message", "Unknown error")
            }
 
    except requests.exceptions.RequestException as e:
        return {"error": f"Request failed: {str(e)}"}
    except ValueError as e:
        return {"error": f"JSON parsing error: {str(e)}"}
    except Exception as e:
        return {"error": f"Unexpected error: {str(e)}"}

# Example usage
result = lookup_ssn("John", "Smith", "10001")
print(result)

# If the task is still pending, you can check again later with:
if result.get("status") == "PENDING":
    # Function to check a pending task
    def check_pending_result(search_id):
        headers = {
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/x-www-form-urlencoded"
        }
   
        try:
            response = requests.post(
                f"{BASE_URL}/result",
                data={"search_id": search_id},
                headers=headers
            )
            response.raise_for_status()
            return response.json()
        except Exception as e:
            return {"error": str(e)}
 
    # Check again after a delay
    time.sleep(5)
    updated_result = check_pending_result(result["search_id"])
    print(updated_result)

The API gives you access to everything in our toolkit:
  • SSN/DOB (standard and TOP versions)
  • SSN by ZIP, City, or State
  • DL and Advanced DL Lookups
  • DEA Lookup
  • Reverse SSN Lookup
  • CS
  • BG+DOB
  • Reverse Phone, Email, and Address lookups
  • Address AutoComplete
  • TLO
  • Business and Property Reports
  • And the rest of our lookup options
    zumN69M.png

BUILD YOUR OWN TELEGRAM BOT

Many users have asked for the ability to create private Telegram bots. Now with our API you can build one that delivers results directly to you:

Fi8Nm3q.png


Sample code:

Code:
const { Telegraf } = require('telegraf');
const axios = require('axios');

const bot = new Telegraf('YOUR_TELEGRAM_BOT_TOKEN');
const BENDER_API_KEY = 'your_api_key_here';
const BASE_URL = 'https://bender-search.ru/apiv1';

// Helper function to handle API errors
const handleApiError = (error) => {
  if (error.response) {
    // The request was made and the server responded with a status code
    return `Error: ${error.response.status} - ${error.response.data.message || 'Unknown error'}`;
  } else if (error.request) {
    // The request was made but no response was received
    return 'Error: No response received from server';
  } else {
    // Something happened in setting up the request
    return `Error: ${error.message}`;
  }
};

// Function to check result status with retries
const checkResult = async (search_id, ctx, retries = 0, maxRetries = 3) => {
  try {
    const resultResponse = await axios.post(`${BASE_URL}/result`,
      `search_id=${search_id}`, {
      headers: {
        'Authorization': `Bearer ${BENDER_API_KEY}`,
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    });
 
    if (resultResponse.data.status === "SUCCESS") {
      // Format the result for better readability
      const result = resultResponse.data.result;
      let formattedResult = '✅ Results found:\n\n';
 
      if (typeof result === 'object') {
        formattedResult += JSON.stringify(result, null, 2);
      } else {
        formattedResult += result;
      }
 
      return ctx.reply(formattedResult);
    } else if (resultResponse.data.message === "Task not ready" && retries < maxRetries) {
      // If task not ready and we haven't exceeded max retries
      ctx.reply(`⏳ Search still processing (attempt ${retries + 1}/${maxRetries})...`);
 
      // Wait longer between retries
      await new Promise(resolve => setTimeout(resolve, 3000));
      return checkResult(search_id, ctx, retries + 1, maxRetries);
    } else {
      return ctx.reply(`❌ Status: ${resultResponse.data.message || 'Unknown error'}\nUse /check ${search_id} to try again later.`);
    }
  } catch (error) {
    return ctx.reply(handleApiError(error));
  }
};

// SSN lookup command
bot.command('ssn', async (ctx) => {
  const args = ctx.message.text.split(' ');
  if (args.length < 4) {
    return ctx.reply('Usage: /ssn [firstname] [lastname] [zip]');
  }
 
  const firstname = args[1];
  const lastname = args[2];
  const zip = args[3];
 
  try {
    // Initiate the lookup
    ctx.reply(`🔍 Searching for ${firstname} ${lastname} in ${zip}...`);
 
    const response = await axios.post(`${BASE_URL}/search_data`,
      `search_type=1&firstname=${firstname}&lastname=${lastname}&zip=${zip}`, {
      headers: {
        'Authorization': `Bearer ${BENDER_API_KEY}`,
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    });
 
    if (response.data.status === "SUCCESS") {
      const search_id = response.data.result.search_id;
      ctx.reply(`🔑 Search initiated! ID: ${search_id}\nChecking results...`);
 
      // Wait a moment before checking
      await new Promise(resolve => setTimeout(resolve, 2000));
 
      // Check for results with retry logic
      return checkResult(search_id, ctx);
    } else {
      return ctx.reply(`❌ Lookup failed: ${response.data.message || 'Unknown error'}`);
    }
  } catch (error) {
    return ctx.reply(handleApiError(error));
  }
});

// Check command for previously initiated searches
bot.command('check', async (ctx) => {
  const args = ctx.message.text.split(' ');
  if (args.length < 2) {
    return ctx.reply('Usage: /check [search_id]');
  }
 
  const search_id = args[1];
  ctx.reply(`🔍 Checking status for search ID: ${search_id}...`);
 
  return checkResult(search_id, ctx);
});

// Phone lookup command
bot.command('phone', async (ctx) => {
  const args = ctx.message.text.split(' ');
  if (args.length < 2) {
    return ctx.reply('Usage: /phone [phone_number]');
  }
 
  const phone = args[1].replace(/[^\d]/g, ''); // Strip non-digits
 
  if (phone.length < 10) {
    return ctx.reply('❌ Invalid phone format. Please provide at least 10 digits.');
  }
 
  try {
    ctx.reply(`🔍 Searching for information on phone: ${phone}...`);
 
    const response = await axios.post(`${BASE_URL}/search_data`,
      `search_type=24&phone=${phone}`, {
      headers: {
        'Authorization': `Bearer ${BENDER_API_KEY}`,
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    });
 
    if (response.data.status === "SUCCESS") {
      const search_id = response.data.result.search_id;
      ctx.reply(`🔑 Search initiated! ID: ${search_id}\nChecking results...`);
 
      // Wait a moment before checking
      await new Promise(resolve => setTimeout(resolve, 2000));
 
      // Check for results with retry logic
      return checkResult(search_id, ctx);
    } else {
      return ctx.reply(`❌ Lookup failed: ${response.data.message || 'Unknown error'}`);
    }
  } catch (error) {
    return ctx.reply(handleApiError(error));
  }
});

// Help command
bot.command('help', (ctx) => {
  ctx.reply(`
🔍 *Bender Search Bot Commands* 🔍

/ssn [firstname] [lastname] [zip] - Look up SSN by name and ZIP
/phone [phone_number] - Reverse phone lookup
/check [search_id] - Check status of previous search
/help - Show this help message

Example: /ssn John Smith 10001
Example: /phone 2028985800
  `);
});

// Start command
bot.command('start', (ctx) => {
  ctx.reply(`
Welcome to your private Bender Search bot!

This bot allows you to perform lookups directly through Telegram.
Type /help to see available commands.
  `);
});

// Handle errors
bot.catch((err, ctx) => {
  console.error('Bot error:', err);
  ctx.reply('An error occurred with the bot. Please try again later.');
});

// Start the bot
bot.launch().then(() => {
  console.log('Bot is running!');
}).catch(err => {
  console.error('Failed to start bot:', err);
});

// Enable graceful stop
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));

Your private bot gives you control over who can access your lookups – limit it to yourself or share with trusted partners.

MASS LOOKUPS MADE EFFICIENT

When dealing with dozens or hundreds of lookups, our API really shines. What would take hours of manual work becomes a process that takes minutes.

RAEOGAP.png


Here's a sample of a single-file PHP code that hooks to our service and allows you to mass check multiple phone numbers fast and efficiently:

PHP:
<?php
// Mass Reverse Phone Lookup Tool
// This script processes a list of phone numbers and performs reverse lookups

// Configuration
$api_key = "your_api_key_here";
$base_url = "https://bender-search.ru/apiv1";
$debug_mode = false; // Set to true to see detailed API responses

// Initialize variables
$search_results = [];
$retrieved_results = [];
$pending_tasks = [];
$message = "";
$debug_log = [];

// Process form submission
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST['submit_phones'])) {
        // Process text area input
        $input_data = trim($_POST['phone_numbers']);
        if (!empty($input_data)) {
            $lines = explode("\n", $input_data);
            foreach ($lines as $index => $line) {
                $phone = trim($line);
                if (empty($phone)) continue;
           
                // Basic phone number validation and formatting
                $phone = preg_replace('/[^0-9]/', '', $phone);
                if (strlen($phone) < 10) {
                    $message .= "Invalid phone number format for line " . ($index + 1) . ": " . $line . "<br>";
                    continue;
                }
           
                // Prepare and make API call
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $base_url . "/search_data");
                curl_setopt($ch, CURLOPT_POST, 1);
                $post_fields = "search_type=24&phone=" . urlencode($phone);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
           
                $headers = [
                    "Authorization: Bearer " . $api_key,
                    "Content-Type: application/x-www-form-urlencoded"
                ];
                curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
           
                // Enable header in output for debugging
                if ($debug_mode) {
                    curl_setopt($ch, CURLOPT_HEADER, 1);
                    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
                }
           
                // Execute the request
                $response = curl_exec($ch);
           
                // Debug info
                if ($debug_mode) {
                    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
                    $header = substr($response, 0, $header_size);
                    $body = substr($response, $header_size);
                    $info = curl_getinfo($ch);
               
                    $debug_log[] = [
                        'request_url' => $info['url'],
                        'request_headers' => curl_getinfo($ch, CURLINFO_HEADER_OUT),
                        'request_body' => $post_fields,
                        'response_code' => $info['http_code'],
                        'response_headers' => $header,
                        'response_body' => $body
                    ];
               
                    // Use the body as response for further processing
                    $response = $body;
                }
           
                // Check for errors
                if ($response === false) {
                    $error = curl_error($ch);
                    $message .= "cURL Error: " . $error . " for phone " . $phone . "<br>";
                    continue;
                }
           
                $result = json_decode($response, true);
           
                // If we can't connect to API or received invalid JSON, log it
                if ($result === null) {
                    $message .= "Invalid JSON response for phone " . $phone . "<br>";
                    continue;
                }
           
                curl_close($ch);
           
                // Store the result if successful
                if (isset($result['status']) && $result['status'] === "SUCCESS" && isset($result['result']['search_id'])) {
                    $search_results[] = [
                        'phone' => $phone,
                        'search_id' => $result['result']['search_id'],
                        'status' => 'PENDING'
                    ];
                } else {
                    $error_msg = isset($result['message']) ? $result['message'] : "Unknown error";
                    $message .= "API Error for phone " . $phone . ": " . $error_msg . "<br>";
                }
           
                // Add 1 second delay between requests to avoid rate limiting
                if ($index < count($lines) - 1) {
                    sleep(1);
                }
            }
       
            if (!empty($search_results)) {
                $message = "Data processed successfully. " . count($search_results) . " phone lookups were initiated.";
            } elseif (empty($message)) {
                $message = "No valid data was processed. Please check your input.";
            }
        } else {
            $message = "Please enter phone numbers in the text area.";
        }
    } elseif (isset($_POST['retrieve_results']) || isset($_POST['retry_pending'])) {
        // Process the retrieval of results
        if (!empty($_POST['search_results'])) {
            $search_results = json_decode($_POST['search_results'], true);
            $pending_tasks = []; // Reset pending tasks
       
            foreach ($search_results as $index => $result) {
                // Skip if we're retrying only pending tasks and this one is already processed
                if (isset($_POST['retry_pending']) && (!isset($result['status']) || $result['status'] !== 'PENDING')) {
                    // Keep existing result
                    $retrieved_results[] = $result;
                    continue;
                }
           
                $search_id = $result['search_id'];
           
                // Prepare and make API call to retrieve results
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $base_url . "/result");
                curl_setopt($ch, CURLOPT_POST, 1);
                $post_fields = "search_id=" . $search_id;
                curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
           
                $headers = [
                    "Authorization: Bearer " . $api_key,
                    "Content-Type: application/x-www-form-urlencoded"
                ];
                curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
           
                // Enable header in output for debugging
                if ($debug_mode) {
                    curl_setopt($ch, CURLOPT_HEADER, 1);
                    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
                }
           
                // Execute the request
                $response = curl_exec($ch);
           
                // Debug info
                if ($debug_mode) {
                    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
                    $header = substr($response, 0, $header_size);
                    $body = substr($response, $header_size);
                    $info = curl_getinfo($ch);
               
                    $debug_log[] = [
                        'request_url' => $info['url'],
                        'request_headers' => curl_getinfo($ch, CURLINFO_HEADER_OUT),
                        'request_body' => $post_fields,
                        'response_code' => $info['http_code'],
                        'response_headers' => $header,
                        'response_body' => $body
                    ];
               
                    // Use the body as response for further processing
                    $response = $body;
                }
           
                // Check for errors
                if ($response === false) {
                    $error = curl_error($ch);
                    $retrieved_results[] = [
                        'phone' => $result['phone'],
                        'result' => "CURL ERROR: " . $error,
                        'status' => 'ERROR'
                    ];
                    continue;
                }
           
                $api_result = json_decode($response, true);
           
                // If we can't connect to API or received invalid JSON, log it
                if ($api_result === null) {
                    $retrieved_results[] = [
                        'phone' => $result['phone'],
                        'result' => "INVALID JSON RESPONSE",
                        'status' => 'ERROR'
                    ];
                    continue;
                }
           
                curl_close($ch);
           
                // Handle different response cases
                if (isset($api_result['status'])) {
                    if ($api_result['status'] === "SUCCESS") {
                        // Format the person info nicely if it exists
                        $formatted_result = "NO DATA";
                   
                        if (isset($api_result['result']['result']['person'])) {
                            $person = $api_result['result']['result']['person'];
                            $formatted_result = "";
                       
                            // Name
                            if (isset($person['name'])) {
                                $name_parts = [];
                                if (isset($person['name']['firstName'])) $name_parts[] = $person['name']['firstName'];
                                if (isset($person['name']['middleName'])) $name_parts[] = $person['name']['middleName'];
                                if (isset($person['name']['lastName'])) $name_parts[] = $person['name']['lastName'];
                           
                                if (!empty($name_parts)) {
                                    $formatted_result .= "Name: " . implode(" ", $name_parts) . "\n";
                                }
                            }
                       
                            // Age
                            if (isset($person['age'])) {
                                $formatted_result .= "Age: " . $person['age'] . "\n";
                            }
                       
                            // Address
                            if (isset($person['address'])) {
                                $addr = $person['address'];
                                $addr_parts = [];
                           
                                if (!empty($addr['street'])) $addr_parts[] = $addr['street'];
                                if (!empty($addr['unit'])) $addr_parts[] = $addr['unit'];
                                if (!empty($addr['city'])) $addr_parts[] = $addr['city'];
                                if (!empty($addr['state'])) $addr_parts[] = $addr['state'];
                                if (!empty($addr['zip'])) $addr_parts[] = $addr['zip'];
                           
                                if (!empty($addr_parts)) {
                                    $formatted_result .= "Address: " . implode(", ", $addr_parts) . "\n";
                                }
                            }
                       
                            // Email
                            if (isset($person['email'])) {
                                $formatted_result .= "Email: " . $person['email'] . "\n";
                            }
                       
                            // Phone
                            if (isset($person['phone'])) {
                                if (isset($person['phone']['phoneNumber'])) {
                                    $formatted_result .= "Phone: " . $person['phone']['phoneNumber'];
                               
                                    if (isset($person['phone']['type'])) {
                                        $formatted_result .= " (" . $person['phone']['type'] . ")";
                                    }
                               
                                    $formatted_result .= "\n";
                                }
                            }
                        } else {
                            // If there's no person data, just show the raw result
                            $formatted_result = json_encode($api_result['result']);
                        }
                   
                        $retrieved_results[] = [
                            'phone' => $result['phone'],
                            'result' => $formatted_result,
                            'status' => 'SUCCESS'
                        ];
                    } elseif (isset($api_result['message']) && $api_result['message'] === "Task not ready") {
                        // Add to pending tasks for retry later
                        $pending_tasks[] = [
                            'phone' => $result['phone'],
                            'search_id' => $result['search_id'],
                            'status' => 'PENDING',
                            'message' => 'Task not ready'
                        ];
                    } else {
                        $error_msg = isset($api_result['message']) ? $api_result['message'] : "Unknown error";
                        $retrieved_results[] = [
                            'phone' => $result['phone'],
                            'result' => "FAIL: " . $error_msg,
                            'status' => 'FAIL'
                        ];
                    }
                } else {
                    $retrieved_results[] = [
                        'phone' => $result['phone'],
                        'result' => "INVALID RESPONSE",
                        'status' => 'ERROR'
                    ];
                }
            }
       
            // Update search results with pending tasks
            $search_results = $pending_tasks;
       
            if (empty($pending_tasks)) {
                $message = "All results retrieved successfully.";
            } else {
                $message = count($pending_tasks) . " tasks are still not ready. You can retry retrieving them.";
            }
        } else {
            $message = "No search results to retrieve.";
        }
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mass Reverse Phone Lookup</title>
    <style>
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            line-height: 1.6;
            color: #333;
            background-color: #f5f7fa;
            margin: 0;
            padding: 20px;
        }
        .container {
            max-width: 1000px;
            margin: 0 auto;
            background: white;
            padding: 25px;
            border-radius: 8px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
        }
        h1 {
            color: #2c3e50;
            text-align: center;
            margin-bottom: 30px;
        }
        .input-section, .results-section {
            margin-bottom: 30px;
        }
        label {
            display: block;
            margin-bottom: 8px;
            font-weight: 600;
        }
        textarea {
            width: 100%;
            min-height: 150px;
            padding: 12px;
            border: 1px solid #ddd;
            border-radius: 4px;
            resize: vertical;
            font-family: inherit;
            font-size: 14px;
        }
        .readonly {
            background-color: #f9f9f9;
        }
        .input-format {
            font-size: 14px;
            color: #7f8c8d;
            margin-top: 5px;
            margin-bottom: 10px;
            font-weight: bold;
        }
        .button {
            background-color: #3498db;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s;
        }
        .button:hover {
            background-color: #2980b9;
        }
        .retry-button {
            background-color: #e67e22;
        }
        .retry-button:hover {
            background-color: #d35400;
        }
        .message {
            padding: 10px;
            margin: 15px 0;
            border-radius: 4px;
        }
        .success {
            background-color: #d4edda;
            color: #155724;
        }
        .error {
            background-color: #f8d7da;
            color: #721c24;
        }
        .warning {
            background-color: #fff3cd;
            color: #856404;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin: 20px 0;
        }
        th, td {
            padding: 12px 15px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        th {
            background-color: #f2f2f2;
            font-weight: 600;
        }
        tr:hover {
            background-color: #f5f5f5;
        }
        .card {
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            padding: 20px;
            margin-bottom: 20px;
            background-color: #fff;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
        }
        .status-cell {
            font-weight: bold;
        }
        .status-pending {
            color: #e67e22;
        }
        .status-success {
            color: #27ae60;
        }
        .status-fail {
            color: #e74c3c;
        }
        .status-error {
            color: #c0392b;
        }
        pre {
            white-space: pre-wrap;
            word-wrap: break-word;
            background-color: #f8f9fa;
            padding: 10px;
            border-radius: 4px;
            font-size: 14px;
            font-family: 'Courier New', monospace;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Mass Reverse Phone Lookup</h1>
   
        <?php if (!empty($message)): ?>
            <div class="message <?php
                if (strpos($message, 'successfully') !== false) {
                    echo 'success';
                } elseif (strpos($message, 'not ready') !== false) {
                    echo 'warning';
                } else {
                    echo 'error';
                }
            ?>">
                <?php echo $message; ?>
            </div>
        <?php endif; ?>
   
        <div class="card input-section">
            <h2>Enter Phone Numbers</h2>
            <form method="post">
                <label for="phone_numbers">Enter Phone Numbers (One per line):</label>
                <div class="input-format">You can use any format: 202-898-5800, (202)8985800, 2028985800, etc.</div>
                <textarea id="phone_numbers" name="phone_numbers" placeholder="2028985800"><?php echo isset($_POST['phone_numbers']) ? htmlspecialchars($_POST['phone_numbers']) : ''; ?></textarea>
                <br><br>
                <button type="submit" name="submit_phones" class="button">Submit Phone Numbers</button>
            </form>
        </div>
   
        <?php if (!empty($search_results)): ?>
            <div class="card results-section">
                <h2>Pending Lookups</h2>
                <p>The following lookups are still pending:</p>
                <table>
                    <thead>
                        <tr>
                            <th>Phone Number</th>
                            <th>Search ID</th>
                            <th>Status</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($search_results as $result): ?>
                            <tr>
                                <td><?php echo htmlspecialchars($result['phone']); ?></td>
                                <td><?php echo htmlspecialchars($result['search_id']); ?></td>
                                <td class="status-cell status-pending"><?php echo isset($result['message']) ? htmlspecialchars($result['message']) : 'PENDING'; ?></td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
           
                <form method="post">
                    <input type="hidden" name="search_results" value="<?php echo htmlspecialchars(json_encode($search_results)); ?>">
                    <button type="submit" name="retrieve_results" class="button">Retrieve Results</button>
                    <?php if (isset($_POST['retrieve_results']) || isset($_POST['retry_pending'])): ?>
                        <button type="submit" name="retry_pending" class="button retry-button">Retry Pending Tasks</button>
                    <?php endif; ?>
                </form>
            </div>
        <?php endif; ?>
   
        <?php if (!empty($retrieved_results)): ?>
            <div class="card results-section">
                <h2>Retrieved Results</h2>
                <table>
                    <thead>
                        <tr>
                            <th>Phone Number</th>
                            <th>Result</th>
                            <th>Status</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($retrieved_results as $result): ?>
                            <tr>
                                <td><?php echo htmlspecialchars($result['phone']); ?></td>
                                <td>
                                    <?php if ($result['status'] === 'SUCCESS'): ?>
                                        <pre><?php echo htmlspecialchars($result['result']); ?></pre>
                                    <?php else: ?>
                                        <?php echo htmlspecialchars($result['result']); ?>
                                    <?php endif; ?>
                                </td>
                                <td class="status-cell status-<?php echo strtolower($result['status']); ?>">
                                    <?php echo htmlspecialchars($result['status']); ?>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
           
                <div style="margin-top: 20px;">
                    <label for="final_results">Export Results (CSV Format):</label>
                    <textarea id="final_results" class="readonly" readonly rows="10"><?php
                        echo "Phone,Status,Result\n";
                        foreach ($retrieved_results as $result) {
                            // Format as CSV with proper escaping
                            $phone = $result['phone'];
                            $status = $result['status'];
                            $result_text = str_replace("\n", " ", $result['result']); // Remove newlines
                            $result_text = str_replace('"', '""', $result_text); // Escape quotes
                            echo "$phone,$status,\"$result_text\"\n";
                        }
                    ?></textarea>
                </div>
            </div>
        <?php endif; ?>
    </div>
</body>
</html>

Our API is designed for high-volume operations, so you can process hundreds of lookups efficiently without breaking a sweat.

SHOP/SERVICE INTEGRATION

If you run your own shop, our API integrates seamlessly to provide lookup capabilities within your existing systems. No more hassle of building your own service from scratch. Just hook your shop to our API, send us the requests, and we handle everything—instant lookups, data processing, and reliable results delivered straight to your customers.

REAL-WORLD APPLICATIONS

Our clients are already using the API in powerful ways:
  • Lookup Resellers
    A lookup service resells our main service, only adding a bit on top as commission. They maintain their own branding while using our powerful backend infrastructure and accurate data.
  • Private Bot Operators
    Some individuals operate their own private bot, where they can freely send a list of lookups and it will process them in parallel fast and efficiently. This automation eliminates manual work and delivers results in record time.
  • Shop Integration
    Multiple shops adding SSN lookup to their offering, giving customers a way to quickly get the SSN of the cards they sell.

EARLY ACCESS

Since this is a private feature, access is currently limited. If you're interested:
  1. Contact us with:
    • Your use case
    • Estimated monthly volume
    • Types of lookups you need
  2. If approved, we'll provide:
    • Your API key
    • Complete documentation
    • Implementation support

We're being selective to ensure quality service for all users.

NEXT LEVEL

The Bender-Search API puts our lookup capabilities directly in your hands. Whether you're building a private bot, processing mass lookups, or integrating data into your service, our API delivers reliable results efficiently.

It's about giving developers and power users the right tools for more advanced needs.

Consider how much more efficient your operation could be with direct API access. Contact us to try it now.

(c) Admin benderhub.ru
 
Last edited:
Top