Website Font Detector - Fonts Used on Any Page avatar

Website Font Detector - Fonts Used on Any Page

Pricing

from $0.80 / 1,000 scanned pages

Go to Apify Store
Website Font Detector - Fonts Used on Any Page

Website Font Detector - Fonts Used on Any Page

Detect the fonts a site uses: @font-face + web-font files, font-family stacks, and Google/Adobe/self-hosted/system sources. Bulk. $0.001 per page, cheaper than paid font/brand extractors; failed fetches free.

Pricing

from $0.80 / 1,000 scanned pages

Rating

0.0

(0)

Developer

Broke to Built

Broke to Built

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

4 days ago

Last modified

Share

Website Font Detector — fonts used on any page

Send a URL, get the fonts the page declares, with the font file URLs and where each comes from (Google Fonts, Adobe, self-hosted, system). Reads the page's HTML and the stylesheets it loads.

You give itYou get backYou pay (Free plan)
One URL or a list of up to 25Per font: family, source, font files with format$0.001 per page

Pay per result only: no subscription, no start fee. Pages that fail to load are not charged. Paid Apify plans get Store discounts on the price above.

Try it in one click

The input form is already filled in with this example. Press Start and you get the output below.

{
"url": "https://stripe.com",
"urls": []
}

Real output from that exact input (run on 2026-09-24; long arrays shortened to a few entries and long text cut for display):

[
{
"ok": true,
"url": "https://stripe.com",
"status": 200,
"fontCount": 7,
"stylesheetsRead": 5,
"fonts": [
{
"family": "sohne-var",
"source": "webfont",
"files": [
{
"url": "https://b.stripecdn.com/mkt-ssr-statics/assets/_next/static/media/Sohne.cb178166.woff2",
"format": "woff2-variations"
}
]
},
{
"family": "SourceCodePro",
"source": "webfont",
"files": [
{
"url": "https://b.stripecdn.com/mkt-ssr-statics/assets/_next/static/media/SourceCodePro-Medium.f5ba3e6a.woff2",
"format": "woff2"
}
]
},
{
"family": "SF Pro Display",
"source": "system",
"files": []
}
]
}
]

Measured 2026-09-24, before and after external stylesheets were read: stripe.com 0 → 7 fonts, github.com 0 → 19 (Mona Sans, Hubot Sans, Monaspace Neon with their files), wordpress.org 0 → 12.

Detect the fonts a website uses: @font-face declarations with their web-font files, font-family stacks, and whether each family comes from Google Fonts, Adobe Fonts, a self-hosted webfont, or the system. Single URL or bulk. $0.001 per page. Failed fetches are recorded free.

What you get

One dataset item per URL:

FieldWhat it is
oktrue on a successful fetch, false on an error row
urlThe URL you passed
finalUrlWhere the request actually landed after redirects
statusHTTP status of the page fetch
fontCountHow many distinct families were found
stylesheetsReadHow many external .css files were read for this page
fontsArray of { family, source, files[] }, sorted alphabetically by family

Each font carries family (the declared name), source (webfont, google, adobe or system), and files - each { url, format } where the format is known. Families seen more than one way keep the most specific source, so a Google-hosted family is never downgraded to system just because it also appears in a fallback stack. CSS comments are stripped before parsing, so a commented-out font-family never shows up as a result.

Example 1 - one page

Input:

{ "url": "https://techcrunch.com", "maxUrls": 25 }

Output (real run, 2026-08-07):

{
"ok": true, "url": "https://techcrunch.com/", "status": 200,
"fontCount": 3,
"fonts": [
{ "family": "nb_international_promono", "source": "webfont",
"files": [ { "url": "https://techcrunch.com/wp-content/themes/tc-24/assets/fonts/.../nbinternationalpromono-webfont.woff2", "format": "woff2" } ] }
]
}

Example 2 - a competitor sweep in one run

{
"urls": ["stripe.com", "linear.app", "vercel.com", "https://notion.so"],
"maxUrls": 50
}

Bare domains get https:// added for you, duplicates are removed, and you get one row per site - so a whole competitive set's typography lands in a single dataset you can export as CSV.

