Skip to content
Docs page

Reference

Data quality and coverage

How often each brand field is filled across the Brand Identity API index, measured by a script, beside the coverage Brandfetch publishes.

How often each field in the brand record has a value, across every brand in the Brand Identity API index, set beside the coverage Brandfetch publishes for its own index. Measured on October 12, 2026, over 446 brands.

Coverage

The fields Brandfetch reports, in the order it reports them. Each figure is the share of brands where the field has a value.

Coverage of Brand Identity API and Brandfetch, by field
FieldBrand Identity APIBrandfetch core sample
Logo, any themeBrandfetch: Logo (Any)79.6%79.6% without generated variants95.0%
Logo, dark artworkBrandfetch: Logo (Dark)75.8%73.8% without generated variants87.5%
IconBrandfetch: Icon (Any)88.3%87.2% without generated variants83.8%
Logo, light artworkBrandfetch: Logo (Light)61.2%14.6% without generated variants58.3%
SymbolBrandfetch: Symbols43.9%43.9% without generated variants33.4%
ColorsBrandfetch: Colors99.8%97.0%
Banner imageBrandfetch: Banner50.0%84.0%
DescriptionBrandfetch: Description100.0%444 of 446 written by a language model94.1%
Long descriptionBrandfetch: longDescription99.8%95.0%
Social linksBrandfetch: Social Links95.5%86.5%
CountryBrandfetch: Country80.5%77.1%
CityBrandfetch: City72.6%76.0%
Company kindBrandfetch: Kind87.0%71.0%
Founded yearBrandfetch: Founded year80.3%66.8%
Employee countBrandfetch: Employees Count38.8%9 of 173 estimated by a language model79.3%
ISINBrandfetch: ISINNot collected32.1%
Stock tickerBrandfetch: Stock35.9%31.7%

Brand Identity API: 446 brands, measured October 12, 2026. Brandfetch: its core sample of 542 brands, as published on Brandfetch, Coverage and quality, retrieved October 2026.

Two samples, not one

The columns measure different brands. Ours are popular domains we chose to index; Brandfetch describes its core sample as built from existing financial-industry customer datasets, 30 to 40% public companies and 60 to 70% private startups and SMBs. Neither column says how either API does on your domains. Measure those before you choose.

Fields Brandfetch does not report

Coverage of fields only Brand Identity API reports
FieldCounts whenBrand Identity API
Any logo, symbol or iconAt least one logo, symbol or icon, in any theme.99.3%
An SVG of any logo, symbol or iconAt least one of those as an SVG file.85.9%
FontsAt least one font named in the site's CSS. A site that names only system fonts has none.69.5%
IndustriesAt least one industry from our taxonomy.99.1%
Linked to a Wikidata itemThe record is linked to a Wikidata item, the source of most company facts.84.3%
At least one generated variantAt least one variant we drew ourselves. See Generated variants.60.8%

Brandfetch's Logo (Any) is matched to our logo-type logos above, because it lists icons and symbols on rows of their own. Read as any logo, symbol or icon, our figure is 99.3%.

Methodology

Every brand with status ready or partial in the Brand Identity API index on 2026-10-12: 430 from our seed list of popular domains and 16 looked up during development. 3 rows that failed to crawl or are still pending are not counted.

  • Popular brands are the easy case. The seed list is well-known companies, most with large websites and a Wikidata item. Expect lower figures on a random sample of the web.
  • Presence, not correctness. A field counts when the record has a value. Nobody checked each value by hand for these figures, and some are wrong: see Known gaps.
  • Failed rows are left out. Counted as misses, the 3 rows left out would lower every figure by at most 0.7 percentage points.
  • Fields are matched by name. Brandfetch's page does not define its fields, so each of its rows is matched to ours by its name, shown under each field in the table. Ours are defined below.
How each compared field is counted
FieldCounts when
Logo, any themeAn entry in logos with type logo, in any theme or none.
Logo, dark artworkType logo with theme dark: dark artwork, for light backgrounds.
Logo, light artworkType logo with theme light: light artwork, for dark backgrounds.
IconType icon: a square mark, like an app icon.
SymbolType symbol: the mark without words.
Colorscolors is not empty.
Banner imageimages has an entry with type banner.
Descriptiondescription is not empty.
Long descriptionlongDescription is not empty.
Social linkslinks has an entry other than a Wikipedia article.
Countrycompany.location.countryCode or country is set.
Citycompany.location.city is set.
Company kindcompany.kind is set.
Founded yearcompany.foundedYear is set.
Employee countcompany.employees is set. It is a bucket's floor, like 1001, not a headcount.
Stock tickercompany.ticker is set.

