API Access

Generate API keys to access reconnaissance data programmatically. Perfect for CLI tools, scripts, and integrations.

Your API Key
One API key for all programmatic access
Authentication
Include your API key in the request header

All API requests require authentication. Generate an API key using the form above, then include it in the X-API-Key header.

# Include this header in all requests
X-API-Key: nb_live_your_key_here

Security Note: Keep your API key secret. Never expose it in client-side code or public repositories.

Base URL
https://aldous-api.neobotnet.com

Endpoints

GET/api/v1/programs
List all bug bounty programs with pagination
curl -X GET "https://aldous-api.neobotnet.com/api/v1/programs?page=1&per_page=25" \
  -H "X-API-Key: YOUR_API_KEY"

Query Parameters

ParameterTypeDescription
pageintegerPage number, 1-indexed (default: 1)
per_pageintegerResults per page (default: 25, max: 100)
searchstringFilter by program name
include_statsbooleanInclude domain/subdomain counts (default: true)
Example Response
{
  "programs": [
    {
      "id": "uuid",
      "name": "Example Program",
      "description": "https://hackerone.com/example",
      "is_active": true,
      "priority": 3,
      "tags": ["vdp"],
      "domain_count": 15,
      "subdomain_count": 2340,
      "last_scan_date": "2026-01-10T10:00:00Z",
      "created_at": "2025-12-14T10:00:00Z"
    }
  ],
  "pagination": {
    "total": 59,
    "page": 1,
    "per_page": 25,
    "total_pages": 3,
    "has_next": true,
    "has_prev": false
  }
}
GET/api/v1/programs/:id
Get program details with statistics
curl -X GET "https://aldous-api.neobotnet.com/api/v1/programs/PROGRAM_ID" \
  -H "X-API-Key: YOUR_API_KEY"
Example Response
{
  "id": "ad9a8a21-6611-4846-bc39-ae803d4053a5",
  "name": "Verisign",
  "description": "https://bugcrowd.com/engagements/verisign",
  "is_active": true,
  "priority": 3,
  "tags": ["cli-created"],
  "domain_count": 4,
  "subdomain_count": 1147,
  "last_scan_date": "2026-01-10T16:20:00Z",
  "created_at": "2026-01-09T22:00:00Z",
  "updated_at": "2026-01-09T22:00:00Z"
}
Rate Limits

Currently, there are no rate limits. This may change in the future. Please be respectful and avoid making excessive requests.

Pagination & Best Practices
How to efficiently work with large datasets

Important: Always use pagination when fetching data. Large datasets (like URLs with 350k+ records) will timeout without filters.

Paginate through all programs

# Fetch page 1
curl -s "https://aldous-api.neobotnet.com/api/v1/programs?page=1&per_page=25" \
  -H "X-API-Key: YOUR_API_KEY" | jq '.programs[].name, .pagination'

# Check has_next and increment page until false

Export subdomains for a specific program

# Get subdomains with pagination (max 1000 per page)
curl -s "https://aldous-api.neobotnet.com/api/v1/programs/PROGRAM_ID/subdomains?page=1&per_page=1000" \
  -H "X-API-Key: YOUR_API_KEY" | \
  jq -r '.subdomains[].subdomain' > subdomains.txt

Get live servers (200 OK) for a program

curl -s "https://aldous-api.neobotnet.com/api/v1/http-probes?asset_id=PROGRAM_ID&status_code=200&limit=100" \
  -H "X-API-Key: YOUR_API_KEY" | \
  jq -r '.probes[].url'

Get all HTTP probes and pipe to nuclei

# Get live servers and pipe to nuclei
curl -s "https://aldous-api.neobotnet.com/api/v1/http-probes?status_code=200&limit=500" \
  -H "X-API-Key: YOUR_API_KEY" | \
  jq -r '.probes[].url' | nuclei -t cves/

Get DNS CNAME records for takeover analysis

curl -s "https://aldous-api.neobotnet.com/api/v1/programs/PROGRAM_ID/dns?record_type=CNAME&per_page=500" \
  -H "X-API-Key: YOUR_API_KEY" | \
  jq -r '.dns_records[] | "\(.subdomain) -> \(.record_value)"'

Export URLs with parameters (always filter by asset)

# Filter by asset_id to avoid timeout on large datasets
curl -s "https://aldous-api.neobotnet.com/api/v1/urls?asset_id=PROGRAM_ID&has_params=true&is_alive=true&limit=500" \
  -H "X-API-Key: YOUR_API_KEY" | \
  jq -r '.urls[].url' > urls_with_params.txt

Bash loop to paginate through all subdomains

#!/bin/bash
API_KEY="YOUR_API_KEY"
PROGRAM_ID="YOUR_PROGRAM_ID"
PAGE=1

while true; do
  RESPONSE=$(curl -s "https://aldous-api.neobotnet.com/api/v1/programs/$PROGRAM_ID/subdomains?page=$PAGE&per_page=1000" \
    -H "X-API-Key: $API_KEY")
  
  echo "$RESPONSE" | jq -r '.subdomains[].subdomain' >> all_subdomains.txt
  
  HAS_NEXT=$(echo "$RESPONSE" | jq -r '.pagination.has_next')
  [ "$HAS_NEXT" != "true" ] && break
  
  PAGE=$((PAGE + 1))
done