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_hereSecurity Note: Keep your API key secret. Never expose it in client-side code or public repositories.
Base URL
https://aldous-api.neobotnet.comEndpoints
GET
/api/v1/programsList 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
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number, 1-indexed (default: 1) |
per_page | integer | Results per page (default: 25, max: 100) |
search | string | Filter by program name |
include_stats | boolean | Include 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/:idGet 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 falseExport 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.txtGet 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.txtBash 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