Method
How the sample is drawn, how a site is fetched, how a tool is counted, and what is left out.
Crawl: 2026-09-03
1. Sample
30,000 company domains were drawn from Crunchbase company records: companies with 11 to 1,000 employees, registered in United States, United Kingdom, Canada, Ireland, Australia, Germany, Netherlands, France, Sweden, Norway, Denmark, Finland and Iceland. No industry holds more than 8% of the sample. Each company contributes one domain, its registered website with the www prefix removed.
2. Fetch
Each domain gets one request to its homepage over HTTPS, with HTTP as the fallback, through a rotating proxy with browser headers. Redirects are followed, the timeout is 12 seconds and the body is capped at 1.5 MB. A response that is not a 200 with an HTML body is recorded as a failure with its reason and is not counted.
3. Detection
The HTML, response headers and cookies of each fetched page are matched against 275 fingerprints: script hosts, generator meta tags, response headers, cookie names and asset paths on the site's own host. One match records one install. A fingerprint says the site loads a tool's code; it does not say the company pays for it.
4. Join and count
Every fetched domain is joined back to its Crunchbase company record, which carries the industry, country and employee band used for the cuts. Installs are rolled up per tool, then split by industry, employee band and country. A cell is published once its base reaches 20 crawled sites; below that it reads n/a. Findings on the stats pages compare only segments with at least 150 crawled sites.
Attrition funnel
| Step | Count | Share of attempted | Note |
|---|---|---|---|
| Domains selected for the sample | 30,000 | 100.0% | Company domains drawn from the source universe. |
| Homepage fetched | 8,948 | 29.8% | A response was returned for the request. |
| Fetch succeeded | 8,130 | 27.1% | A 200 response with a readable HTML body. |
| Firmographics joined | 8,130 | 27.1% | Industry, country and employee band all present. The base every share on this site is divided by. |
Named failures
| Reason | Count | Share of attempted |
|---|---|---|
| HTTP 502 | 249 | 2.8% |
| HTTP 403 | 243 | 2.7% |
| Connection timeout | 205 | 2.3% |
| SSL error | 55 | 0.6% |
| HTTP 429 (rate limited) | 20 | 0.2% |
| HTTP 503 | 11 | 0.1% |
| HTTP 500 | 9 | 0.1% |
| Connect | 5 | 0.1% |
| Proxy error | 4 | 0.0% |
| HTTP 401 | 4 | 0.0% |
| HTTP 526 | 3 | 0.0% |
| HTTP 530 | 2 | 0.0% |
| HTTP 521 | 2 | 0.0% |
| HTTP 525 | 2 | 0.0% |
| Too many redirects | 2 | 0.0% |
| HTTP 523 | 1 | 0.0% |
| Http520 | 1 | 0.0% |
Detection method by signal type
- Script tag: a script tag on the homepage
- Generator meta tag: a generator meta tag or asset path
- Response header: a response header or CDN hostname
- Form endpoint: a tracking script or form endpoint
- Payment iframe host: a checkout script or payment iframe host
Out of scope
These tools are deliberately excluded from the crawl: they run behind a login or inside a data platform and leave no fingerprint on a public homepage, so a homepage crawl cannot count them.
- Salesforce: CRM used inside a login, no public homepage fingerprint
- Workday: HR and finance software, no public homepage fingerprint
- Snowflake: data warehouse, no public homepage fingerprint
- Gong: revenue intelligence, no public homepage fingerprint