# Favicon & Logo Extractor - Brand Colors, Icons & OG, $0.90/1K (`plotpointtech/favicon-logo-extractor`) Actor

Get every favicon with real size and type, the best logo with a confidence score, brand colors from the logo, theme colors, OG image, site name and social links for any website. Optional file downloads. $0.90 per 1,000 sites.

- **URL**: https://apify.com/plotpointtech/favicon-logo-extractor.md
- **Developed by:** [Plot Point Technologies](https://apify.com/plotpointtech) (community)
- **Categories:** Developer tools, Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.56 / 1,000 websites

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Favicon & Logo Extractor: Brand Colors, Icons and OG Images from Any Site

**Paste a list of websites and get each site's brand assets in one row: every favicon with its real size and format, the most likely logo with a confidence score, brand colors taken from the logo, theme and manifest colors, the Open Graph image, the site name and social profile links.** Optionally save the logo and icon files and get direct download links. Flat price of $0.90 per 1,000 websites.

### What does this favicon and logo extractor do?

- **Finds every favicon** declared on the page (`icon`, `shortcut icon`, `apple-touch-icon`, `mask-icon`, `fluid-icon`, `msapplication-TileImage`), every icon in the web app manifest, and the default `/favicon.ico`.
- **Checks each icon file** so you get its real pixel size, format (PNG, ICO, SVG, WebP, JPEG...), MIME type and file size, plus all sizes packed inside `.ico` files. Broken or missing icons are marked `verified: false`.
- **Picks the best logo** from the page header (`<img>` or inline `<svg>` with "logo" in its class, id or alt text, linked to the homepage), schema.org `Organization` / `publisher` logo, microdata, CSS background logos and `og:image`. Each candidate gets a **confidence score from 0 to 1** and the reasons behind it, and partner or customer logo strips are scored down.
- **Extracts brand colors** from the logo pixels (or SVG fill colors). If the logo is black or white only, colors come from the largest favicon. You get a palette with hex, RGB, share of the image and a neutral flag, plus `primaryColor` and `brandColors`.
- **Reads theme colors**: `theme-color` meta tags (including light/dark variants), the manifest's `theme_color` and `background_color`, the Windows tile color and the Safari pinned-tab color.
- **Returns the site name** (og:site_name, schema.org, application name, manifest or title), the **OG image** with width and height, the Twitter card image and **social profile links** (LinkedIn, X, Facebook, Instagram, YouTube, TikTok and more).
- **Optionally saves files** (logo, best favicon, every favicon, OG image) to the run's key-value store and returns download links.

### Use cases

- **CRM and sales tools:** show a company logo and favicon next to every account or lead.
- **SaaS onboarding:** prefill a customer's brand colors and logo when they sign up with their website.
- **Link previews and directories:** display the icon, name and OG image for any URL.
- **Brand and design research:** compare color palettes and logos across competitors.
- **Data enrichment pipelines and AI agents:** turn a domain into a clean brand profile.

### How to use it

1. Click **Try for free** (or **Start**).
2. Paste **Websites**, one per line (`stripe.com` or full URLs). Duplicates are removed.
3. Optionally turn on **Save logo and favicon files** to get downloadable copies.
4. Run it and download the results as JSON, CSV or Excel, or connect them to your app.

### Input example

```json
{
  "websites": ["github.com", "stripe.com", "mozilla.org"],
  "extractColors": true,
  "paletteSize": 5,
  "downloadFiles": false,
  "downloadAllIcons": false,
  "downloadOgImage": false
}
```

| Field | Default | Description |
|---|---|---|
| `websites` | 3 examples | Domains or URLs to process |
| `extractColors` | `true` | Build a palette from the logo or largest favicon |
| `paletteSize` | `5` | Colors in the palette (1-12) |
| `downloadFiles` | `false` | Save the logo and best favicon, return download links |
| `downloadAllIcons` | `false` | Also save every favicon |
| `downloadOgImage` | `false` | Also save the og:image |
| `verifyIcons` | `true` | Load each icon to read real size and format |
| `readManifest` | `true` | Read the web app manifest |
| `checkDefaultFavicon` | `true` | Check `/favicon.ico` when not declared |
| `maxIconsPerSite` | `25` | Limit on icons listed per site |
| `maxInlineSvgChars` | `20000` | Largest inline SVG logo returned as markup |
| `maxConcurrency` | `10` | Websites processed in parallel |

### Output example

A real result from the default run (the `favicons` and `logoCandidates` lists are shortened here):

```json
{
  "input": "mozilla.org",
  "url": "https://www.mozilla.org/en-US/",
  "domain": "mozilla.org",
  "siteName": "Mozilla",
  "title": "Mozilla - Internet for people, not profit (US)",
  "logoUrl": "https://www.mozilla.org/media/img/logos/m24/lockup-black.f2ddba3f0724.svg",
  "logoConfidence": 0.95,
  "logoSource": "header-img",
  "logo": {
    "url": "https://www.mozilla.org/media/img/logos/m24/lockup-black.f2ddba3f0724.svg",
    "source": "header-img",
    "confidence": 0.95,
    "signals": [
      "logo in attributes",
      "in header/nav",
      "links to homepage",
      "alt/label matches site name"
    ],
    "format": "svg",
    "type": "image/svg+xml",
    "width": 984,
    "height": 235,
    "bytes": 1244
  },
  "logoCandidates": [
    {
      "url": "https://www.mozilla.org/media/img/logos/m24/lockup-black.f2ddba3f0724.svg",
      "source": "header-img",
      "confidence": 0.95,
      "signals": [
        "logo in attributes",
        "in header/nav",
        "links to homepage",
        "alt/label matches site name"
      ]
    },
    {
      "url": "(inline svg)",
      "source": "inline-svg",
      "confidence": 0.37,
      "signals": [
        "logo in attributes",
        "alt/label matches site name"
      ]
    }
  ],
  "faviconUrl": "https://www.mozilla.org/media/img/favicons/mozilla/favicon-196x196.e143075360ea.png",
  "faviconSize": "196x196",
  "faviconCount": 4,
  "favicons": [
    {
      "url": "https://www.mozilla.org/media/img/favicons/mozilla/apple-touch-icon.05aa000f6748.png",
      "rel": "apple-touch-icon",
      "source": "html",
      "sizes": "180x180",
      "width": 180,
      "height": 180,
      "type": "image/png",
      "format": "png",
      "declaredSizes": "180x180",
      "bytes": 467,
      "verified": true,
      "httpStatus": 200
    },
    {
      "url": "https://www.mozilla.org/media/img/favicons/mozilla/favicon-196x196.e143075360ea.png",
      "rel": "icon",
      "source": "html",
      "sizes": "196x196",
      "width": 196,
      "height": 196,
      "type": "image/png",
      "format": "png",
      "declaredSizes": "196x196",
      "bytes": 591,
      "verified": true,
      "httpStatus": 200
    }
  ],
  "ogImage": {
    "url": "https://www.mozilla.org/media/img/m24/og.3a69dffad83e.png",
    "width": 1200,
    "height": 630,
    "type": "image/png"
  },
  "twitterImage": null,
  "themeColor": null,
  "themeColors": [],
  "tileColor": null,
  "maskIconColor": null,
  "manifest": null,
  "primaryColor": "#00d330",
  "brandColors": [
    "#00d330",
    "#166126",
    "#1d3f23",
    "#0aa12c"
  ],
  "palette": [
    {
      "hex": "#231f20",
      "rgb": [35, 31, 32],
      "share": 0.837,
      "neutral": true
    },
    {
      "hex": "#00d330",
      "rgb": [0, 211, 48],
      "share": 0.122,
      "neutral": false
    },
    {
      "hex": "#166126",
      "rgb": [22, 97, 38],
      "share": 0.015,
      "neutral": false
    },
    {
      "hex": "#1d3f23",
      "rgb": [29, 63, 35],
      "share": 0.01,
      "neutral": false
    },
    {
      "hex": "#0aa12c",
      "rgb": [10, 161, 44],
      "share": 0.009,
      "neutral": false
    }
  ],
  "colorSource": "favicon",
  "socialLinks": {
    "instagram": [
      "https://www.instagram.com/mozilla",
      "https://www.instagram.com/firefox"
    ],
    "linkedIn": [
      "https://www.linkedin.com/company/mozilla-corporation"
    ],
    "tiktok": [
      "https://www.tiktok.com/@mozilla",
      "https://www.tiktok.com/@firefox"
    ],
    "youtube": [
      "https://www.youtube.com/user/firefoxchannel"
    ]
  },
  "downloads": null,
  "status": "ok",
  "httpStatus": 200,
  "scrapedAt": "2026-11-03T19:50:00Z"
}
```

Main fields: `siteName`, `logoUrl`, `logoConfidence`, `logoSource`, `logo` (with `inlineSvg` markup when the logo is an inline SVG), `logoCandidates`, `faviconUrl`, `faviconSize`, `favicons`, `ogImage`, `twitterImage`, `themeColor`, `themeColors`, `tileColor`, `maskIconColor`, `manifest`, `primaryColor`, `brandColors`, `palette`, `colorSource`, `socialLinks` and `downloads`.

### How much does it cost?

You pay per website saved: **$0.90 per 1,000 websites** ($0.0009 each), plus a $0.00005 start fee per run. File saving is included.

| You process | You pay |
|---|---|
| 100 websites | $0.09 |
| 1,000 websites | $0.90 |
| 10,000 websites | $9.00 |

Websites that cannot be loaded, are blocked by robots.txt, time out or have no favicon or logo at all are not saved and not charged; they are listed in the `FAILED_WEBSITES` record of the run's key-value store. Set a maximum cost per run to cap spending.

**Volume discounts on higher Apify plans.** The prices above are for the Apify Free plan. On paid plans the per-website price drops automatically: about 15% lower on Bronze, 25% lower on Silver and 38% lower on Gold and above.

### Use it via API, Make, Zapier, n8n or an AI agent

**Apify API.** Start a run and get the results in one HTTP request (replace `YOUR_API_TOKEN` with the token from Apify Console > Settings > Integrations):

```bash
curl -X POST "https://api.apify.com/v2/acts/plotpointtech~favicon-logo-extractor/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"websites": ["github.com", "stripe.com", "mozilla.org"]}'
```

Official `apify-client` libraries exist for Python and JavaScript; the **API** tab on this page has ready-made code.

**No-code automation.** Connect the tool to **Make, Zapier, n8n, Google Sheets, Airtable** or any webhook with Apify integrations, and use **Schedules** to refresh brand data regularly.

**AI agents (MCP).** Give Claude, ChatGPT, Cursor or any MCP-compatible agent access to this tool through the hosted Apify MCP server:

```
https://mcp.apify.com?tools=plotpointtech/favicon-logo-extractor
```

### FAQ

**Is it legal to extract logos and favicons?**
The tool reads only public pages of websites you supply, obeys robots.txt (including crawl-delay) for the page and every file it loads, and does not log in or bypass bot protection. Logos and icons are usually trademarks and copyrighted: use them in ways the owner allows, such as identifying the company, and follow each site's terms.

**Which pages are read?**
Only the page you enter (normally the homepage) and its web app manifest, plus the icon and logo image files they reference. No other pages are crawled.

**How accurate is the logo guess?**
Scores of 0.8 and above usually mean the logo was found in the header linked to the homepage or in structured data. Scores under 0.4 are a fallback (for example a large favicon or a social image); check `logoCandidates` for alternatives.

**Why is `logoUrl` empty for some sites?**
Many sites draw their logo as inline SVG code instead of a file. The markup is in `logo.inlineSvg`; turn on **Save logo and favicon files** to get it as an `.svg` file with a download link in `logoUrl`.

**Why did a site fail?**
Some sites block automated visitors, disallow robots, or only render their content with JavaScript. Failed sites are free and listed in `FAILED_WEBSITES`.

**Are download links permanent?**
Files stay in the run's key-value store for your Apify plan's data retention period. Copy them to your own storage if you need them longer.

### Related tools from Plot Point Technologies

- [Website Tech Stack Detector - CMS, Analytics & 290+ Techs](https://apify.com/plotpointtech/website-technology-detector): CMS, ecommerce, analytics and hosting of any website.
- [Email & Contact Scraper - Website Emails, Phones & Socials](https://apify.com/plotpointtech/website-contact-finder): published emails, phones and social profiles from company websites.
- [Bulk Image Downloader - All Images from Any Website + ZIP](https://apify.com/plotpointtech/bulk-image-downloader-extractor): every image on a set of pages, saved and zipped.
- [Website Screenshot & PDF API - Full Page, Mobile, $1.50/1K](https://apify.com/plotpointtech/website-screenshot-pdf-generator): screenshots and PDFs of any web page.
- [WHOIS & Domain Lookup - Bulk RDAP, DNS, SSL & Mail Provider](https://apify.com/plotpointtech/bulk-domain-lookup): registrar, expiry, DNS and SSL for any domain list.

Plot Point Technologies is not affiliated with any website you process, the social networks named above, or Apify.

***

If this tool saved you time, we would be grateful for a short review on this page; it helps other people find it. If something did not work as expected, please open an issue on the **Issues** tab and we will look into it quickly.

# Actor input Schema

## `websites` (type: `array`):

Domains or URLs, one per line (for example stripe.com or https://www.example.com/). The page you enter (usually the homepage) and its web app manifest are read.

## `extractColors` (type: `boolean`):

Build a color palette from the logo (or the largest favicon if the logo has no readable colors).

## `paletteSize` (type: `integer`):

Maximum number of colors in the palette.

## `downloadFiles` (type: `boolean`):

Store the logo and best favicon in the run's key-value store and return their file URLs in the downloads field.

## `downloadAllIcons` (type: `boolean`):

With file saving on, also store every favicon found, not just the best one.

## `downloadOgImage` (type: `boolean`):

With file saving on, also store the og:image social preview image.

## `verifyIcons` (type: `boolean`):

Load each favicon to confirm it exists and read its real format and pixel size. Turn off for the fastest run (declared sizes only, no colors from favicons).

## `readManifest` (type: `boolean`):

Read manifest.json / site.webmanifest for icons, name, theme and background colors.

## `checkDefaultFavicon` (type: `boolean`):

Also check the default /favicon.ico location when the page does not declare it.

## `checkOgImageSize` (type: `boolean`):

When the page does not state og:image width and height, read the first bytes of the image to get them.

## `maxIconsPerSite` (type: `integer`):

Upper limit on icons listed and checked per website.

## `maxInlineSvgChars` (type: `integer`):

Inline SVG logos up to this many characters are returned as markup in logo.inlineSvg. 0 = never include markup.

## `maxConcurrency` (type: `integer`):

How many websites are processed at the same time.

## Actor input object example

```json
{
  "websites": [
    "github.com",
    "stripe.com",
    "mozilla.org"
  ],
  "extractColors": true,
  "paletteSize": 5,
  "downloadFiles": false,
  "downloadAllIcons": false,
  "downloadOgImage": false,
  "verifyIcons": true,
  "readManifest": true,
  "checkDefaultFavicon": true,
  "checkOgImageSize": true,
  "maxIconsPerSite": 25,
  "maxInlineSvgChars": 20000,
  "maxConcurrency": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "websites": [
        "github.com",
        "stripe.com",
        "mozilla.org"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("plotpointtech/favicon-logo-extractor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "websites": [
        "github.com",
        "stripe.com",
        "mozilla.org",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("plotpointtech/favicon-logo-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "websites": [
    "github.com",
    "stripe.com",
    "mozilla.org"
  ]
}' |
apify call plotpointtech/favicon-logo-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plotpointtech/favicon-logo-extractor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/eGQLD68c5cRMB50yP/builds/RztrSHJG7LrnJ0Lc0/openapi.json
