Website Logo & Brand Kit Extractor: Colors, Fonts avatar

Website Logo & Brand Kit Extractor: Colors, Fonts

Pricing

from $2.00 / 1,000 brand kits

Go to Apify Store
Website Logo & Brand Kit Extractor: Colors, Fonts

Website Logo & Brand Kit Extractor: Colors, Fonts

Extract the logo, favicon and app icons, brand colors, fonts and social profiles of any company website. Logos come from JSON-LD, the header, apple-touch-icon and the manifest. Colors come from theme-color, CSS and logo pixels. HTTP only. robots.txt respected.

Pricing

from $2.00 / 1,000 brand kits

Rating

0.0

(0)

Developer

Malik Said

Malik Said

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Website Logo & Brand Kit Extractor gets the logo, favicon, brand colors, fonts and social profiles of any company website. Give it a list of domains. For each domain it returns one brand kit row.

The Actor reads each site's own files: the homepage, the web app manifest and the stylesheets. It ranks every logo candidate it finds and loads the best ones to check that they are real images. It does not use any third-party logo API. It uses plain HTTP, with no browser.

Use it to add logos to a CRM or lead list, to fill company cards in an app, to build a brand reference for a design project, or to watch a list of companies for rebrands.

Website logo and brand kit data you get

One row per domain. The main fields:

FieldWhat it holds
domain, finalUrl, siteName, titleThe domain, its homepage after redirects, and the site name
logoUrl, logoSource, logoFormat, logoWidth, logoHeightThe chosen logo, where it came from, and its real format and size
logoFileUrlDownload link of the stored logo file (with Save logo files on)
iconUrl, faviconUrl, faviconsSquare app icon (apple-touch-icon or manifest icon), favicon, and every icon declared in the page head
logoCandidatesEvery logo and icon candidate, ranked, with format, size and whether it loaded
brandColorsBrand colors as hex, strongest signals first, each with its sources
logoColorsMain colors of the logo pixels, with their share in percent
themeColor, manifestThemeColor, manifestBackgroundColor, tileColorColors the site declares for browsers and apps
cssColorVariables, cssTopColorsCSS variables with brand-like names, and the most used colors in the CSS
primaryFont, fontsFont families named in the CSS, with use counts and whether the site loads the font file
socialProfilesCompany profile links: LinkedIn company page, X, Facebook, Instagram, YouTube, TikTok, GitHub, Pinterest, Threads, Vimeo

How the website logo is chosen

The Actor collects candidates from these places, in this order of trust:

  1. The organisation logo in the page's JSON-LD data.
  2. An inline SVG or an image inside the header logo or the home link.
  3. Other images whose file name or alt text names the site.
  4. apple-touch-icon and web app manifest icons.
  5. The Open Graph image, when its file name says logo.
  6. mask-icon and favicon files, and /favicon.ico when the page declares no icon.

It loads up to 3 logo candidates and the first icon of each type. A file that does not load, is not an image, or is far too big for a logo (such as a banner photo) is not chosen. The logoCandidates list shows every candidate, so you can pick another one.

How brand colors are found

brandColors merges these signals. Close shades merge into one entry.

  • theme-color: the theme-color meta tag.
  • manifest: theme_color in the web app manifest.
  • logo: the main colors of the logo pixels, read with sharp. White, black and grey are left out.
  • css-variable: CSS custom properties named primary, brand, accent and similar. In color scales only the base steps (400 to 600) count.
  • css-frequent: the most used strong colors in the CSS.
  • tile-color: the msapplication-TileColor meta tag.

An inline SVG logo often takes its color from the page CSS. Its pixel colors then show as black or grey, and the notes field says so. The CSS signals still give the brand color in that case.

Example output

A real row for cloudflare.com, shortened:

