Skip to content

Brand logo API for developers

Get the logo behind any URL. Microlink walks the page markup, checks the BIMI record in DNS and falls back to the favicon — returning the best asset with its format, dimensions and brand palette.

The following examples show how to use the Microlink API with CLI, cURL, JavaScript, Python, Ruby, PHP & Golang, targeting 'https://www.cloudflare.com' URL with 'palette' & 'filter' API parameters:

CLI Microlink API example

microlink https://www.cloudflare.com&palette&filter=logo

cURL Microlink API example

curl -G "https://api.microlink.io" \
  -d "url=https://www.cloudflare.com" \
  -d "palette=true" \
  -d "filter=logo"

JavaScript Microlink API example

import mql from '@microlink/mql'

const { data } = await mql('https://www.cloudflare.com', {
  palette: true,
  filter: "logo"
})

Python Microlink API example

import requests

url = "https://api.microlink.io/"

querystring = {
    "url": "https://www.cloudflare.com",
    "palette": "true",
    "filter": "logo"
}

response = requests.get(url, params=querystring)

print(response.json())

Ruby Microlink API example

require 'uri'
require 'net/http'

base_url = "https://api.microlink.io/"

params = {
  url: "https://www.cloudflare.com",
  palette: "true",
  filter: "logo"
}

uri = URI(base_url)
uri.query = URI.encode_www_form(params)

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
response = http.request(request)

puts response.body

PHP Microlink API example

<?php

$baseUrl = "https://api.microlink.io/";

$params = [
    "url" => "https://www.cloudflare.com",
    "palette" => "true",
    "filter" => "logo"
];

$query = http_build_query($params);
$url = $baseUrl . '?' . $query;

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET"
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #: " . $err;
} else {
    echo $response;
}

Golang Microlink API example

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io"
)

func main() {
    baseURL := "https://api.microlink.io"

    u, err := url.Parse(baseURL)
    if err != nil {
        panic(err)
    }
    q := u.Query()
    q.Set("url", "https://www.cloudflare.com")
    q.Set("palette", "true")
    q.Set("filter", "logo")
    u.RawQuery = q.Encode()

    req, err := http.NewRequest("GET", u.String(), nil)
    if err != nil {
        panic(err)
    }

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(body))
}

Send the URL Get the brand back

2.0
secs
P95 cold response
99.9
%
SLA Guaranteed

More than a favicon.

Markup conventions, walked in order
og:logo, itemprop="logo" and the JSON-LD marks for brands, organizations and publishers are probed one by one — the first match wins.
The logo hiding in DNS
Domains publish an official square SVG as a BIMI record — the same logo your mailbox shows next to authenticated email, resolved without downloading the page.
Favicon as the safety net
Nearly every site serves a favicon, so when markup and DNS are empty the tab icon keeps coverage from dropping to zero.
Palette in the same call
palette adds the dominant colors plus background and foreground pairs picked for WCAG contrast — ready to theme UI with.

Start free, scale when ready

No signup, no API key, no credit card. The logo API is free to start — point it at a domain and get the brand back.

Free

Try the API in seconds. No card.
$0/month
25 requests per day

Pro

For production workloads.
$49/month
$1.07 per 1,000 requests
46,000 requests / month
Cancel anytime · No setup fees

Enterprise

Dedicated infra for high-volume.
Custom
Tailored to your volume

Built on open source,
trusted by developers

The Microlink logo pipeline is powered by battle-tested open source libraries used by thousands of developers worldwide. Our logo API is built on an open source foundation: explore the code, contribute, or run it yourself.

The web never standardized the logo. We standardized finding it.

