DEV Community

Lucy Linder
Lucy Linder

Posted on

Get favicons from any domain using a hidden google API

Did you know ?

Google offers a secret URL that can automatically pull the favicon image of any domain. Cherries on the cake, we can ask for different sizes and the images returned are in PNG format (not ICO), meaning they will render correctly in all browsers using the <img> tag.

The API works using a simple GET:

https://www.google.com/s2/favicons?domain=${domain}&sz=${size}
Enter fullscreen mode Exit fullscreen mode

The query parameters are:

  • domain: mandatory, the domain you are interested in,
  • sz: optional, a size hint such as 256.

In case the right size is not found, it will return the default one, usually 16x16.


https://www.google.com/s2/favicons?domain=dev.to&sz=128
128x128

https://www.google.com/s2/favicons?domain=dev.to&sz=512 (nothing found for 512x512, so returns a 16x16 PNG)
16x16 fallback

https://www.google.com/s2/favicons?domain=stackoverflow.com&sz=128 (yep, sometimes the quality is far from optimal)
stackoverflow 128x128

Discussion (4)

Collapse
mtimofiiv profile image
fiiv

Nice writeup! Privacy-friendly search engine DuckDuckGo also has one similar to the Google one:

https://icons.duckduckgo.com/ip3/dev.to.ico
Enter fullscreen mode Exit fullscreen mode

Also there's one I made called Icon Horse that has some additional features:

https://icon.horse/icon/dev.to
Enter fullscreen mode Exit fullscreen mode
Collapse
derlin profile image
Lucy Linder Author

Wasn't aware of those ones, nice to know thanks !
I would just state that Icon Horse is not free (but still a very nice tool).

Do you know if duckduckgo supports parameters, such as the size hint for example ?

Collapse
mtimofiiv profile image
fiiv

To my knowledge DDG doesn’t have various customisation params available.

Icon Horse is free, but premium features cost money.

Collapse
derlin profile image
Lucy Linder Author

Here is yet another service: favicongrabber.com

The call looks like:

http://favicongrabber.com/api/grab/dev.to
Enter fullscreen mode Exit fullscreen mode

The response is a JSON with all the available icons (use ?pretty=true for nice json formatting):

{
  "domain": "dev.to",
  "icons": [
    {
      "sizes": "192x192",
      "src": "https://res.cloudinary.com/practicaldev/image/fetch/s--t7tVouP9--/c_limit,f_png,fl_progressive,q_80,w_192/https:/practicaldev-herokuapp-com.freetls.fastly.net/assets/devlogo-pwa-512.png"
    },
    ...
}
Enter fullscreen mode Exit fullscreen mode

However, I got some gateway timeouts and trying favicongrabber.com/api/grab/stacko... currently returns:

{"error":"General API error."}
Enter fullscreen mode Exit fullscreen mode