Skip to content

discoverFavicons

Discovers favicon URLs from a webpage or feed.

Signature

typescript
function discoverFavicons(
  input: DiscoverInput,
  options?: DiscoverOptions<FaviconResult>,
): Promise<Array<DiscoverResult<FaviconResult>>>

Parameters

input

The URL to discover favicons from. Can be a string or an object:

typescript
// String - URL to fetch and scan
discoverFavicons('https://example.com', options)

// Object - provide existing content/headers
discoverFavicons({
  url: 'https://example.com',
  content: htmlContent,
  headers: responseHeaders,
}, options)

options

All options are optional. When not provided, sensible defaults are used.

PropertyTypeDefaultDescription
methodsDiscoverMethodsConfig['platform', 'feed', 'html', 'headers', 'guess']Which methods to use
fetchFnDiscoverFetchFnnative fetchCustom fetch function
extractFnDiscoverExtractFnstatus checkCustom extraction function
resolveUrlFnDiscoverResolveUrlFnCustom URL resolution function
stopOnFirstMethodbooleanfalseStop URI collection after first method with results
stopOnFirstResultbooleanfalseStop after first valid favicon
concurrencynumber3Max parallel validations
includeInvalidbooleanfalseInclude invalid results
onProgressDiscoverOnProgressFnProgress callback

Return Value

Returns a promise that resolves to an array of results:

typescript
// Valid result
{
  url: 'https://example.com/favicon.ico',
  isValid: true,
  method: 'html',
}

// Invalid result (when includeInvalid: true)
{
  url: 'https://example.com/missing.png',
  isValid: false,
  method: 'guess',
  error: Error,
}

Examples

Basic Usage

typescript
import { discoverFavicons } from 'feedscout'

// Simple usage - all methods enabled by default
const favicons = await discoverFavicons('https://example.com')

// Or specify which methods to use
const favicons = await discoverFavicons('https://example.com', {
  methods: ['html', 'headers', 'guess'],
})

With Custom Options

typescript
const favicons = await discoverFavicons('https://example.com', {
  methods: {
    guess: {
      uris: ['/favicon.ico', '/icon.svg'],
    },
  },
  stopOnFirstResult: true,
})