Methodology
Technical details
The questions
We took the first study’s 5,983 software brands in 196 categories and asked about them in three ways:
- Best tools for X: “What are the best tools for {category}?”, once per category (196).
- Alternatives to X: “What are the best alternatives to {product} for {category}?” (11,525).
- X vs Y: “How do {product} and {competitor} compare for {category}?” (6,363).
The first study’s questions about a single brand are left out, because they don’t ask a platform to choose between tools.
Asking the platforms
We reused the first study’s answers, collected over two weeks in August 2026, so every platform answered the same questions in the same fortnight.
- Google search and AI Overviews come from Google’s results page, read through DataForSEO: the top ten results, plus the AI Overview on the 17,522 questions that showed one.
- ChatGPT and Gemini were asked in their apps, also through DataForSEO, so the answers are the ones a user sees.
- Claude (Haiku 4.5) and Perplexity (Sonar) were asked through their APIs with web search on. Claude decides for itself when to search, and didn’t on about one question in five.
Two parts were asked again later. ChatGPT’s searches for X vs Y questions were lost in August, with only 181 of 6,363 kept, so we asked every X vs Y question again in October 2026, and 6,361 came back with their searches. Perplexity’s follow-up questions weren’t requested in August, so we asked 2,000 of the questions again in September, a 10% sample.
Counting citations
Every chart counts citations: a page cited in one answer. If an answer cites the same page twice, it counts once. Addresses are cleaned up first and sites are grouped by their main domain, so learn.g2.com counts as g2.com.
For three platforms we had to decide what counts as cited:
- For Perplexity, only the pages its answer actually marks, about 9 per answer, not the 20 or so its searches found.
- For ChatGPT, the product links its app adds to brand names are left out. They point to homepages, aren’t part of the answer, and were 14% of its pages.
- For Google, links back to Google itself, such as Shopping panels, are left out.
That leaves 686,749 citations of 311,766 different pages.
Reading the pages
We downloaded 226,844 of the cited pages once, in September 2026, without running JavaScript, and 181,352 of them had text we could read. The other 84,922 sit on review sites, forums, YouTube and social networks, which mostly block crawlers. Like the 45,492 pages that came back empty, they were labelled from their address instead. That leaves 6,365 pages whose address says nothing, and they have no label.
Labelling
Each readable page was labelled by TypeSafe’s JEV classifier, which reads the page’s address, title and cleaned-up text and answers a fixed set of questions about it. Two apply to every page, who published it and what kind of page it is, so a listicle on G2 and a listicle on a vendor’s blog stay apart. List pages also get where the publisher’s own product sits and the patterns in “What self-promotional listicles do”. The same classifier labelled the AI answers and ChatGPT’s searches, while simple things like counts, years, tables and “site:” are matched in the text.
Before the full run we tested the questions on 600 texts against a stronger model, OpenAI’s gpt-6-luna, reworded or dropped the weak ones, and read the disagreements by hand. On pages the two agree on 91% of publishers, 92% of page types, 96% of whether the publisher sells in the category and 86% of where its own product sits. Where the classifier is unsure, as with a page’s tone, the label is shown as unclear.
Rules for the charts
- A page is self-promotional when it is a software vendor’s listicle or comparison, in a category the vendor sells in, that includes the vendor’s own product.
- Pages we couldn’t read count as not self-promotional, so every self-promotional share is a floor.
- Shares count citations, so a page cited in ten answers counts ten times.
- Charts about what answers cite leave out answers that cite nothing: 22% of Claude’s and 29% of Gemini’s.
- The answer patterns leave out “it depends”, which the classifier was too often unsure about, and 2,234 AI Overviews captured without text.
Disclaimers
A snapshot of August 2026. Platforms change where they read faster than what they recommend, so the results hold as shares of kinds of pages and sites rather than as which page wins.
The same questions asked again weeks after the August collection: ChatGPT on 500 “Alternatives to X” questions in October, Perplexity on 2,000 questions in September. Only 28% of the pages Perplexity listed in September were in its August list for the same question.
Results by collection wave. The waves are not pooled.
ChatGPT searches with each feature
Uses “site:”
Says “official”
Has a year
Says “best” or “top”
Searches and sources per question
ChatGPT searches per question
Perplexity pages listed per answer
500 ChatGPT questions and 2,000 Perplexity questions, asked twice.
September 2026: 28% of Perplexity sources were also listed in August.
One answer per question and platform. Patterns across 18,084 questions hold, but any single answer could read differently on another day.
The follow-up questions rest on the September sample, which has only 18 Best tools for X questions, so that tab is indicative.
Tech stack
Every number here is computed by code from the raw responses we stored, so each one can be traced back to what a platform returned.
- Collecting. DataForSEO supplied Google’s results pages, the ChatGPT and Gemini answers, the page downloads and the site ranks. Claude was asked through Anthropic’s Message Batches API and Perplexity through its Sonar API.
- Labelling. TypeSafe’s JEV model, pinned to one version, labelled every page, answer and search. OpenAI’s gpt-6-luna, run through the Codex CLI, gave the reference labels it was tested against.
- Storing. Every raw response is kept as it was returned, versioned with DVC in Asergo’s object storage. The parsed tables are Parquet files, joined in one DuckDB database.
- Analysing. The analysis is written in Python, with one script per question and one shared set of counting rules, so the written report and this dashboard count the same way.
- Credentials. API keys are encrypted with SOPS and age, and no paid run starts without a spending cap.
Data
Under every chart, its rows can be downloaded: one row per page, answer or search it counts, so any number can be checked and taken further. The files below are the complete dataset, and the question text joins them. Each is a CSV that opens in Excel or Google Sheets, where a blank cell means not known or not applicable.
- 18,084 rows
- 5,983 rows
- 108,504 rows
- 87,624 rows
- 686,749 rows
- 311,766 rows
- 43,034 rows
- 75,875 rows
- 353,376 rows
- 9,980 rows
- 686,749 rows
- 310,950 rows
- 137,105 rows
- 583,010 rows
- 192,754 rows
- 73,393 rows
Guides
- files.csv
Every data file: what one row is, and how many rows it has.
- charts.csv
Every chart: its file and how it counts.
- columns.csv
Every column: what it means and the files that have it.