Example 3 - a page that will not load

{ "url": "https://no-such-site.invalid", "ok": false, "error": "fetch failed", "fontCount": 0, "fonts": [] }

The row is recorded so nothing silently disappears from your dataset, the run continues, and that URL is not charged.

Pricing — $0.001 per page

Prices below checked via the Apify Store API on 2026-08-07:

ActorPricingOne page
This actor$0.001 per page$0.001
eiv/website-brand-extractor$0.001 start + $0.002 per item$0.003
automation-lab/font-detector$0.035 per run start$0.035+

When NOT to use this

  • The page injects its fonts with JavaScript. No browser is launched: the HTML and the stylesheets it links (up to 15 per page, following @import two levels) are parsed. A single-page app that injects styles at runtime will look emptier here than it does in DevTools.
  • You want to know which font actually rendered. This reports what the page declares. Which entry in a font-family stack the browser picked depends on the visitor's machine.
  • You want the licence, price or a downloadable file. Family names and file URLs come back; licensing, foundry and pricing do not, and nothing is downloaded.
  • You need Adobe Fonts family names. Typekit loads families at runtime via JavaScript, so the kit is surfaced as Adobe Fonts kit: <id> with its CSS URL rather than the individual families.

FAQ

How do I find out what font a website uses? Pass the URL. Every declared family comes back in fonts[] with a source telling you whether it is a self-hosted webfont, Google Fonts, Adobe Fonts, or a plain system stack.

Can I get the actual font file URL? Yes, whether the @font-face rule is in the HTML or in a linked stylesheet. files[] holds each src URL with its declared format (woff2, woff, ttf), resolved to an absolute URL the way a browser resolves it (against the stylesheet that declared it).

Does it identify Google Fonts and Adobe Fonts? Yes. Google Fonts are read from fonts.googleapis.com link tags and @import rules, including both the css2 ?family=A&family=B form and the older ?family=A|B form. Adobe Fonts are detected from use.typekit.net kit references.

Does it fetch external CSS files? Yes, since 2026-09-24. Every <link rel="stylesheet"> on the same site or a CDN is read, plus @import chains two levels deep, bounded at 15 files, 2 MB each and 10 seconds each. It is still plain HTTP with no headless browser, which is what keeps a scan at $0.001.

Can I check many websites at once? Yes - up to 50 URLs per run via urls. Bare domains are upgraded to https:// automatically and duplicates are removed before any fetch happens.

Why does a font show up as "system"? Because it appeared in a font-family stack but the page never declared a matching @font-face or provider link, so there is no evidence of a downloadable file. Generic keywords (serif, sans-serif, system-ui, inherit and friends) are filtered out entirely.

What about a dead URL? You get an {ok:false, error} record and the run continues. That URL is never charged.

  • Website Color Palette Extractor (EliAI/webpage-color-palette) — the color half of a page's design tokens (hex/rgb/hsl ranked). Pair the two to capture a site's full typography + color system.

Use from code or AI agents

curl -X POST "https://api.apify.com/v2/acts/EliAI~webpage-font-detector/runs?token=YOUR_APIFY_TOKEN" \
-H 'content-type: application/json' -d '{"url":"https://techcrunch.com"}'

Callable as an agent tool through the Apify MCP server (mcp.apify.com).

Who uses it

  • Designers identifying the typeface on a site they want to reference in a brand brief
  • Brand managers checking that every campaign microsite loads the licensed font, not a fallback
  • Performance engineers counting how many web-font files a page pulls in
  • Agencies sweeping competitor homepages to see which font families the category uses
  • Privacy reviewers finding pages that still load Google Fonts from Google's servers

Changelog

  • 2026-09-24: Now reads the external stylesheets a page loads, including @font-face rules inside them. stripe.com, github.com and wordpress.org went from 0 fonts to 7, 19 and 12. Also fixed: family names ending in "var" (like Stripe's sohne-var) were wrongly discarded. New stylesheetsRead field. Price unchanged.
  • 2026-09-24: New summary at the top of this page: what you send, what you get, the price, and a real output from the prefilled example.