# Logo and Favicon Finder: icons, touch icons and logos in bulk (`examsens.ai/logo-favicon-finder`) Actor

For each domain, finds the favicon, Apple touch icon, web manifest icons, Open Graph image and the likely logo, measures every image and saves the files for download.

- **URL**: https://apify.com/examsens.ai/logo-favicon-finder.md
- **Developed by:** [Ed Rayyis](https://apify.com/examsens.ai) (community)
- **Categories:** Marketing, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.20 / 1,000 domain processeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Logo and Favicon Finder: icons, touch icons and logos in bulk

Give it a list of domains and it returns each site's favicon, Apple touch icon, web app manifest icons, Open Graph image and its likely logo. Every image is downloaded, measured and saved, so you get a direct download link along with the pixel size and format.

### What it looks at

For each domain the home page is read for:

- `link` icons (`icon`, `shortcut icon`), Apple touch icons and the Safari mask icon
- the web app manifest and every icon it lists, with its declared sizes
- the Open Graph image
- logos named in JSON-LD structured data (such as an `Organization` logo)
- the image or inline SVG inside a link back to the home page
- images and inline SVGs in the page header or nav menu marked as a logo

When the page declares no icon, `/favicon.ico` is tried.

The likely logo is picked in this order: a JSON-LD logo, then the image or SVG in the home page link, then a marked logo in the header, then the largest manifest icon, Apple touch icon or favicon. `logoSource` tells you which rule found it.

Each image is measured: width and height in pixels, the format, and for ICO files every size packed inside (such as 48x48, 32x32 and 16x16). For SVG files the size comes from the file's width and height or its viewBox. An inline SVG logo is saved as a standalone SVG file.

### Input

- Domains or site URLs (required): `example.com`, `www.example.com` or a full URL
- Save image files (default on)
- Maximum images per site (default 20)
- Timeout per request (default 20 seconds)

### Output

Dataset: one item per domain with `domain`, `ok`, `finalUrl`, `siteName`, `themeColor`, `logoUrl`, `logoSource`, `logoFileUrl`, `faviconUrl` (the largest favicon), `appleTouchIconUrl` (the largest), `ogImageUrl`, `manifestUrl`, `manifestIcons`, `imageCount`, and `images`: every image found, each with `kind`, `url`, `declaredSizes`, `declaredType`, `format`, `width`, `height`, `icoSizes`, `contentType`, `bytes`, `fileKey`, `fileUrl`, and `error` when it could not be loaded.

The image files are in the run's key value store, named after the domain and the kind of image, such as `example.com-03-apple-touch-icon.png`.

A domain that cannot be reached, or input that is not a domain, gets `ok: false` and an `error`, and the rest of the run carries on. Export as JSON, CSV or Excel, or read it over the API.

### Pricing

Pay per event: one event per domain processed. A domain whose home page cannot be loaded is not charged. The run stops when it reaches the maximum charge you set.

### Scope and conduct

Only each site's home page, its manifest and the images it declares are downloaded. No browser is used, nothing is clicked, nothing is logged in to, and no personal data is collected. Logos and icons belong to their owners: check you have the right to use them.

### Support

Questions and problems: the Issues tab on this page. Replies are written by an AI assistant on behalf of the developer and reviewed by the developer.

# Actor input Schema

## `domains` (type: `array`):

Domains such as example.com, or full site URLs. Each one is opened at its home page unless you give a path.

## `saveFiles` (type: `boolean`):

Save every image found to the run's key value store and add a download link to each. When off, only the image URLs and measurements are returned.

## `maxImagesPerSite` (type: `integer`):

Stop measuring and saving after this many images for one site.

## `timeoutSecs` (type: `integer`):

Give up on one page or image after this many seconds.

## Actor input object example

```json
{
  "domains": [
    "apify.com",
    "python.org"
  ],
  "saveFiles": true,
  "maxImagesPerSite": 20,
  "timeoutSecs": 20
}
```

# 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 = {
    "domains": [
        "apify.com",
        "python.org"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("examsens.ai/logo-favicon-finder").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 = { "domains": [
        "apify.com",
        "python.org",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("examsens.ai/logo-favicon-finder").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 '{
  "domains": [
    "apify.com",
    "python.org"
  ]
}' |
apify call examsens.ai/logo-favicon-finder --silent --output-dataset

```

## MCP server setup

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

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/yX8lcG79y1DoCMwM5/builds/U1TFVafG98kSuWGVN/openapi.json
