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.
| Field | Brand Identity API | Brandfetch core sample |
|---|---|---|
| Logo, any themeBrandfetch: Logo (Any) | 79.6%79.6% without generated variants | 95.0% |
| Logo, dark artworkBrandfetch: Logo (Dark) | 75.8%73.8% without generated variants | 87.5% |
| IconBrandfetch: Icon (Any) | 88.3%87.2% without generated variants | 83.8% |
| Logo, light artworkBrandfetch: Logo (Light) | 61.2%14.6% without generated variants | 58.3% |
| SymbolBrandfetch: Symbols | 43.9%43.9% without generated variants | 33.4% |
| ColorsBrandfetch: Colors | 99.8% | 97.0% |
| Banner imageBrandfetch: Banner | 50.0% | 84.0% |
| DescriptionBrandfetch: Description | 100.0%444 of 446 written by a language model | 94.1% |
| Long descriptionBrandfetch: longDescription | 99.8% | 95.0% |
| Social linksBrandfetch: Social Links | 95.5% | 86.5% |
| CountryBrandfetch: Country | 80.5% | 77.1% |
| CityBrandfetch: City | 72.6% | 76.0% |
| Company kindBrandfetch: Kind | 87.0% | 71.0% |
| Founded yearBrandfetch: Founded year | 80.3% | 66.8% |
| Employee countBrandfetch: Employees Count | 38.8%9 of 173 estimated by a language model | 79.3% |
| ISINBrandfetch: ISIN | Not collected | 32.1% |
| Stock tickerBrandfetch: Stock | 35.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.
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
| Field | Counts when | Brand Identity API |
|---|---|---|
| Any logo, symbol or icon | At least one logo, symbol or icon, in any theme. | 99.3% |
| An SVG of any logo, symbol or icon | At least one of those as an SVG file. | 85.9% |
| Fonts | At least one font named in the site's CSS. A site that names only system fonts has none. | 69.5% |
| Industries | At least one industry from our taxonomy. | 99.1% |
| Linked to a Wikidata item | The record is linked to a Wikidata item, the source of most company facts. | 84.3% |
| At least one generated variant | At 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.
| Field | Counts when |
|---|---|
| Logo, any theme | An entry in logos with type logo, in any theme or none. |
| Logo, dark artwork | Type logo with theme dark: dark artwork, for light backgrounds. |
| Logo, light artwork | Type logo with theme light: light artwork, for dark backgrounds. |
| Icon | Type icon: a square mark, like an app icon. |
| Symbol | Type symbol: the mark without words. |
| Colors | colors is not empty. |
| Banner image | images has an entry with type banner. |
| Description | description is not empty. |
| Long description | longDescription is not empty. |
| Social links | links has an entry other than a Wikipedia article. |
| Country | company.location.countryCode or country is set. |
| City | company.location.city is set. |
| Company kind | company.kind is set. |
| Founded year | company.foundedYear is set. |
| Employee count | company.employees is set. It is a bucket's floor, like 1001, not a headcount. |
| Stock ticker | company.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:
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:
bun run brands:coverage --date=2026-10-12The 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.
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.