API Access
Access your data via REST API
Access your analytics data programmatically with the PureStats REST API. Perfect for building custom dashboards, reports, or integrations.
Authentication
All API requests require authentication using an API key. Generate your API key from your site settings.
curl -X GET "https://purestats.io/api/stats?site=yourdomain.com" \
-H "Authorization: Bearer YOUR_API_KEY"
Base URL
All API endpoints are available at:
https://purestats.io/api/
Available Endpoints
Get Site Statistics
Retrieve overall statistics for your site:
GET /api/stats?site=yourdomain.com&period=30d
// Response
{
"visitors": 12543,
"pageviews": 35621,
"bounce_rate": 42.3,
"visit_duration": 145
}
Parameters
| Parameter | Description | Example |
|---|---|---|
site |
Your domain (required) | example.com |
period |
Time period | 7d, 30d, 12mo |
date |
Specific date | 2024-01-15 |
Get Time Series Data
Get data over time for charts:
GET /api/timeseries?site=yourdomain.com&period=7d&metric=visitors
// Response
{
"labels": ["2024-01-01", "2024-01-02", ...],
"data": [423, 512, 389, ...]
}
Get Top Pages
Retrieve most visited pages:
GET /api/pages?site=yourdomain.com&period=30d&limit=10
// Response
{
"pages": [
{"path": "/", "visitors": 5234, "pageviews": 8921},
{"path": "/pricing", "visitors": 2341, "pageviews": 3456},
...
]
}
Get Traffic Sources
See where your visitors come from:
GET /api/sources?site=yourdomain.com&period=30d
// Response
{
"sources": [
{"source": "Google", "visitors": 4521},
{"source": "Direct", "visitors": 3214},
{"source": "Twitter", "visitors": 892},
...
]
}
Rate Limits
API requests are limited to:
- 100 requests per minute per API key
- 10,000 requests per day per API key
Rate limit exceeded: You'll receive a 429 Too Many Requests response. Wait before retrying.
Error Responses
The API returns standard HTTP status codes:
200- Success400- Bad request (missing parameters)401- Unauthorized (invalid API key)404- Site not found429- Rate limit exceeded500- Server error
Code Examples
JavaScript (fetch)
const response = await fetch(
'https://purestats.io/api/stats?site=yourdomain.com&period=7d',
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
)
const data = await response.json()
console.log(data)
Python
import requests
response = requests.get(
'https://purestats.io/api/stats',
params={'site': 'yourdomain.com', 'period': '7d'},
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
data = response.json()
print(data)
PHP
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://purestats.io/api/stats?site=yourdomain.com&period=7d');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_API_KEY']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data);