---
title: "Extract fonts"
method: GET
path: "/web/fonts"
tags: ["Web Extraction"]
---

# Extract fonts

`GET /web/fonts`

## Request

- Base URL: `https://api.context.dev/v1`
- URL: `https://api.context.dev/v1/web/fonts`
- Auth: HTTP bearer

Identify fonts and available font files used by a website.

## Query parameters

- `directUrl` string, uri: Exact page to inspect. Provide either `domain` or `directUrl`.
- `domain` string: Domain name to extract fonts from (e.g., 'example.com', 'google.com'). The domain will be automatically normalized and validated. You must provide either 'domain' or 'directUrl', but not both.
- `maxAgeMs` integer, nullable: Maximum age of cached brand data in ms. Defaults to 3 months; clamped to 0–1 year. `0` refreshes.
- `timeoutOpts` ScrapeTimeout: Request deadline and what to return when it passes.
  - `milliseconds` integer, required: Deadline in milliseconds.
  - `behavior` 'fail' | 'return-partial': "fail" returns 408 at the deadline. "return-partial" returns available results; inspect the response’s partial flag. "return-partial" requires at least 5000 ms.
- `tags` string[]: Labels for filtering usage in the dashboard.

## Response `200`

Successful response

- object
  - `finalDOMState` 'loaded' | 'still-loading': `loaded`, or `still-loading` when capture ended before the page finished loading.
  - `status` string, required: Always `ok` on success.
  - `domain` string, required: The normalized domain that was processed
  - `fonts` object[], required: Array of font usage information
    - `font` string, required: Font family name
    - `uses` string[], required: Array of CSS selectors or element types where this font is used
    - `fallbacks` string[], required: Array of fallback font families
    - `num_elements` number, required: Number of elements using this font
    - `num_words` number, required: Number of words using this font
    - `percent_words` number, required: Percentage of words using this font
    - `percent_elements` number, required: Percentage of elements using this font
  - `fontLinks` object: Available font files keyed by family name. Omitted when no downloadable fonts are found.
  - `code` integer, required: HTTP status code, e.g., 200
  - `cache_metadata` CacheMetadata, required: Whether this response came from cache.
    - `status` 'hit' | 'miss' | 'zdr', required: Whether the response was served from cache, required fresh work, or honored zero-data-retention cache bypass.
    - `age_ms` integer, required: Age of the cached data in milliseconds. Zero for miss and zdr responses.
  - `key_metadata` KeyMetadata: Credits this request used and your remaining balance.
    - `credits_consumed` integer, required: Credits charged for this request.
    - `credits_remaining` integer, required: Credits remaining for your organization.
  - `request_id` string, uuid, required: Unique ID of this request, also in `X-Request-Id`. Include it when contacting support.

## Other responses

- `400`: Bad request - Invalid input parameters
- `401`: Missing, invalid, or disabled API key.
- `402`: Insufficient credits (`USAGE_EXCEEDED`); authentication is valid. Retry once funded. Legacy deployments may return 401.
- `403`: API key permissions or organization settings do not allow this request.
- `408`: Request timeout
- `429`: Rate limit exceeded. Organization concurrency rejections include structured error_data and subscription settings; follow Retry-After before retrying.
- `500`: Internal server error

## Changes

- **2026-10-21** `61627728926b`: 3 warning
  - added the new `NO_PUBLISHED_MARKDOWN` enum value to the `error_code` response property for the response status `401`
  - added the new `NO_PUBLISHED_MARKDOWN` enum value to the `error_code` response property for the response status `402`
  - added the new `NO_PUBLISHED_MARKDOWN` enum value to the `error_code` response property for the response status `403`
- **2026-10-19** `4ddcf49b9fe5`: 4 info
  - added the non-success response with the status `402`
  - added the optional property `error_data` to the response with the `401` status
  - added the optional property `error_data` to the response with the `403` status
  - added the optional property `error_data` to the response with the `429` status
- **2026-10-16** `2125f3e94e52`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/context/apis/brand-api/changes/web/fonts/get.md)

---

[API](https://skmtc.dev/context/apis/brand-api.md) · [All operations](https://skmtc.dev/context/apis/brand-api/llms.txt) · [OpenAPI document](https://skmtc.dev/context/apis/brand-api/revisions/9e2ab7841fb1?raw)
