Leo Scanner API v1 Documentation
A simple REST API for analyzing websites and getting detailed scan reports.
Overview
The Leo Scanner API allows developers to programmatically scan websites for SEO, accessibility, performance, security, and link issues. The API returns detailed reports with scores and actionable recommendations.
Base URL
https://useleo.app/api/v1Rate Limiting
Rate Limit: 5 requests per hour per IP address
Rate limit information is included in response headers:
X-RateLimit-Limit: Maximum requests per hourX-RateLimit-Remaining: Remaining requests in current windowX-RateLimit-Reset: Unix timestamp when the limit resets
Scan Website
POST/api/v1/scan
Request Body
{
"url": "https://example.com"
}Response (Success)
{
"url": "https://example.com",
"scannedAt": "2026-02-05T17:02:51.000Z",
"overallScore": 87,
"categories": [
{
"category": "seo",
"label": "SEO",
"score": 85,
"issues": [
{
"severity": "warning",
"title": "Missing meta description",
"description": "The page is missing a meta description tag",
"recommendation": "Add a meta description to improve search engine visibility",
"howToFix": "Add <meta name="description" content="Your description here"> to the <head> section"
}
]
},
{
"category": "accessibility",
"label": "Accessibility",
"score": 92,
"issues": []
}
],
"meta": {
"fetchTimeMs": 1250,
"pageSize": 45632,
"statusCode": 200
}
}Response (Error)
{
"error": "Rate limit exceeded",
"details": "Maximum 5 requests per hour. Please try again later."
}Data Structure
Categories
Each scan checks these categories:
- SEO: Meta tags, headings, canonical URLs
- Accessibility: Alt text, ARIA labels, color contrast
- Performance: Page size, image optimization
- Security: HTTPS, security headers
- Links: Broken links, external link analysis
Issue Severity Levels
- error: Critical issues that should be fixed immediately
- warning: Important issues that should be addressed
- info: Suggestions for improvement
Example Usage
JavaScript (fetch)
const response = await fetch('https://useleo.app/api/v1/scan', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://example.com'
})
});
const result = await response.json();
if (response.ok) {
console.log('Scan completed:', result.overallScore);
result.categories.forEach(category => {
console.log(`${category.label}: ${category.score}/100`);
});
} else {
console.error('Scan failed:', result.error);
}curl
curl -X POST https://useleo.app/api/v1/scan \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'HTTP Status Codes
200Scan completed successfully
400Bad request (invalid URL or request body)
429Rate limit exceeded
500Server error during scan
Support
Need help with the API? Have questions or feature requests?
Support: Contact our support team
Documentation: This page will be updated as the API evolves