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"
https://webtrackly.com/api/v1/JSONGET?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
| Header | Description |
|---|---|
| X-RateLimit-Limit | Monthly call limit |
| X-RateLimit-Remaining | Remaining calls this month |
| X-RateLimit-Used | Calls used this month |
Packages
/api/v1/packages/
List all domain packages (zone files and technology data). Supports filtering and search.
| Parameter | Type | Description |
|---|---|---|
| type | string | Filter by type: zone, technology, detailed |
| zone | string | Filter by zone TLD (e.g. com, net) |
| technology | string | Filter by technology name |
| q | string | Search by name |
| page | int | Page number (default: 1) |
/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
/api/v1/datasets/
List all premium datasets. Supports search.
| Parameter | Type | Description |
|---|---|---|
| q | string | Search by name or description |
| page | int | Page number (default: 1) |
/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
/api/v1/leads/
List all business leads packages. Supports filtering by niche, country, state, and city.
| Parameter | Type | Description |
|---|---|---|
| niche | string | Filter by niche slug |
| country | string | Filter by country |
| state | string | Filter by state |
| city | string | Filter by city |
| min_leads | int | Minimum leads count |
| page | int | Page number (default: 1) |
/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***"}
]
}
/api/v1/leads/niches/
List all available niches with package and leads counts.
/api/v1/leads/countries/
List all available countries with package and leads counts.
Account
/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.
| Plan | Calls/month | Price |
|---|---|---|
| API Starter | 10,000 | $29/mo |
| API Professional | 100,000 | $99/mo |
| API Enterprise | 1,000,000 | $299/mo |
Results are paginated with a maximum of 20 items per page to prevent bulk data extraction. View plans
Errors
| Code | Description |
|---|---|
| 401 | Missing or invalid API key |
| 403 | API key disabled or subscription expired |
| 404 | Resource not found |
| 429 | Monthly 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"