Google Fonts Library Metadata Extractor
Look up Google Fonts families by name, browse a category, or export the full library with weights, variable-font axes, language subsets, designers, popularity, and ready-to-use CSS embed URLs.
Open in Apify Store$0.99 / 1K on Free
Short answer
Google Fonts Library Metadata Extractor is an Apify Store Actor that returns 20 published output fields, including family, category, isVariable, weights. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 15 input settings; one is required (mode). Last updated Nov 9, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
20 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
familycategoryisVariableweightssubsetsdesignerspopularitytrendingdateAddedlicensegoogleFontsUrlcss2UrlFullfileCountnamecodepointHexcategoriestagssizesPxsupportedFamiliesversion
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | Yes | byFamily | What to fetch from Google Fonts. `icons` fetches the separate Material icon metadata document once and emits icon records; it does not return font-family records. |
| families | array | No | ["Roboto"] | Font family names, e.g. `Roboto`, `Open Sans`, `Lora`, `Playfair Display`. Case-insensitive; `displayName` aliases and duplicates are handled. Defaults to `Roboto` when empty. |
| category | string | No | Sans Serif | Filter the library to a single font category. Defaults to `Sans Serif` when empty. An unknown category emits a typed `invalid_category` error record. |
| maxItems | integer | No | 5000 | Hard cap on records emitted per run (1-5000). Defaults to 5000 so the whole font catalog (~1,959 families) fits without truncation. The icon endpoint currently reports about 6,139 icons, so `icons` mode can truncate at the cap. |
| search | string | No | – | Free-text search over family, display name, category, classifications, subsets, designers, and primary script/language. In `icons` mode it searches icon name, categories, tags, and supported families. All space-separated tokens must match. |
| subsets | array | No | [] | Only keep families that include every listed subset, e.g. `latin`, `cyrillic`, `greek`, `vietnamese`. The synthetic `menu` subset is present on every family. |
| designers | array | No | [] | Only keep families whose designer/foundry list contains every listed value (case-insensitive substring match). |
| variableOnly | boolean | No | false | Keep only families that ship a variable font with one or more axes. |
| colorOnly | boolean | No | false | Keep only families with color font capabilities (COLRV0/COLRV1/OTSVG). |
| brandOnly | boolean | No | false | Keep only families where the upstream `isBrandFont` flag is true. In the current catalog this flag equals `isNoto`; it is not a generic brand filter. |
Show the other 5 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| notoOnly | boolean | No | false | Keep only families in the Noto collection. |
| sortBy | string | No | default | Order the matched families. `popularity` and `trending` are sparse upstream snapshot ranks where lower is better (not dense 1..N positions); `dateAdded` and `lastModified` put newest first. In `icons` mode only `popularity` and `name` change the order; other values keep upstream order. |
| includeLicense | boolean | No | false | Enrich each family with license, license URL, copyright, source repository, source date, languages, unicode coverage, and description. Uses the per-family metadata endpoint, then METADATA.pb, then the download manifest. Off by default; enable it to add these fields. Raw API calls that omit the key r |
| includeFiles | boolean | No | false | Fetch the full CSS2 stylesheet (woff2/unicode-range) and the download manifest (TTF URLs). Capped by `maxFilesPerFamily`. CSS2 output depends on the user agent: the actor requests a modern Chrome UA and retries once with Safari when Chrome receives only TTF. Large CJK families can exceed the file ca |
| maxFilesPerFamily | integer | No | 200 | Cap applied separately to `fontFiles` (CSS2) and `ttfFiles` (manifest). CJK families can expose hundreds of files; for example M PLUS 1p has 882 CSS2 blocks, so the 200 default truncates it and `filesTruncated` is set. Raise to 1000 to keep them all. |
Example input
Built from the input form's published example values and defaults.
{
"mode": "byFamily",
"families": [
"Roboto"
],
"category": "Sans Serif",
"maxItems": 3,
"subsets": [],
"designers": [],
"variableOnly": false,
"colorOnly": false,
"brandOnly": false,
"notoOnly": false,
"sortBy": "default",
"includeLicense": false,
"includeFiles": false,
"maxFilesPerFamily": 10
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "byFamily",
"families": [
"Roboto"
],
"category": "Sans Serif",
"maxItems": 3,
"subsets": [],
"designers": [],
"variableOnly": False,
"colorOnly": False,
"brandOnly": False,
"notoOnly": False,
"sortBy": "default",
"includeLicense": False,
"includeFiles": False,
"maxFilesPerFamily": 10
}
run = client.actor("nimbryxo-studio/google-fonts-library-metadata-extractor").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"mode": "byFamily",
"families": [
"Roboto"
],
"category": "Sans Serif",
"maxItems": 3,
"subsets": [],
"designers": [],
"variableOnly": false,
"colorOnly": false,
"brandOnly": false,
"notoOnly": false,
"sortBy": "default",
"includeLicense": false,
"includeFiles": false,
"maxFilesPerFamily": 10
};
const run = await client.actor("nimbryxo-studio/google-fonts-library-metadata-extractor").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/nimbryxo-studio~google-fonts-library-metadata-extractor/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"mode":"byFamily","families":["Roboto"],"category":"Sans Serif","maxItems":3,"subsets":[],"designers":[],"variableOnly":false,"colorOnly":false,"brandOnly":false,"notoOnly":false,"sortBy":"default","includeLicense":false,"includeFiles":false,"maxFilesPerFamily":10}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=nimbryxo-studio/google-fonts-library-metadata-extractor",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 0.5 GB (billed as the 1 GB minimum) a run starts at $0.10 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10 ($9.90 for results + $0.10 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
What people use it for
- browse font metadata
- retrieve font files
Similar Actors
Google Image Search Results & Metadata Scraper
Run a Google Images search and get back full-resolution image URLs with dimensions, thumbnails, source page titles, and the web page each image…
GitHub Repository Metadata & README Extractor
Fetch stars, forks, topics, license, language breakdown and README text for GitHub repositories, by search query or a direct list of repository…
Google Flights Fare & Itinerary Filter Scraper
Search Google Flights for one-way or round-trip fares across any cabin class, then narrow results by stops, total duration, airline, and price…
Google Maps Address & Coordinate Geocoding Lookup
Convert addresses to coordinates or coordinates back to addresses using Google Maps, in batch, with structured address components, place IDs, plus…
Google Maps Business Lead & Email Finder
Find business leads on Google Maps by category, keyword, or location and collect name, address, phone, website, rating, review count, and…
Google Maps Hours, Open-Now Status & Holiday Schedule
Get structured opening hours for all 7 days, live open/closed status, holiday schedules and a next open/close countdown from any Google Maps place…
Questions people ask
How much does Google Fonts Library Metadata Extractor cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does Google Fonts Library Metadata Extractor return?
Its published output schema lists 20 fields: family, category, isVariable, weights, subsets, designers, popularity, trending, dateAdded, license, googleFontsUrl, css2UrlFull, and 8 more. A listed field is not guaranteed to be filled in every row.
What input does Google Fonts Library Metadata Extractor need?
Required: mode. Optional settings include families, category, maxItems, search, subsets, designers.
How do I run Google Fonts Library Metadata Extractor from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("nimbryxo-studio/google-fonts-library-metadata-extractor").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("nimbryxo-studio/google-fonts-library-metadata-extractor").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/nimbryxo-studio~google-fonts-library-metadata-extractor/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- Google Fonts Library Metadata Extractor on Apify Store
- Published build with input and output schema (JSON)
Cite this page
Scraper Finder. "Google Fonts Library Metadata Extractor." https://scraperfinder.com/catalogue/google-fonts-library-metadata-extractor/ (data checked 2026-11-12).
Run Google Fonts Library Metadata Extractor
$0.99 per 1,000 results. Paste the example input above, set your target query, then export the dataset.