{
"domain": "cloudflare.com",
"finalUrl": "https://www.cloudflare.com/",
"siteName": "Cloudflare",
"logoUrl": "https://www.cloudflare.com/logo.svg",
"logoSource": "json-ld",
"logoFormat": "svg",
"logoWidth": 341,
"logoHeight": 156,
"faviconUrl": "https://www.cloudflare.com/favicon.ico",
"themeColor": "#ff4801",
"brandColors": [
{ "hex": "#ff4801", "sources": ["theme-color"] },
{ "hex": "#f38020", "sources": ["logo"] },
{ "hex": "#faae40", "sources": ["logo"] },
{ "hex": "#ff5e1f", "sources": ["css-variable", "css-frequent"] }
],
"logoColors": [
{ "hex": "#f38020", "share": 82.6, "neutral": false },
{ "hex": "#faae40", "share": 17.4, "neutral": false }
],
"primaryFont": "FT Kunst Grotesk",
"fonts": [
{ "family": "FT Kunst Grotesk", "uses": 33, "webFont": true, "sources": ["font-face", "css"] },
{ "family": "Apercu Mono Pro", "uses": 11, "webFont": true, "sources": ["font-face", "css"] }
],
"socialProfiles": {
"github": "https://github.com/cloudflare",
"linkedin": "https://www.linkedin.com/company/cloudflare",
"x": "https://x.com/cloudflare"
},
"stylesheetsRead": 4,
"robotsTxtFound": true
}

How to extract website logos and brand kits

  1. Open the Actor and paste your domains into Domains, one per line. Plain domains and full URLs both work.
  2. Turn on Save logo files if you want the logo files themselves. Each run then stores one logo file per domain in its key-value store.
  3. Click Start. Brand kits appear in the Output tab as each domain finishes.
  4. Download the results as JSON, CSV or Excel, or read them through the Apify API.

Domains that could not be read are listed with the reason in the FAILED_DOMAINS record of the run's key-value store. They are not charged.

Input

FieldDefaultWhat it does
domains3 example domainsDomains or homepage URLs to read
analyzeLogoColorstrueRead the main colors of the chosen logo
saveLogoFilesfalseStore the chosen logo file per domain and return its link
maxStylesheets4CSS files to read per homepage, for fonts and colors
monitorModefalseReturn a domain only when its logo, colors or fonts changed since the last monitor run
stateKeydefaultName of the monitor memory. Use one key per domain list
maxItems100Stop after this many brand kits. 0 means no limit

Example input:

{
"domains": ["apify.com", "www.mozilla.org", "wordpress.org"],
"saveLogoFiles": true,
"maxItems": 100
}

Pricing

The Actor uses pay per event pricing:

  • $0.02 per run start.
  • $0.002 per brand kit saved. That is $2 per 1,000 domains.

A run of 500 domains costs at most $1.02. Domains that fail (blocked, offline, no logo found) cost nothing. Monitor mode charges only for domains that changed.

Limits and good practice

  • The Actor reads robots.txt for every host it touches, including CDN hosts for CSS and images, and skips any file robots.txt disallows.
  • It waits at least 500 ms between two requests to the same host. Each request stops after 30 seconds.
  • It never tries to pass a bot check, CAPTCHA or login. Sites behind Cloudflare, AWS WAF or similar checks, and sites that answer 403, are listed as failed. In a test of 168 well-known domains, 125 gave a brand kit.
  • It refuses private and local network addresses.
  • Sites that build their page with JavaScript only may show no logo to a plain HTTP reader. Those domains are listed as failed and not charged.
  • Fonts come from the CSS text. A font loaded only by a script is not seen.

Trademarks and fair use

Logos, names and brand assets are trademarks of their owners. This Actor only finds the files each company publishes on its own website. Check that your use of a logo is allowed, for example to identify the company in a list or a CRM. Do not use a logo in a way that suggests the owner endorses you.

The Actor returns company data only. It skips personal LinkedIn profiles, share links and posts, and it reads no email addresses or phone numbers.

FAQ

Can it get logos from sites behind a bot check? No. The Actor does not bypass protections. It lists those domains as failed and does not charge for them.

Why is logoUrl empty but logoFormat is svg? The logo is an inline SVG inside the page, so it has no URL of its own. Turn on Save logo files to get it as an SVG file through logoFileUrl.

Can I watch companies for a rebrand? Yes. Turn on monitor mode and schedule the Actor. It returns a domain again only when its chosen logo, brand colors or fonts change.

Does it use Clearbit, Brandfetch or another logo API? No. Every value comes from the company's own website.

Support

Open an issue on the Actor's Issues tab. Include the run ID and the domain that gave a wrong result.