Website Brand Extractor avatar

Website Brand Extractor

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Website Brand Extractor

Website Brand Extractor

Extract logos, brand colors, fonts, social links, and metadata from any website. Returns structured JSON with favicon, logo images, primary/secondary colors, font families, OG/Twitter metadata, and links for 17+ social platforms.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Otto Linsky

Otto Linsky

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

3 days ago

Last modified

Share

Brand Fetcher

Apify Actor that scrapes any website and extracts brand assets — logos, favicon, brand colors, fonts, metadata, and social media links. Returns clean, structured JSON.

Features

  • Images — Extracts favicon, logo (images containing "logo" in URL or alt text), and up to 2 product/hero images
  • Brand Colors — Returns primary and secondary brand colors, sourced from theme-color meta, CSS custom properties, and stylesheets (neutrals filtered, similar colors deduplicated)
  • Fonts — Detects font families from CSS, @font-face, Google Fonts links, and CSS variables. Filters out numeric values, CSS keywords, and non-font entries.
  • Metadata — Open Graph, Twitter Card, author, keywords, canonical URL, charset, viewport
  • Social Links — Detects profile links for 17 platforms
  • Toggleable — Enable or disable each extraction category independently
  • Rate Limiting — 1-second delay between requests to avoid overloading target sites

Supported Platforms

Image Sources

  • Favicon links (<link rel="icon">, <link rel="shortcut icon">)
  • Apple touch icons (<link rel="apple-touch-icon">)
  • Images with "logo" in URL or alt text (jpg, png, webp, gif)
  • JSON-LD schema.org logos
  • Product, hero, banner, and featured images

Social Media Platforms

PlatformPattern
Facebookfacebook.com, fb.com, fb.me
Twitter/Xtwitter.com, x.com
Instagraminstagram.com
LinkedInlinkedin.com
YouTubeyoutube.com, youtu.be
TikToktiktok.com
Pinterestpinterest.com, pin.it
Snapchatsnapchat.com
GitHubgithub.com
GitLabgitlab.com
Bitbucketbitbucket.org
Discorddiscord.gg, discord.com
Telegramt.me, telegram.org
Redditreddit.com
Mastodonmastodon., mstdn.
Threadsthreads.net
Blueskybsky.app

Metadata Standards

  • Basic HTML meta tags (charset, viewport, author, keywords)
  • Open Graph protocol (og:title, og:description, og:image, og:site_name, og:type, og:url)
  • Twitter Cards (twitter:card, twitter:title, twitter:description)
  • Theme color and application name
  • Canonical URL

Input

FieldTypeDefaultDescription
urlsstring[]requiredWebsite URLs to extract brand info from
extractLogosbooleantrueExtract favicon, logo, and product images
extractColorsbooleantrueExtract primary and secondary brand colors
extractFontsbooleantrueExtract font families used on the page
extractMetadatabooleantrueExtract OG, Twitter Card, and other meta tags
extractSocialLinksbooleantrueExtract social media profile links
proxyConfigurationobjectApify ProxyProxy settings

Input example

{
"urls": ["https://stripe.com", "https://github.com"],
"extractLogos": true,
"extractColors": true,
"extractFonts": true,
"extractMetadata": true,
"extractSocialLinks": true,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Output

Each URL produces one JSON object in the dataset:

FieldTypeDescription
urlstringThe scraped URL
successbooleanWhether extraction succeeded
timestampstringISO 8601 extraction timestamp
titlestring | nullBrand/site name (from og:site_name, og:title, or <title>)
descriptionstring | nullSite description (from og:description or meta description)
imagesImageAsset[]Extracted images — favicon, logo, product (if enabled)
colorsBrandColorsPrimary and secondary brand colors (if enabled)
fontsFontInfo[]Font families used (if enabled)
metadataobjectMeta tags (if enabled)
socialLinksstring[]Social media profile URLs (if enabled)

Image asset object

FieldTypeValues
urlstringAbsolute URL of the image
typestringfavicon, logo, or product

Brand colors object

FieldTypeDescription
primaryobject | nullMost dominant brand color (hex, rgb, source)
secondaryobject | nullSecond most dominant brand color (hex, rgb, source)

Font info object

FieldTypeDescription
familystringFont family name (e.g. Inter)
usageCountnumberWeighted occurrence count
sourcestringWhere the font was found (e.g. google-fonts, @font-face, stylesheet)

Output example

{
"url": "https://stripe.com",
"success": true,
"timestamp": "2026-03-26T10:30:00.000Z",
"title": "Stripe",
"description": "Stripe is a suite of APIs powering online payment processing.",
"images": [
{
"url": "https://stripe.com/favicon.ico",
"type": "favicon"
},
{
"url": "https://stripe.com/img/v3/home/logo.png",
"type": "logo"
},
{
"url": "https://stripe.com/img/v3/home/hero.jpg",
"type": "product"
}
],
"colors": {
"primary": {
"hex": "#635bff",
"rgb": "rgb(99, 91, 255)",
"source": "theme-color meta"
},
"secondary": {
"hex": "#0a2540",
"rgb": "rgb(10, 37, 64)",
"source": "css-variable"
}
},
"fonts": [
{
"family": "Sohne",
"usageCount": 25,
"source": "@font-face"
},
{
"family": "Inter",
"usageCount": 10,
"source": "google-fonts"
}
],
"metadata": {
"charset": "utf-8",
"viewport": "width=device-width, initial-scale=1",
"ogTitle": "Stripe | Payment Processing Platform",
"ogDescription": "Stripe is a suite of APIs powering online payment processing.",
"twitterCard": "summary_large_image",
"themeColor": "#635bff"
},
"socialLinks": [
"https://twitter.com/stripe",
"https://www.linkedin.com/company/stripe",
"https://github.com/stripe"
]
}

Error Handling

The Actor provides detailed error messages for common scenarios:

ScenarioExample Message
Domain not foundDomain not found: Could not resolve example.invalid. Check the URL for typos.
Connection refusedConnection refused: The server at example.com is not accepting connections.
HTTP 403 ForbiddenHTTP 403 Forbidden: Access denied. The site may be blocking automated requests.
HTTP 404 Not FoundHTTP 404 Not Found: The page does not exist.
HTTP 429 Rate LimitedHTTP 429 Too Many Requests: Rate limited. Try again later or use a proxy.
HTTP 5xx Server ErrorHTTP 500 Server Error: The server encountered an internal error.
Request TimeoutRequest timeout: URL did not respond within 30 seconds.
Invalid URLInvalid URL format: "not-a-url"
SSL/TLS ErrorSSL/TLS error: Could not establish a secure connection.

Failed extractions output:

{
"url": "https://unreachable-site.example",
"success": false,
"timestamp": "2026-03-26T10:30:00.000Z",
"error": "Domain not found: Could not resolve unreachable-site.example. Check the URL for typos."
}