API Documentation
Complete guide to the Website Launches Domain Intelligence API. Enrich domains with authority scores, age, launch detection, and industry classification.
Introduction
The Website Launches API provides comprehensive domain intelligence through a simple REST API. Query any domain to get WebL Site Authority scores, registration dates, launch detection, industry categories, and moreβall in a single request.
Base URL
https://websitelaunches.com/api/v1
Key Features
- WebL Site Authority: 0-100 score based on Common Crawl data
- Domain Age: Exact registration date and calculated age
- Launch Detection: Public launch status and dates
- Industry Categories: 3-level taxonomy (L1/L2/L3)
- Batch Processing: Up to 50,000 domains per request
- Historical Data: Authority tracking over time (Growth+ tiers)
- Python CLI available:
pip install weblfor quick terminal lookups
Authentication
All API requests require authentication using your API key. Include your key in the
X-API-Key header with every request.
Get Your API Key
Sign up for free to get your API key instantly. 3,000 free lookups per month.
curl -H "X-API-Key: YOUR_API_KEY" \ https://websitelaunches.com/api/v1/domain/github.com
import requests headers = { 'X-API-Key': 'YOUR_API_KEY' } response = requests.get( 'https://websitelaunches.com/api/v1/domain/github.com', headers=headers ) data = response.json()
const response = await fetch('https://websitelaunches.com/api/v1/domain/github.com', { headers: { 'X-API-Key': 'YOUR_API_KEY' } }); const data = await response.json();
<?php $ch = curl_init('https://websitelaunches.com/api/v1/domain/github.com'); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'X-API-Key: YOUR_API_KEY' ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = json_decode($response, true);
Quick Start
Get started with a simple domain lookup in under 60 seconds:
1. Get Your API Key
2. Make Your First Request
Try looking up a domain:
curl -H "X-API-Key: YOUR_API_KEY" \ https://websitelaunches.com/api/v1/domain/stripe.com
import requests response = requests.get( 'https://websitelaunches.com/api/v1/domain/stripe.com', headers={'X-API-Key': 'YOUR_API_KEY'} ) if response.json()['ok']: domain_data = response.json()['data'] print(f"Authority: {domain_data['site_authority']}") print(f"Age: {domain_data['domain_age']} years")
const response = await fetch( 'https://websitelaunches.com/api/v1/domain/stripe.com', { headers: { 'X-API-Key': 'YOUR_API_KEY' } } ); const { ok, data } = await response.json(); if (ok) { console.log(`Authority: ${data.site_authority}`); console.log(`Age: ${data.domain_age} years`); }
<?php $ch = curl_init('https://websitelaunches.com/api/v1/domain/stripe.com'); curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: YOUR_API_KEY']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = json_decode(curl_exec($ch), true); if ($response['ok']) { echo "Authority: " . $response['data']['site_authority']; echo "\nAge: " . $response['data']['domain_age'] . " years"; }
3. View the Response
{
"ok": true,
"data": {
"domain": "stripe.com",
"site_authority": 89,
"domain_age": 16.3,
"domain_age_date": "2009-06-15",
"launch_detected": true,
"launch_date": "2010-09-01",
"category": "Finance",
"subcategory": "Payments",
"subcategory2": "Payment Processing",
"description": "Stripe is a financial infrastructure platform..."
}
}
Prefer the command line?
Install the Python CLI: pip install webl β View on GitHub
Domain Lookup
GET
/api/v1/domain/{domain}
Retrieve comprehensive intelligence for a single domain, including WebL Site Authority scores, age, launch detection, and industry classification.
Parameters
| Parameter | Type | Description |
|---|---|---|
domain required |
string | Path parameter. The domain name to lookup (e.g., "github.com") |
history optional |
boolean | Query parameter. Set to "true" to include historical authority tracking (Growth+ tiers only) |
Basic Example
curl -H "X-API-Key: YOUR_API_KEY" \ https://websitelaunches.com/api/v1/domain/github.com
import requests url = 'https://websitelaunches.com/api/v1/domain/github.com' headers = {'X-API-Key': 'YOUR_API_KEY'} response = requests.get(url, headers=headers) data = response.json()
const url = 'https://websitelaunches.com/api/v1/domain/github.com'; const response = await fetch(url, { headers: { 'X-API-Key': 'YOUR_API_KEY' } }); const data = await response.json();
<?php $url = 'https://websitelaunches.com/api/v1/domain/github.com'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: YOUR_API_KEY']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = json_decode($response, true);
Response
{
"ok": true,
"data": {
"domain": "github.com",
"site_authority": 85,
"domain_age": 17.2,
"domain_age_date": "2007-10-01",
"launch_detected": true,
"launch_date": "2008-04-10",
"category": "Developer Tools",
"subcategory": "Code Hosting",
"subcategory2": "Git",
"description": "GitHub is a development platform...",
"website_launches_url": "https://websitelaunches.com/site.php?id=12345"
},
"meta": {
"tier": "growth",
"usage": {
"used": 1247,
"limit": 250000,
"resets_at": "2025-11-01"
},
"response_time_ms": 42
}
}
With Historical Data
Add ?history=true to include historical authority tracking over time.
Growth+ Tiers Only
Historical data is available for Growth, Pro, Business, and Enterprise tiers.
curl -H "X-API-Key: YOUR_API_KEY" \ "https://websitelaunches.com/api/v1/domain/github.com?history=true"
import requests url = 'https://websitelaunches.com/api/v1/domain/github.com' params = {'history': 'true'} headers = {'X-API-Key': 'YOUR_API_KEY'} response = requests.get(url, params=params, headers=headers) data = response.json()
const url = 'https://websitelaunches.com/api/v1/domain/github.com?history=true'; const response = await fetch(url, { headers: { 'X-API-Key': 'YOUR_API_KEY' } }); const data = await response.json();
<?php $url = 'https://websitelaunches.com/api/v1/domain/github.com?history=true'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-Key: YOUR_API_KEY']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = json_decode($response, true);
Response with History
{
"ok": true,
"data": {
"domain": "github.com",
// ... standard fields ...
"history": [
{
"date": "2018-01",
"authority": 75,
"release_id": "CC-MAIN-2018-05"
},
{
"date": "2019-01",
"authority": 78,
"release_id": "CC-MAIN-2019-04"
},
{
"date": "2025-10",
"authority": 85,
"release_id": "CC-MAIN-2025-40"
}
],
"history_data_points": 6,
"authority_change": {
"absolute": 10,
"percentage": 13.3
}
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
domain |
string | The queried domain name |
site_authority |
integer | WebL Site Authority score 0-100 based on Common Crawl data |
domain_age |
float | Domain age in years |
domain_age_date |
string | Domain registration date (YYYY-MM-DD) |
launch_detected |
boolean | Whether a public launch was detected |
launch_date |
string | Public launch date if detected (YYYY-MM-DD) |
category |
string | L1 industry category |
subcategory |
string | L2 subcategory |
subcategory2 |
string | L3 detailed subcategory |
description |
string | AI-generated site description (Starter+ tiers) |
history |
array | Historical authority data points (Growth+ tiers, when ?history=true) |
history_data_points |
integer | Number of historical data points available (with history parameter) |
authority_change |
object | Authority change over time with absolute and percentage values (with history parameter) |
Batch Lookup
POST
/api/v1/domain/batch
Process up to 50,000 domains in a single request for efficient bulk enrichment.
Growth+ Tiers Only
Batch processing is available for Growth, Pro, Business, and Enterprise tiers.
Batch Size Limits
- Growth/Pro: 10,000 domains per request
- Business: 50,000 domains per request
- Enterprise: Unlimited
Request Body
| Field | Type | Description |
|---|---|---|
domains required |
array | Array of domain names to lookup (strings) |
Example Request
curl -X POST \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domains": ["github.com", "google.com", "stripe.com"]}' \
https://websitelaunches.com/api/v1/domain/batch
import requests url = 'https://websitelaunches.com/api/v1/domain/batch' headers = { 'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' } payload = { 'domains': ['github.com', 'google.com', 'stripe.com'] } response = requests.post(url, json=payload, headers=headers) data = response.json()
const url = 'https://websitelaunches.com/api/v1/domain/batch'; const response = await fetch(url, { method: 'POST', headers: { 'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ domains: ['github.com', 'google.com', 'stripe.com'] }) }); const data = await response.json();
<?php $url = 'https://websitelaunches.com/api/v1/domain/batch'; $payload = [ 'domains' => ['github.com', 'google.com', 'stripe.com'] ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload)); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'X-API-Key: YOUR_API_KEY', 'Content-Type: application/json' ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = json_decode($response, true);
Response
{
"ok": true,
"data": {
"results": [
{
"domain": "github.com",
"site_authority": 85,
"domain_age": 17.2,
"launch_detected": true,
"category": "Developer Tools",
// ... full domain data ...
},
{
"domain": "google.com",
"site_authority": 95,
"domain_age": 27.1,
// ...
},
{
"domain": "stripe.com",
"site_authority": 89,
// ...
}
],
"count": 3,
"processed_in_ms": 89
}
}
Response Format
All API responses follow a consistent JSON structure with an ok status field.
Success Response
{
"ok": true,
"data": {
// Response data
},
"meta": {
"tier": "growth",
"usage": {
"used": 1247,
"limit": 250000,
"resets_at": "2025-11-01"
},
"response_time_ms": 42
}
}
Error Response
{
"ok": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Monthly API limit exceeded"
}
}
Rate Limits
API limits are based on your subscription tier and reset monthly.
Monthly Limits by Tier
| Tier | Monthly Lookups | Batch Endpoint | Max Batch Size |
|---|---|---|---|
| Free | 3,000 | β | β |
| Starter | 50,000 | β | β |
| Growth | 250,000 | β | 10,000 |
| Pro | 1,000,000 | β | 10,000 |
| Business | 5,000,000 | β | 50,000 |
| Enterprise | Unlimited | β | Unlimited |
Track Your Usage
View your current usage and limits in the API dashboard.
The meta field in API responses also includes real-time usage data.
Error Codes
The API uses standard HTTP status codes and returns detailed error information in the response body.
HTTP Status Codes
| Status Code | Description |
|---|---|
| 200 | Success - Request completed successfully |
| 400 | Bad Request - Invalid parameters or malformed request |
| 401 | Unauthorized - Missing or invalid API key |
| 403 | Forbidden - Feature not available for your tier |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error - Contact support if this persists |
Error Response Codes
| Error Code | Description |
|---|---|
INVALID_API_KEY |
API key is missing or invalid |
RATE_LIMIT_EXCEEDED |
Monthly usage limit reached for your tier |
INVALID_DOMAIN |
Domain parameter is missing or malformed |
DOMAIN_NOT_FOUND |
Domain data not available in our database |
FEATURE_NOT_AVAILABLE |
Feature requires a higher tier subscription |
BATCH_SIZE_EXCEEDED |
Batch request exceeds your tier's limit |
Example Error Response
{
"ok": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Monthly API limit of 3,000 requests exceeded. Upgrade your plan to continue.",
"details": {
"current_tier": "free",
"used": 3000,
"limit": 3000,
"resets_at": "2025-11-01"
}
}
}
Need Help?
Have questions or need assistance? We're here to help:
- Email Support: support@websitelaunches.com
- View Pricing: API Plans & Pricing
- Dashboard: Manage API Key & Usage