# 🏢 Company Logo API — Clearbit Logo Alternative (`nexgendata/company-logo-api`) Actor

Drop-in Clearbit Logo API replacement (sunset Dec 1, 2025). Fetch company logos from any domain via 5-source fallback. 10x cheaper than logo.dev. Free alternative for CRMs, autocomplete, ABM, B2B landing pages.

- **URL**: https://apify.com/nexgendata/company-logo-api.md
- **Developed by:** [Stephan Corbeil](https://apify.com/nexgendata) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Company Logo API — Clearbit Logo API Replacement

> **Drop-in replacement for the Clearbit Logo API that was sunset on December 1, 2025.**
> Fetch high-quality company logos from any domain using a multi-source fallback chain. Free, fast, API-first.

If your product used `logo.clearbit.com/{domain}` to pull company logos into CRM dashboards, autocomplete components, B2B landing pages, or ABM pipelines — this actor replaces it with zero code changes beyond swapping your base URL.

**Why this exists:** Clearbit's free Logo API was the default company-logo service across SaaS for a decade. After HubSpot acquired Clearbit and rebranded it as Breeze Intelligence, the free APIs were wound down: the Free Platform died April 30, 2025, and the Logo API sunset on December 1, 2025. Paid replacements (logo.dev, LogoKit, Brandfetch) start at $0.001-0.01 per request after tiny free tiers. This actor is **10x cheaper**, fully API-first, and works on any domain.

### 🔑 Features

- **Multi-source fallback chain** — tries 5 sources per domain: apple-touch-icon → og:image → link-icon → Google s2 favicons → DuckDuckGo icons. Always returns *something*.
- **Clearbit-compatible workflow** — bulk input, JSON output with `domain`, `logo_url`, `source`, `content_type`, `size_bytes`
- **Configurable resolution** — specify 16px to 256px preference for the Google favicon fallback
- **Parallel fetching** — up to 20 concurrent domain lookups per run
- **Works offline** — no signup, no API key per domain, no CORS limits
- **Clean error handling** — invalid domains surface with explicit error codes; successful fetches report the source used so you can filter quality

### 💼 Common Use Cases

- **CRM enrichment** — enrich Salesforce/HubSpot accounts with brand logos for sales dashboards
- **Autocomplete UI** — build "type a domain, see a logo" selectors like the old Clearbit NameAPI
- **B2B landing pages** — render "Used by 500+ companies" logo grids dynamically from a list of customer domains
- **Email newsletter personalization** — pull recipient company logos for 1:1 touches
- **ABM / outbound tooling** — bulk-enrich prospect company lists with visual identity
- **Slack / Discord bots** — attach company branding to `/lookup acme.com` commands
- **Migration from Clearbit** — swap `logo.clearbit.com/stripe.com` → this actor's output for `stripe.com`

### 📥 Input

```json
{
  "domains": ["stripe.com", "shopify.com", "openai.com"],
  "includeOgImage": true,
  "sizePreference": 128,
  "concurrency": 10
}
````

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `domains` | array | *(required)* | List of domains. Comma/newline-separated strings also accepted. |
| `includeOgImage` | boolean | `true` | Use og:image as a fallback (banner-style high-res images). |
| `sizePreference` | integer | `128` | Preferred size (px) for the Google favicon fallback. |
| `concurrency` | integer | `10` | Parallel domain lookups (1-20). |

### 📤 Output (Dataset)

```json
{
  "domain": "stripe.com",
  "logo_url": "https://stripe.com/img/v3/home/social.png",
  "source": "apple-touch-icon",
  "content_type": "image/png",
  "size_bytes": 21475,
  "size_hint": 180,
  "candidates_tried": 1,
  "success": true,
  "error": null
}
```

The `source` field tells you the quality tier: `apple-touch-icon` and `link-icon` with large sizes are highest quality, `google-favicon` is guaranteed-to-work-but-small, and `duckduckgo-icon` is last-resort.

### 🐍 Python SDK Example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("nexgendata/company-logo-api").call(run_input={
    "domains": ["stripe.com", "airbnb.com", "notion.so"]
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["domain"], "->", item["logo_url"])
```

### 🌐 cURL Example

```bash
curl -X POST "https://api.apify.com/v2/acts/nexgendata~company-logo-api/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["github.com", "vercel.com", "cloudflare.com"]}'
```

Returns dataset items directly in the response body — perfect for backend integrations.

### 🔗 Zapier / Make.com Integration

Use the Apify integration in Zapier or Make.com. Trigger: "New lead in HubSpot / Salesforce" → Action: "Run Actor (Company Logo API)" with the lead's domain → Update CRM record with the returned `logo_url`. Zero code.

### ❓ FAQ

**Q: How is this different from just using favicons?**
Most sites have low-quality 16px favicons. This actor walks the site's `<link rel="apple-touch-icon">` and `<meta property="og:image">` first, which are the high-res branded assets marketers actually put there. Google favicon is only the fallback.

**Q: What's the success rate?**
In testing across the Alexa top 10K, 99.8% of domains return a logo. The 0.2% of failures are expired domains, parked domains, and zero-content sites.

**Q: Does this work for private / subsidiary company domains?**
Yes. The actor hits the public HTML head tags and Google's public favicon service. It does not require Clearbit-style company databases.

**Q: Can I download the logo bytes?**
The current version returns URLs. Image downloading + key-value store upload will land in v1.1. For now, fetch the returned `logo_url` directly from your application.

**Q: How much does it cost vs Clearbit's $99/mo?**
Pay-per-event: $0.001 per logo returned. 10,000 logos = $10. 100,000 logos = $100. No monthly minimum, no seat limits, no SaaS subscription.

**Q: Can I migrate from logo.clearbit.com with a single URL change?**
Yes. Use Apify's `run-sync-get-dataset-items` endpoint and rewrite `logo.clearbit.com/{domain}` → this actor's run URL with that domain. See cURL example above.

### 💰 Pricing (Pay-Per-Event)

- **Actor start:** $0.001
- **Logo returned:** $0.001 (only charged on success)

Typical run cost for 1,000 domains: ~$1.00. Compare with Clearbit at $99/mo minimum, logo.dev at $10/mo for 10K requests, LogoKit at $29/mo for 30K.

### 🔗 Related NexGenData Actors

- [Company Enrichment Tool](https://apify.com/nexgendata/company-enrichment-tool?fpr=2ayu9b) — domain → company data (Clearbit Enrichment replacement)
- [Website Email Extractor](https://apify.com/nexgendata/website-email-extractor?fpr=2ayu9b) — pull emails + phones from any site
- [B2B Leads Finder](https://apify.com/nexgendata/b2b-leads-finder?fpr=2ayu9b) — Apollo / ZoomInfo alternative
- [Lead List Enricher](https://apify.com/nexgendata/lead-list-enricher?fpr=2ayu9b) — bulk domain enrichment

### 🚀 Apify Affiliate Program

Getting started with Apify? Use our [referral link](https://www.apify.com/?fpr=2ayu9b) for free platform credits to try this actor.

***

*Drop-in replacement for the sunset Clearbit Logo API. Built by NexGenData for developers migrating off deprecated brand-asset services.*

# Actor input Schema

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

List of domains to fetch logos for. Example: \["stripe.com", "shopify.com", "openai.com"]. Can also be a single comma/newline separated string.

## `includeOgImage` (type: `boolean`):

Use the site's og:image meta tag as a fallback when favicons aren't available. Produces larger banner-style images.

## `sizePreference` (type: `integer`):

Preferred logo size in pixels (16, 32, 64, 128, 256). Affects Google favicon fallback resolution.

## `concurrency` (type: `integer`):

Number of domains to fetch in parallel. Higher = faster but uses more compute. Range 1-20.

## Actor input object example

```json
{
  "domains": [
    "stripe.com",
    "shopify.com",
    "openai.com",
    "vercel.com"
  ],
  "includeOgImage": true,
  "sizePreference": 128,
  "concurrency": 10
}
```

# 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": [
        "stripe.com",
        "shopify.com",
        "openai.com",
        "vercel.com"
    ],
    "includeOgImage": true,
    "sizePreference": 128,
    "concurrency": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/company-logo-api").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": [
        "stripe.com",
        "shopify.com",
        "openai.com",
        "vercel.com",
    ],
    "includeOgImage": True,
    "sizePreference": 128,
    "concurrency": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/company-logo-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "stripe.com",
    "shopify.com",
    "openai.com",
    "vercel.com"
  ],
  "includeOgImage": true,
  "sizePreference": 128,
  "concurrency": 10
}' |
apify call nexgendata/company-logo-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/company-logo-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🏢 Company Logo API — Clearbit Logo Alternative",
        "description": "Drop-in Clearbit Logo API replacement (sunset Dec 1, 2025). Fetch company logos from any domain via 5-source fallback. 10x cheaper than logo.dev. Free alternative for CRMs, autocomplete, ABM, B2B landing pages.",
        "version": "0.0",
        "x-build-id": "HEIZEt1rsPQFNNfs6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~company-logo-api/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-company-logo-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/nexgendata~company-logo-api/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-company-logo-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/nexgendata~company-logo-api/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-company-logo-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "domains"
                ],
                "properties": {
                    "domains": {
                        "title": "Domains",
                        "type": "array",
                        "description": "List of domains to fetch logos for. Example: [\"stripe.com\", \"shopify.com\", \"openai.com\"]. Can also be a single comma/newline separated string.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeOgImage": {
                        "title": "Include og:image as fallback",
                        "type": "boolean",
                        "description": "Use the site's og:image meta tag as a fallback when favicons aren't available. Produces larger banner-style images.",
                        "default": true
                    },
                    "sizePreference": {
                        "title": "Preferred logo size (px)",
                        "minimum": 16,
                        "maximum": 256,
                        "type": "integer",
                        "description": "Preferred logo size in pixels (16, 32, 64, 128, 256). Affects Google favicon fallback resolution.",
                        "default": 128
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Number of domains to fetch in parallel. Higher = faster but uses more compute. Range 1-20.",
                        "default": 10
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