One request checks every markup convention, the DNS record and the favicon via the metadata API, then returns the winner with its colors.

  • Three Detection Sources

    Page markup, the DNS BIMI record and the favicon are checked in order, so the best available asset wins and coverage never drops to zero.
  • Brand Palette Extraction

    Dominant colors arrive ordered by presence, plus background and foreground pairs picked for WCAG contrast — ready to theme UI with.
  • Complete Image Metadata

    Format, file size and exact dimensions ship with every logo, so layouts render without a probe request or a layout shift.
  • Hotlink-Ready Embedding

    One query parameter turns the response into the image itself, so the logo drops straight into an image tag with nothing to store.
  • Real Browser Detection

    Markup injected by JavaScript is still found, because detection happens after the page has fully rendered.
  • No HTML Required

    The DNS source resolves without touching the page, so a logo still comes back when a site is rate-limited or answers with a 403.
  • Edge Cached Responses

    Configurable TTL from 1 minute to 31 days. Cache hits are free, return instantly, and never boot a browser.
  • Enterprise-Grade Reliability

    Production-ready infrastructure with a 99.9% uptime SLA and guaranteed performance for business-critical brand pipelines.
  • Generous Free Tier

    Start immediately with 25 requests/day. No setup fees, no credit card, and pay-as-you-grow pricing that scales with your usage.
  • Three Detection Sources

    Page markup, the DNS BIMI record and the favicon are checked in order, so the best available asset wins and coverage never drops to zero.
  • Brand Palette Extraction

    Dominant colors arrive ordered by presence, plus background and foreground pairs picked for WCAG contrast — ready to theme UI with.
  • Complete Image Metadata

    Format, file size and exact dimensions ship with every logo, so layouts render without a probe request or a layout shift.
  • Hotlink-Ready Embedding

    One query parameter turns the response into the image itself, so the logo drops straight into an image tag with nothing to store.
  • Real Browser Detection

    Markup injected by JavaScript is still found, because detection happens after the page has fully rendered.
  • No HTML Required

    The DNS source resolves without touching the page, so a logo still comes back when a site is rate-limited or answers with a 403.
  • Edge Cached Responses

    Configurable TTL from 1 minute to 31 days. Cache hits are free, return instantly, and never boot a browser.
  • Enterprise-Grade Reliability

    Production-ready infrastructure with a 99.9% uptime SLA and guaranteed performance for business-critical brand pipelines.
  • Generous Free Tier

    Start immediately with 25 requests/day. No setup fees, no credit card, and pay-as-you-grow pricing that scales with your usage.

Start now

Get 25 requests/day with zero commitment. The logo API is free to use, with no account and no credit card. Send a URL and get the logo, its metadata and the brand palette back in one call.
No login needed
25 reqs/day free
No credit card

Product Information

Everything you need to know about the Microlink logo API.

Where does the logo come from?

The page markup is walked first — og:logo, itemprop="logo" and the structured data for brands, organizations and publishers. The first match wins.
When markup is empty, the BIMI record published in DNS is checked, and the favicon is the last resort — so a result comes back for nearly every site.
BIMI (Brand Indicators for Message Identification) lets a domain publish its official logo in DNS as a square SVG — the same logo Gmail and Apple Mail show next to authenticated email.
When a domain publishes one it is the best source available: intentional, script-free and square by design. Read how Microlink uses it.

How do I get the brand colors?

Enable the palette parameter and every detected image gains a palette array ordered from most dominant color to least.
You also get background_color, color and alternative_color — pairs picked for good WCAG contrast, so you can build accessible UI directly on the response.

Can I embed the logo directly in an image tag?

Yes. Add embed=logo.url to the query string and the API URL becomes the image itself.
Hotlink it from an <img> tag or a CSS background with no JSON parsing and nothing to store on your side.
Nearly every site serves a favicon, so the fallback keeps coverage close to universal. When not even a favicon exists the logo field is null — easy to detect so you can render your own placeholder, such as an initials avatar.

How fresh are the responses?

Responses are cached at the edge with a configurable TTL from 1 minute to 31 days. Cache hits are free and served instantly, and once the TTL expires the logo is fetched again, so a rebrand propagates without you doing anything.