WebTrackly API v1

RESTful API for domain intelligence data

Authentication

All API requests require a Bearer token in the Authorization header. Get your API key from the API Dashboard after subscribing to an API plan.

Authorization: Bearer YOUR_API_KEY

Quick Start

curl "https://webtrackly.com/api/v1/packages/?type=technology&q=wordpress" \
     -H "Authorization: Bearer YOUR_API_KEY"
Base URL: https://webtrackly.com/api/v1/
Format: JSON
Method: GET
Pagination: ?page=1 (20 per page)

Response Format

List endpoints return paginated results. Rate limit info is included in response headers.

{
  "results": [...],
  "count": 1511,
  "page": 1,
  "pages": 76,
  "has_next": true
}

Response Headers

HeaderDescription
X-RateLimit-LimitMonthly call limit
X-RateLimit-RemainingRemaining calls this month
X-RateLimit-UsedCalls used this month

Packages

GET /api/v1/packages/

List all domain packages (zone files and technology data). Supports filtering and search.

ParameterTypeDescription
typestringFilter by type: zone, technology, detailed
zonestringFilter by zone TLD (e.g. com, net)
technologystringFilter by technology name
qstringSearch by name
pageintPage number (default: 1)
GET /api/v1/packages/{slug}/

Get detailed information about a specific package, including sample domains.

{
  "slug": "com-zone",
  "name": ".com Zone File",
  "package_type": "zone",
  "zone": "com",
  "domain_count": 150000000,
  "price": "49.00",
  "updated_at": "2026-03-08",
  "sample_domains": ["example.com", "test.com", ...]
}

Datasets

GET /api/v1/datasets/

List all premium datasets. Supports search.

ParameterTypeDescription
qstringSearch by name or description
pageintPage number (default: 1)
GET /api/v1/datasets/{slug}/

Get dataset details including sample data.

{
  "slug": "ecommerce-domains-2026",
  "name": "E-commerce Domains 2026",
  "description": "...",
  "record_count": 500000,
  "price": "99.00",
  "sample": [...]
}

Business Leads

GET /api/v1/leads/

List all business leads packages. Supports filtering by niche, country, state, and city.

ParameterTypeDescription
nichestringFilter by niche slug
countrystringFilter by country
statestringFilter by state
citystringFilter by city
min_leadsintMinimum leads count
pageintPage number (default: 1)
GET /api/v1/leads/{slug}/

Get leads package details with masked sample contacts (email and phone partially hidden).

{
  "slug": "dentists-new-york",
  "name": "Dentists β€” New York",
  "niche": "dentists",
  "country": "US",
  "leads_count": 12500,
  "price": "29.00",
  "sample_contacts": [
    {"name": "Dr. Smith", "email": "drs***", "phone": "212***"}
  ]
}
GET /api/v1/leads/niches/

List all available niches with package and leads counts.

GET /api/v1/leads/countries/

List all available countries with package and leads counts.

Account

GET /api/v1/account/

Get your API subscription info, usage stats, and API key list.

{
  "subscription": {
    "plan": "API Professional",
    "status": "active",
    "calls_limit": 100000,
    "calls_used": 1523,
    "calls_remaining": 98477,
    "expires_at": "2026-04-08"
  },
  "keys": [
    {"key": "wt_live_abc...xyz", "name": "Production", "is_active": true}
  ]
}

Rate Limits

API calls are counted monthly. Limits depend on your API subscription plan.

PlanCalls/monthPrice
API Starter10,000$29/mo
API Professional100,000$99/mo
API Enterprise1,000,000$299/mo

Results are paginated with a maximum of 20 items per page to prevent bulk data extraction. View plans

Errors

CodeDescription
401Missing or invalid API key
403API key disabled or subscription expired
404Resource not found
429Monthly API call limit exceeded
{"error": "Rate limit exceeded", "limit": 10000, "used": 10000}

Code Examples

Python
import requests

API_KEY = "YOUR_API_KEY"
BASE = "https://webtrackly.com/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}

# Search technology packages
r = requests.get(f"{BASE}/packages/", headers=headers,
                 params={"type": "technology", "q": "wordpress"})
for pkg in r.json()["results"]:
    print(f"{pkg['name']}: {pkg['domain_count']} domains")

# Get leads by niche
r = requests.get(f"{BASE}/leads/", headers=headers,
                 params={"niche": "dentists", "country": "US"})
for lead in r.json()["results"]:
    print(f"{lead['name']}: {lead['leads_count']} leads")

# Check usage
r = requests.get(f"{BASE}/account/", headers=headers)
info = r.json()["subscription"]
print(f"Used {info['calls_used']}/{info['calls_limit']}")
JavaScript
const API_KEY = 'YOUR_API_KEY';
const BASE = 'https://webtrackly.com/api/v1';
const headers = { 'Authorization': `Bearer ${API_KEY}` };

// Search packages
const res = await fetch(`${BASE}/packages/?type=zone&q=com`, { headers });
const data = await res.json();
data.results.forEach(pkg =>
    console.log(`${pkg.name}: ${pkg.domain_count} domains`)
);

// Check rate limits from headers
console.log('Remaining:', res.headers.get('X-RateLimit-Remaining'));
PHP
$apiKey = 'YOUR_API_KEY';
$base = 'https://webtrackly.com/api/v1';

$ch = curl_init("$base/packages/?type=technology&q=wordpress");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer $apiKey"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);

foreach ($result['results'] as $pkg) {
    echo "- {$pkg['name']}: {$pkg['domain_count']} domains\n";
}
cURL
# List zone packages
curl "https://webtrackly.com/api/v1/packages/?type=zone" \
     -H "Authorization: Bearer YOUR_API_KEY"

# Get package details
curl "https://webtrackly.com/api/v1/packages/com-zone/" \
     -H "Authorization: Bearer YOUR_API_KEY"

# List leads niches
curl "https://webtrackly.com/api/v1/leads/niches/" \
     -H "Authorization: Bearer YOUR_API_KEY"

# Check account usage
curl "https://webtrackly.com/api/v1/account/" \
     -H "Authorization: Bearer YOUR_API_KEY"