Base URL: https://fontspy.grabshot.dev
Pass your API key via the x-api-key header or key query parameter.
curl "https://fontspy.grabshot.dev/v1/detect?url=https://example.com" \
-H "x-api-key: fs_your_api_key"
/v1/detect
Detect all fonts used on a website. Returns font families, types (web/google/system), weights, sizes, usage details, and a performance analysis.
| Param | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Website URL to analyze |
curl "https://fontspy.grabshot.dev/v1/detect?url=https://stripe.com" \
-H "x-api-key: fs_your_key"
{
"success": true,
"url": "https://stripe.com",
"fonts": [
{
"family": "Inter",
"type": "web",
"fallbacks": ["system-ui", "sans-serif"],
"weights": ["400", "500", "600", "700"],
"sizes": ["14px", "16px", "20px", "32px"],
"elementCount": 142,
"usedOn": [
{ "tag": "h1", "text": "Financial infrastructure", "weight": "700", "size": "48px" },
{ "tag": "p", "text": "Millions of companies...", "weight": "400", "size": "18px" }
]
}
],
"fontCount": 3,
"webFonts": 1,
"googleFonts": 0,
"systemFonts": 2,
"fontResources": [
{ "url": "https://stripe.com/fonts/inter.woff2", "size": 45320 }
],
"performance": {
"totalFontFiles": 2,
"totalFontSizeBytes": 89640,
"totalFontSizeKB": 88,
"issues": [],
"score": 100
},
"loadTimeMs": 2340
}
/v1/health
Health check endpoint. No authentication required.
curl "https://fontspy.grabshot.dev/v1/health"
const res = await fetch(
'https://fontspy.grabshot.dev/v1/detect?url=https://stripe.com',
{ headers: { 'x-api-key': 'fs_your_key' } }
);
const data = await res.json();
console.log(data.fonts);
import requests
resp = requests.get(
'https://fontspy.grabshot.dev/v1/detect',
params={'url': 'https://stripe.com'},
headers={'x-api-key': 'fs_your_key'}
)
print(resp.json()['fonts'])
curl "https://fontspy.grabshot.dev/v1/detect?url=https://stripe.com" \
-H "x-api-key: fs_your_key"
| Plan | Monthly Limit | Rate Limit |
|---|---|---|
| Free | 50 requests | 10/min |
| Starter ($9/mo) | 2,000 requests | 30/min |
| Pro ($29/mo) | 20,000 requests | 60/min |
| Business ($79/mo) | 200,000 requests | 120/min |
| Field | Description |
|---|---|
fonts[] | Array of detected fonts with details |
fonts[].family | Font family name |
fonts[].type | "web", "google", or "system" |
fonts[].weights | Array of font weights used |
fonts[].sizes | Array of font sizes used |
fonts[].elementCount | Number of elements using this font |
fonts[].usedOn | Sample elements using the font |
performance.score | Font performance score (0-100) |
performance.issues | Array of performance issues found |
fontResources | Font files loaded with URLs and sizes |
loadTimeMs | Page load time in milliseconds |