Brand Kit: Logos, Colors & Fonts from Any Website avatar

Brand Kit: Logos, Colors & Fonts from Any Website

Pricing

from $3.50 / 1,000 domain analyzeds

Go to Apify Store
Brand Kit: Logos, Colors & Fonts from Any Website

Brand Kit: Logos, Colors & Fonts from Any Website

Get the brand kit of any website: logo variants, favicons and touch icons, colors with roles and contrast, fonts, design tokens and brand checks. Files as ZIP. Failed, blocked and duplicate domains are free.

Pricing

from $3.50 / 1,000 domain analyzeds

Rating

0.0

(0)

Developer

Urlwright

Urlwright

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Urlwright: Little tools for the web.

Get the brand kit of any website: logo variants, favicons and touch icons, colors with roles and contrast, fonts, design tokens and brand checks. Files as ZIP. Failed, blocked and duplicate domains are free.

Default User-Agent: UrlwrightBot/1.0 (brand-kit; +https://urlwright.com/bot) (UrlwrightBot for robots.txt matching).

What it does

Give it a list of domains (or any URL of a site), a dataset or a CSV. For each domain you get one dataset row, the brand kit:

  1. Name from JSON-LD, og:site_name, the web app manifest, application-name and the page title, with source and confidence.
  2. Logo ranked from many signals: the header home link (image or inline SVG), JSON-LD logo, elements named logo or brand, <picture> dark-mode sources, mask icon and touch icon. Logos of customers, partners and payment providers ("Trusted by" strips, footers) are left out. Every logo file is fetched and checked (format, size, transparency, main color). Kind (symbol, wordmark, combination) and color (light, dark) are reported.
  3. Official logos from linked brand, press and media kit pages on the same site (scanBrandPages), marked official: true.
  4. Favicons, touch icons and mask icon, with declared and real sizes. ICO files are split into their sizes.
  5. Web app manifest: name, colors, icons with purpose.
  6. Colors with roles: primary, secondary, accent, background, text, link, plus dark mode values. Sources are CSS custom properties, theme-color, the manifest, buttons, links, the header and the logo. Output in HEX, RGB, HSL and OKLCH, deduplicated by CIEDE2000.
  7. Contrast pairs after WCAG 2.2 (text on background, button text on button) with AA and AAA results.
  8. Fonts with roles (heading, body, mono), source (google, adobe, self-hosted, system) and a license hint. Font files are never downloaded.
  9. Design tokens as CSS variables, a Tailwind v4 @theme block and W3C design tokens (DTCG JSON), in the row and as files.
  10. Checks with pass, warn or fail: favicon, SVG favicon, 180 px touch icon, manifest and its 192/512 px and maskable icons, theme-color, OG image (reachable, 1200×630), Twitter card, SVG logo, brand color contrast, declared vs. real icon sizes.
  11. Files (downloadAssets): logo, favicons, touch icon, manifest icon and OG image as files and in one ZIP, plus logo.png from SVG logos, a square icon-512.png, favicon PNGs in 32 and 180 px, a self-contained brand-sheet.html, tokens.css, tailwind.css and tokens.json. SVGs are cleaned (no scripts, no event handlers, no external references). Metadata such as EXIF is removed.
  12. Monitor mode: compares each domain with the last run and lists changes to logo, primary color, name, favicon and fonts. Unchanged files are not stored again and are free.

Static HTML first. With renderJs: auto a page is rendered in a browser only when the HTML is an app shell or shows no logo and no colors. Images, fonts, media and trackers are blocked in the browser.

Who it is for

CRM and lead enrichment: a logo, a square icon, the name and the brand color for every domain, as a Clearbit logo alternative · SaaS onboarding: prefill a customer's workspace with their colors and logo · Designers and agencies: a brand sheet and design tokens of a client site in one run · SEO and web teams: favicon, manifest and social image checks across many domains · Brand monitoring: weekly runs that report a changed logo or color.

Input

Store prefill: startUrls: [{ "url": "https://urlwright.com/" }].

A few domains with files:

{
"startUrls": [{ "url": "https://urlwright.com/" }, { "url": "python.org" }],
"downloadAssets": true,
"maxAssetsPerDomain": 3
}

A CRM export (CSV or Google Sheets):

{
"csvUrl": "https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/edit",
"csvColumn": "Website",
"renderJs": "never",
"maxDomains": 5000
}

Domains from another run (Sitemap URL Extractor, Tech Stack Detector):

{
"datasetId": "YOUR_DATASET_ID",
"datasetField": "domain"
}

Weekly monitoring:

{
"startUrls": [{ "url": "example.com" }, { "url": "example.org" }],
"monitor": true,
"monitorStoreName": "my-brand-monitor",
"downloadAssets": true
}
FieldDefaultMeaning
startUrlsDomains or any URL of the site. Each domain is analysed once, from its home page.
datasetId, datasetFieldurlRead domains from a dataset (falls back to url, domain, finalUrl).
csvUrl, csvColumnPublic CSV, TSV or Google Sheets link. Columns named domain, website or url are found automatically.
maxDomains100Stop after this many unique domains.
renderJsautoauto, always or never.
downloadAssetsfalseStore image files and the kit files.
assetTypesalllogo, favicons, touchIcons, manifestIcons, ogImage.
maxAssetsPerDomain8Upper limit of billed image files per domain.
normalizetruePNG versions of the logo and icons.
storeFilesbothboth, zip or files.
scanBrandPagestrueOpen a linked brand or press page for the official logo.
maxExtraPages1Brand or press pages per domain (0 to 5).
tokenFormatsallcss, tailwind, dtcg.
monitor, monitorStoreNamefalse, brand-kit-monitorCompare with the last run.

Output

Dataset row (real example for urlwright.com, shortened)

{
"schemaVersion": 1,
"domain": "urlwright.com",
"finalUrl": "https://urlwright.com/",
"status": "ok",
"charged": true,
"chargedEvents": { "domain-analyzed": 1, "page-rendered": 0, "asset-downloaded": 8, "extra-page": 0 },
"name": { "value": "Urlwright", "source": "json-ld", "confidence": 0.99 },
"logo": {
"primary": { "url": null, "inline": true, "format": "svg", "width": 64, "height": 64, "kind": "symbol", "theme": "dark", "source": "header-inline-svg", "confidence": 0.97, "official": false },
"alternatives": []
},
"colors": {
"primary": { "hex": "#B33F20", "oklch": "oklch(52.7% 0.157 35.6)", "sources": ["css link color"] },
"background": { "hex": "#F4F1EA", "oklch": "oklch(95.9% 0.010 87.5)", "sources": ["css-var --bg"] },
"text": { "hex": "#1B1A17", "oklch": "oklch(21.8% 0.006 91.6)", "sources": ["css-var --text"] }
},
"contrast": [{ "pair": "text/background", "fg": "#1B1A17", "bg": "#F4F1EA", "ratio": 15.43, "aa": true, "aaLarge": true, "aaa": true }],
"fonts": [
{ "family": "IBM Plex Sans", "role": "body", "source": "self-hosted", "weights": [400, 500, 600] },
{ "family": "IBM Plex Mono", "role": "mono", "source": "self-hosted", "weights": [400, 500] }
],
"tokens": { "tailwind": "@theme {\n --color-brand-primary: #B33F20;\n --color-brand-accent: #E4502B;\n …\n}" },
"checks": [{ "id": "touch-icon-180", "status": "pass", "detail": "touch icon 180×180" }],
"files": [{ "key": "files-urlwright.com-logo.svg", "name": "logo.svg", "url": "https://api.apify.com/v2/key-value-stores/…", "zipPath": "urlwright.com/logo.svg" }]
}

The full row also has favicons, touchIcons, maskIcon, manifest, ogImage, brandPages, assetUrls, changes, warnings, description, language and requests. A logo theme of light is a light colored logo for dark backgrounds, dark a dark logo for light backgrounds.

Statuses

ok · partial (some requests were disallowed by robots.txt) · no-brand-signal (no name, or no logo, icon or brand color) · parked · duplicate · redirected-duplicate (redirects to a domain already in the run) · robots-disallowed · blocked (401, 403, 429, 503) · dns-error · tls-error · timeout · http-error · ssrf-blocked · invalid-input. Every row carries charged and, when free, a skipReason.

Key-value store

KeyContent
brand-kit.zipAll files, one folder per domain with brand.json, brand-sheet.html, tokens.css, tailwind.css, tokens.json, plus NOTICE.txt. Very large runs write brand-kit-part-1.zip, brand-kit-part-2.zip, … (500 MB each).
files-<domain>-<file>Single files (storeFiles files or both).
ASSET_URLS.csvDomain, kind and URL of every logo, icon and OG image found. Works as CSV input for the Image Downloader.
REPORT.json, REPORT.mdCoverage per field, statuses, failed checks, domains without a logo, low contrast, changes.
RUN_SUMMARYTotals, statuses, free reasons and charged events, also after a fatal error.

Pipelines

  • Sitemap URL Extractor → Brand Kit: pass the dataset of a sitemap run, Brand Kit reduces it to unique domains. Check every country and subdomain of a brand for consistency.
  • Tech Stack Detector → Brand Kit: both use the domain field, so the datasets join on it. A lead list with stack, logo and color.
  • Brand Kit → Image Downloader: ASSET_URLS.csv is a ready CSV input; every row also has assetUrls.

Pricing

Pay per event (USD). No start fee. You only pay for domains with a brand signal. Recommended minimum Max total charge per run: $0.02.

EventWhenFREEBRONZESILVERGOLD
domain-analyzed (primary)Domain with status ok or partial0.00400.00380.00360.0035
page-renderedPage rendered in a browser and loaded0.00600.00550.00500.0045
asset-downloadedEach stored image file (original or PNG version)0.00080.00070.00060.0006
extra-pageEach brand or press page that was read0.00100.00090.00080.0007

Per 1,000 (FREE → GOLD): domain-analyzed $4.00 → $3.50 · page-rendered $6.00 → $4.50 · asset-downloaded $0.80 → $0.60 · extra-page $1.00 → $0.70. Platinum and Diamond pay the Gold price.

Example (FREE): 1,000 domains without files and without rendering: 1,000 × 0.004 = $4.00. With up to 3 files per domain: at most $4.00 + 3,000 × 0.0008 = $6.40.

The brand sheet, token files, brand.json, the ZIP, ASSET_URLS.csv and the reports are included.

What is free

  • DNS, TLS, timeout and HTTP errors, 401/403/429/503 responses.
  • Domains disallowed by robots.txt.
  • Parked domains and domains without a brand signal.
  • Duplicate domains, also after a redirect to a domain already in the run.
  • Failed renderings, brand pages that did not load.
  • Files that did not change since the last run in monitor mode.

The run stops cleanly before a domain that would exceed your Max total charge; RUN_SUMMARY shows stoppedByChargeLimit.

Use responsibly

Use responsibly. Logos, names and colors are trademarks of their owners. Brand Kit reads only the public website of each domain you provide, respects robots.txt, and does not log in or bypass any protection. Use the results to identify a company or to work on your own or your client's brand; do not use them in a way that suggests endorsement or affiliation. Font files are never downloaded. No personal data is collected.

  • Robots and rate limits: UrlwrightBot rules apply to the page, stylesheets and every file, also on CDN hosts. At most one request per second per host. A missing robots.txt (404) allows fetching; server errors on robots.txt count as disallowed.
  • Request cap: in the default mode a domain costs at most 11 requests (robots.txt, home page, manifest, up to 4 stylesheets, up to 4 file checks). Files, brand pages and rendering come on top only when you turn them on.
  • SSRF protection: private, link-local and metadata addresses are blocked after DNS resolution and after redirects.
  • No personal data: no emails, phone numbers, people, authors or social profiles. JSON-LD is read for organisations only.

More tools: urlwright.com · Bot details: urlwright.com/bot

Limitations

  • Passive only: no login, cookies, captcha bypass or proxy rotation. Sites with strict bot protection return free blocked rows.
  • Home page first: the kit comes from the home page, its stylesheets and linked files. Logos that only appear after interaction are not found.
  • Colors are inferred from CSS, meta tags and the logo. A site that uses many accent colors may get a different secondary than its style guide.
  • Fonts: names come from CSS and font services. Licenses are hints, not legal advice.
  • Size limits: HTML 5 MB, CSS 2 MB per file, files 10 MB.

FAQ

Is this a Clearbit logo API alternative?

For bulk work, yes: one run gives a verified logo, a square icon-512.png, the name and the primary color for every domain, as files and as JSON. It is a batch actor, not a hosted image URL.

Why is a domain partial?

Some requests (often a stylesheet or a CDN host) were disallowed by robots.txt. The row is billed once like ok, and warnings says what was skipped.

Why did a domain get no-brand-signal?

No name could be found, or neither a logo, an icon nor a brand color. The row is free.

Does rendering load images and fonts?

No. Images, fonts, media and trackers are blocked in the browser, and robots.txt is checked for every request the page makes.

What is in brand-sheet.html?

A single HTML file with the logo, icons, colors with contrast, fonts and tokens of a domain. All images are embedded, so it works offline.

How does monitor mode know what changed?

State per domain is kept in a named key-value store in your account. Logos are compared by hash and perceptual hash, the primary color by CIEDE2000 (a difference above 5 counts), plus name, favicon and fonts.

No warranty

Results are generated automatically from public website signals. They can be incomplete or wrong. They are provided as-is, without warranty. Use them at your own judgment; Urlwright accepts no liability for decisions based on them.