API Documentation

Base URL: https://fontspy.grabshot.dev

Authentication

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"

Endpoints

GET /v1/detect

Detect all fonts used on a website. Returns font families, types (web/google/system), weights, sizes, usage details, and a performance analysis.

Parameters

ParamTypeRequiredDescription
urlstringYesWebsite URL to analyze

Example

curl "https://fontspy.grabshot.dev/v1/detect?url=https://stripe.com" \
  -H "x-api-key: fs_your_key"

Response

{
  "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
}
GET /v1/similar

Find similar free alternatives to any font. Great for finding Google Fonts replacements for commercial fonts like Helvetica or Proxima Nova.

Parameters

ParamTypeRequiredDescription
fontstringYesFont name to find alternatives for

Example

curl "https://fontspy.grabshot.dev/v1/similar?font=Helvetica" \
  -H "x-api-key: fs_your_key"

Response

{
  "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"
    }
  ]
}
GET /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.

Parameters

ParamTypeRequiredDescription
urlstringYesURL of the image containing text

Example

curl "https://fontspy.grabshot.dev/v1/identify?url=https://example.com/logo.png" \
  -H "x-api-key: fs_your_key"

Response

{
  "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 }
  ]
}
GET /v1/health

Health check endpoint. No authentication required.

curl "https://fontspy.grabshot.dev/v1/health"

Code Examples

Node.js

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);

Python

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

curl "https://fontspy.grabshot.dev/v1/detect?url=https://stripe.com" \
  -H "x-api-key: fs_your_key"

Rate Limits

PlanMonthly LimitRate Limit
Free50 requests10/min
Starter ($9/mo)2,000 requests30/min
Pro ($29/mo)20,000 requests60/min
Business ($79/mo)200,000 requests120/min

Response Fields

FieldDescription
fonts[]Array of detected fonts with details
fonts[].familyFont family name
fonts[].type"web", "google", or "system"
fonts[].weightsArray of font weights used
fonts[].sizesArray of font sizes used
fonts[].elementCountNumber of elements using this font
fonts[].usedOnSample elements using the font
performance.scoreFont performance score (0-100)
performance.issuesArray of performance issues found
fontResourcesFont files loaded with URLs and sizes
loadTimeMsPage load time in milliseconds