Site Audit
The Site Audit endpoint loads any URL in a real Chromium browser and extracts:
- Color palette — grouped by background, text, primary, and accent (up to 20 unique colors)
- Fonts — every font family with weights and usage context (body, heading, code)
- Headings — all h1–h6 with font size, weight, color, and text content
- Tech stack — framework detection with confidence scores (Tailwind, Bootstrap, Next.js, React, Vue, WordPress, and more)
- Page metadata — title, description, OG image, favicon, language
Site Audit requires a Starter+ plan. Try it free at snapsharp.dev/tools/site-audit — 3 requests/day, no sign-up.
Endpoint
POST /v1/site-auditParameters
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | required | Target URL to audit |
format | json | png | pdf | json | Output format |
include_screenshot | boolean | true | Include base64 screenshot in JSON response |
width | integer | 1280 | Viewport width (320–3840) |
sections | string[] | all | Sections to include: colors, fonts, headings, stack, accessibility |
Response — JSON
curl -X POST https://api.snapsharp.dev/v1/site-audit \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://linear.app", "format": "json"}'{
"url": "https://linear.app",
"screenshot_url": "data:image/png;base64,...",
"extracted_at": "2026-03-27T12:00:00Z",
"colors": {
"primary": ["#5E6AD2", "#4B50C8"],
"background": ["#000000", "#111111"],
"text": ["#FFFFFF", "#B4B4B4"],
"accent": ["#EB5757"],
"all_unique": ["#000000", "#5E6AD2", "#FFFFFF", "..."]
},
"fonts": {
"families": [
{ "name": "Inter", "usage": "body", "count": 147, "weights": [400, 500, 600, 700] },
{ "name": "JetBrains Mono", "usage": "code", "count": 23, "weights": [400] }
],
"total_unique": 2
},
"headings": [
{
"tag": "h1",
"text": "Linear is a better way to build products",
"font_size": "56px",
"font_weight": "700",
"color": "#FFFFFF",
"font_family": "Inter"
}
],
"typography": {
"body_font_size": "16px",
"body_line_height": "1.6",
"heading_scale": [56, 40, 24, 20]
},
"stack": {
"css_framework": "Tailwind CSS",
"js_framework": "Next.js",
"ui_library": null,
"detection_confidence": 0.95,
"signals": [
{ "tech": "Next.js", "signal": "__NEXT_DATA__ script tag found", "confidence": 0.95 },
{ "tech": "Tailwind CSS", "signal": "Utility class patterns detected", "confidence": 0.9 },
{ "tech": "Vercel", "signal": "x-vercel-id header detected", "confidence": 0.85 }
]
},
"meta": {
"title": "Linear – A better way to build products",
"description": "Linear streamlines issues, sprints, and product roadmaps...",
"favicon_url": "https://linear.app/favicon.ico",
"og_image": "https://linear.app/og-image.png",
"language": "en",
"viewport": "width=device-width, initial-scale=1"
}
}Response — PNG (Site-Book)
Returns a pixel-perfect visual card (1200px wide) with all design tokens rendered beautifully.
curl -X POST https://api.snapsharp.dev/v1/site-audit \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://linear.app", "format": "png"}' \
--output site-book.pngThe PNG includes:
- A screenshot of the page (top fold)
- Color swatches with hex codes
- Font families with weights
- Heading hierarchy with sizes
- Technology stack badges
- SnapSharp watermark at the bottom
Response — PDF
Same content as PNG but rendered as A4 landscape PDF — perfect for client reports.
curl -X POST https://api.snapsharp.dev/v1/site-audit \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://linear.app", "format": "pdf"}' \
--output site-audit-linear.app.pdfSDK Examples
// Node.js
import { SnapSharp } from '@snapsharp/sdk';
const snap = new SnapSharp('sk_live_...');
const audit = await snap.post('/v1/site-audit', {
url: 'https://linear.app',
format: 'json',
});
console.log(audit.stack.js_framework); // "Next.js"
console.log(audit.colors.primary); // ["#5E6AD2", ...]# Python
import requests
res = requests.post(
"https://api.snapsharp.dev/v1/site-audit",
headers={"Authorization": "Bearer sk_live_..."},
json={"url": "https://linear.app", "format": "json"},
)
audit = res.json()
print(audit["stack"]["css_framework"]) # "Tailwind CSS"Stack Detection
The following technologies are detected automatically:
| Technology | Signal |
|---|---|
| Tailwind CSS | Utility class patterns (flex, px-, bg-) |
| Bootstrap | Class patterns (container, col-, btn-) |
| Material UI | Mui* class prefixes |
| Chakra UI | chakra- class prefixes |
| Next.js | __NEXT_DATA__ script tag |
| Nuxt | __NUXT__ global variable |
| React | data-reactroot, #__next, #root |
| Vue.js | data-v-* scoped attributes |
| Angular | app-root, ng-version attribute |
| WordPress | meta[generator], wp-content paths |
| Webflow | Generator meta tag |
| Framer | Generator meta tag, framer-* classes |
| Vercel | x-vercel-id response header |
| Netlify | x-powered-by: netlify header |
Errors
| Code | Error | Description |
|---|---|---|
| 400 | invalid_url | Invalid URL or parameters (private, blocked, or SSRF-protected) |
| 401 | unauthorized | Missing or invalid API key |
| 403 | plan_required | Starter+ plan required |
| 429 | rate_limited | Rate limit exceeded |
| 500 | — | Internal server error |
| 502 | screenshot_failed | Page unreachable or browser error |
| 504 | timeout | Audit timed out after 30 seconds |
Pricing
| Plan | Site Audit |
|---|---|
| Free | ❌ |
| Starter | ✅ JSON + PNG + PDF |
| Growth | ✅ |
| Business | ✅ |
| Enterprise | ✅ |