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/similar
Find similar free alternatives to any font. Great for finding Google Fonts replacements for commercial fonts like Helvetica or Proxima Nova.
| Param | Type | Required | Description |
|---|---|---|---|
font | string | Yes | Font name to find alternatives for |
curl "https://fontspy.grabshot.dev/v1/similar?font=Helvetica" \
-H "x-api-key: fs_your_key"
{
"success": true,
"query": "Helvetica",
"similar": [
{
"name": "Inter",
"category": "sans-serif",
"style": "geometric-humanist",
"free": true,
"source": "Google Fonts",
"googleFontsUrl": "https://fonts.google.com/specimen/Inter",
"similarity": "high"
},
{
"name": "Roboto",
"category": "sans-serif",
"style": "neo-grotesque",
"free": true,
"source": "Google Fonts",
"googleFontsUrl": "https://fonts.google.com/specimen/Roboto",
"similarity": "high"
}
]
}
/v1/identify
Try to identify a font from an image URL. Uses heuristic analysis to suggest likely font matches. Best used as a starting point for font identification.
| Param | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL of the image containing text |
curl "https://fontspy.grabshot.dev/v1/identify?url=https://example.com/logo.png" \
-H "x-api-key: fs_your_key"
{
"success": true,
"analysis": {
"strokeWeight": "medium",
"estimatedCategory": "sans-serif"
},
"confidence": "low",
"suggestions": [
{ "name": "Roboto", "category": "sans-serif", "free": true },
{ "name": "Open Sans", "category": "sans-serif", "free": true }
]
}
/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 |