Where values come from

  • Logos come from the brand's own website, its web app manifest and icon files, and Wikimedia Commons. 49.1% of brands have a file from Commons, tagged wikimedia.
  • Colors come from the logos and from what the homepage paints: its CSS, applied the way a browser applies it, in the exact values the site declares. A color found only in an icon file or a meta tag is kept when the page or the logo confirms it. Fonts come from the site's CSS, and social links from the site and Wikidata.
  • Google's favicon service is the last resort for an icon, when the site's own are missing or too small. 14.6% of brands have a file copied from it, tagged favicon-service.
  • Descriptions are written by a language model from the site's own text and Wikidata: 99.6% of brands have one written that way.
  • Founded year, country and city come from Wikidata, then from the site's structured data. Tickers come from Wikidata only.
  • Employee counts come from Wikidata, then from the site's structured data. Where both are silent, a language model's estimate is used only when it says it is sure (0.8 or higher): 9 of the 173 counts are estimates.
  • Company kind comes from Wikidata and the site's structured data, and otherwise from the language model's reading of the site. Industries are assigned by the language model against our taxonomy, with a keyword match when it gives none.

Generated variants

Some logo files are drawn by us rather than downloaded. Each one carries generated in logos[].tags:

  • The other tone of single-color artwork: a black wordmark recolored white, or the reverse.
  • A light version of two-tone artwork: black lettering beside colored marks turns white, and the colors stay.
  • An icon padded to a square from the symbol, when the site has no icon file.

The coverage table counts them, because the API returns them as usable files. The figure under each logo row leaves them out. The gap is widest for light logos: 61.2% with generated variants, 14.6% without. To use only the files a brand published, filter them out:

javascript
const published = brand.logos.filter((logo) => !logo.tags.includes("generated"));

Reproduce the numbers

The figures on this page come from one script in the Brand Identity API repository. It reads every ready and partial brand from the database, applies the definitions above and writes the snapshot this page renders:

bash
bun run brands:coverage --date=2026-10-12

The definitions are in src/lib/brands/coverage.ts, the output in src/lib/brands/coverage-snapshot.json. Brandfetch's figures are copied by hand from its page into src/lib/brands/brandfetch-coverage.ts.

The comparison that matters is on your own domains. Look them up through the Brand API and count the same fields. Each lookup that finds a brand costs one credit, and every account starts with 50 free.

javascript
const domains = ["stripe.com", "linear.app", "figma.com"];
const found = { logo: 0, lightLogo: 0, icon: 0, employees: 0 };

for (const domain of domains) {
  const res = await fetch(`https://brandidentityapi.com/v1/brands/${domain}`, {
    headers: { Authorization: `Bearer ${process.env.BRAND_IDENTITY_API_KEY}` },
  });
  if (!res.ok) continue; // a miss
  const brand = await res.json();
  const logos = brand.logos.filter((logo) => !logo.tags.includes("generated"));
  if (logos.some((logo) => logo.type === "logo")) found.logo++;
  if (logos.some((logo) => logo.type === "logo" && logo.theme === "light")) found.lightLogo++;
  if (logos.some((logo) => logo.type === "icon")) found.icon++;
  if (brand.company?.employees != null) found.employees++;
}

console.log(found, "of", domains.length);

Known gaps

  • Below Brandfetch's published figures: Logo, any theme (79.6% against 95.0%); Logo, dark artwork (75.8% against 87.5%); Banner image (50.0% against 84.0%); City (72.6% against 76.0%); Employee count (38.8% against 79.3%).
  • Employee counts lean on Wikidata, whose headcounts are sparse, and the model fills a gap only when it is sure.
  • Light logos are mostly generated. 14.6% of brands have a light logo file of their own. Brandfetch's page does not say whether its light logos include drawn variants.
  • Logo-type logos. Where we found only an icon or a symbol, the brand has no logo-type logo, so 79.6% have one against 99.3% with any mark.
  • Some short wordmarks are typed as symbols. Two or three letters with no separate mark can be filed as a symbol instead of a logo, and a few lockups too.
  • Wikidata's errors come through. Facts are stored as Wikidata states them, stale or wrong values included. Where it states several founding years, we take the earliest.
  • Rate limits can drop a fact. When Wikidata rate-limits a lookup, a listed company can miss its ticker until the next refresh.
  • The long tail is unmeasured. Brandfetch also publishes a sample of 397 micro-businesses randomly selected from Google Maps across a diverse set of cities and regions. We have no comparable sample yet. Expect lower figures from us too on small sites with thin pages and no Wikidata item.
  • ISIN is not collected.