AnswerLine Start free

, GEO · Fundamentals

Reddit in AI citations: why threads get cited

Reddit threads appear often in the sources of AI answers to recommendation and comparison prompts. How often, on which engine and in which market depends on your category, and a fixed prompt set run through the API measures it directly. Below: why threads get cited, the measurement, and how to act on the result.

What counts as a Reddit citation

A Reddit citation is a reddit.com URL among the sources an AI answer used: a Reddit URL in result.sources[] and, on engines with inline chips, in result.citationPills[].

A Reddit mention is different: the answer’s prose says “users on Reddit recommend…” without linking a thread. That shows up only in result.text, and it is weaker evidence of retrieval. Keep the two apart, as the mentions vs citations post explains for brands.

Why threads end up in answers

Grounded AI answers are built in two steps: the engine runs web searches, then the model writes the answer and cites pages from what came back. The full mechanics are in how AI engines choose citations. Three properties of discussion threads suit that process.

  1. They are retrieved for experience queries. Engines rewrite a prompt into several searches, the query fan-out. Prompts such as “best CRM for a five-person agency” tend to produce searches phrased like a person asking for experience, which is the kind of query forum threads answer. ChatGPT’s result.searchQueries (with include.searchQueries) comes back empty on the answers served today, so the cited sources[] are the evidence to measure.
  2. They contain quotable first-person claims. “We moved from X to Y and onboarding got shorter” is a specific, attributable statement. A model building an answer from retrieved text has to support its claims with something, and threads supply many small claims per page.
  3. They compare options critically. A thread lists the drawbacks of several products side by side, content a vendor page rarely publishes about itself.

Google has also made forum content more prominent. In February 2024 Google announced an expanded partnership giving it access to Reddit’s Data API, and said it is working to make Reddit content easier to reach across its products (Google blog, checked 2026-09-17). Google Search Central documents DiscussionForumPosting structured data as the way forum sites help Google identify first-hand discussion content for its discussions and forums search feature (Search Central, checked 2026-09-17). On the results page this surfaces as the “What people are saying” module, returned as result.peopleAreSaying[] on POST /v1/monitor/google.

None of this proves Reddit dominates your category. In some categories review sites, YouTube, publishers or documentation absorb the citations instead. So measure it for your prompts.

Measure Reddit’s share for your prompts

Step 1: fix the prompt set

Use 30 or more prompts from your real buyer questions, grouped by intent (category, comparison, problem, branded). Designing a prompt set covers sourcing and clustering. Keep the wording fixed: a changed prompt is a different sample.

Step 2: choose engines and markets

Pick the engines your buyers use and the country values you sell in. Reddit’s share can differ by market, and an English-language thread may not be retrieved for a prompt in another language (see multilingual AI answers). Add Google Search for the same queries so you can compare what classic search ranks with what the AI engines cite.

Step 3: submit the runs as a batch

Per run, as tasks at the Starter tier: ChatGPT $0.0006, Gemini $0.0006, from the billing docs. Thirty prompts on both in one market is 30 × $0.0012 = $0.036. Every new account gets 100 free requests on any engine, enough for 50 prompts on both.

import os, datetime, requests

API = "https://api.answerline.dev"
HEADERS = {"Authorization": f"Bearer {os.environ['ANSWERLINE_API_KEY']}"}
PROMPTS = ["best crm for a small agency", "hubspot vs pipedrive for startups"]  # your fixed set
DAY = datetime.date.today().isoformat()

tasks = [
    {
        "taskType": t,
        "payload": {"prompt": p, "country": "US"},
        "idempotencyKey": f"reddit-share-{t}-{i}-US-{DAY}",
        "webhook": {"url": "https://example.com/hooks/answerline"},
    }
    for i, p in enumerate(PROMPTS)
    for t in ("CHATGPT", "GEMINI")
]

resp = requests.post(f"{API}/v1/async/task/batch", json=tasks, headers=HEADERS, timeout=60)
resp.raise_for_status()
body = resp.json()
print(body["summary"])
for item in body["results"]:
    if not item["success"]:
        print(tasks[item["index"]]["idempotencyKey"], item["error"]["code"])

A batch takes up to 500 tasks. The idempotency key is derived from engine, prompt, market and day, so resubmitting after a timeout cannot run a task twice (idempotency keys explained). Each webhook delivery carries the same JSON as GET /v1/async/task/{taskId}; the answer is in response.result. Verify the signature before storing it (verifying webhook signatures).

Step 4: classify sources and compute the shares

from collections import Counter
from urllib.parse import urlparse

def host(url: str) -> str:
    h = (urlparse(url).hostname or "").lower()
    return h[4:] if h.startswith("www.") else h

def is_reddit(url: str) -> bool:
    h = host(url)
    return h == "reddit.com" or h.endswith(".reddit.com") or h == "redd.it"

def reddit_report(results: list[dict]) -> dict:
    """results: result objects from one engine for one market and run."""
    answers_with_sources = answers_citing_reddit = reddit_sources = all_sources = 0
    threads, domains = Counter(), Counter()
    for r in results:
        urls = [s["url"] for s in r.get("sources", []) if s.get("url")]
        if not urls:
            continue
        answers_with_sources += 1
        all_sources += len(urls)
        hits = [u for u in urls if is_reddit(u)]
        reddit_sources += len(hits)
        answers_citing_reddit += bool(hits)
        threads.update(set(hits))
        domains.update({host(u) for u in urls})
    return {
        "reddit_answer_rate": answers_citing_reddit / max(answers_with_sources, 1),
        "reddit_source_share": reddit_sources / max(all_sources, 1),
        "top_threads": threads.most_common(10),
        "top_domains": domains.most_common(15),
    }

Two numbers answer two questions:

top_domains puts Reddit in context. If a review site or a competitor’s blog appears in more answers than Reddit does, that is the more urgent finding.

For Google Search results, apply the same is_reddit test to result.organicResults[].link and note whether result.peopleAreSaying is present (the field is omitted when the module is absent). If a thread ranks in the organic results for a prompt’s query and the same thread is cited by ChatGPT or Gemini for that prompt, retrieval is the likely path, and ranking content of your own for that query is the lever.

Step 5: read it by cluster, engine and over time

Split both numbers by intent cluster. One hypothesis worth testing is that comparison and “best for” prompts cite threads more than problem or branded prompts do; your data will show whether that holds for your category. Split by engine too: each engine has its own retrieval, so one engine’s share says nothing about another’s.

Then repeat the run on a schedule. A single run is one sample of a variable answer (why one check is an anecdote); compare rates across several runs, and report how many answers each rate is based on (sampling vs census).

Worked example

The numbers below are invented to show the arithmetic. Suppose a 30-prompt set on one engine returns 28 answers with sources, 150 source URLs in total, and 11 answers cite at least one thread, with 17 Reddit URLs overall.

Reddit is in many answers but is a small part of each one’s evidence. Now suppose top_threads shows three threads account for 12 of the 17 URLs. Then three specific threads matter, not Reddit in general.

What to do once you have the number

If a few threads carry the citations

Read them. They tell you which claims the engine is quoting about your category and whether you are in them. If your product is missing or described inaccurately, the fix usually starts on your own site: publish the specific answer to the question the thread asks. If you do participate in the thread, do it as a named, disclosed representative, answer the question asked, and follow the subreddit’s rules on self-promotion. Moderators remove undisclosed promotion, readers call it out, and the thread the engine cites ends up worse for you.

If Reddit’s share is high but spread thin

Many threads, each cited once, means no single conversation to join. Compete for retrieval instead: read the cited threads to see which questions they answer, then publish pages that answer them with the specifics threads offer anecdotally, such as measured setup times, limits, prices and named trade-offs. A page that states verifiable facts plainly is easier to quote than a thread that argues about them. Structured data for AI visibility covers making those facts machine-readable.

If Reddit’s share is low

Do not build a Reddit program. Look at top_domains: the domains that do get cited are the ones to study, pitch or compete with. Competitor AI answer monitoring shows how to track them.

Pitfalls

Start with the quickstart, or see the AI visibility tracking use case for the full monitoring setup.

Questions

Do AI engines cite Reddit more than other sites?

It depends on the category, the market and the engine, so measure it for your own prompts rather than relying on a borrowed percentage. Count the Reddit URLs in sources[] across a fixed prompt set and compare that share with review sites, publishers and vendor domains.

How do I detect a Reddit citation in an API response?

Parse the hostname of each result.sources[].url and treat reddit.com, any subdomain of reddit.com and redd.it as Reddit. For ChatGPT and Gemini, result.citationPills[].domain gives the host of each inline citation directly.

Why would Reddit threads be cited so often?

Grounded answers cite pages that their web searches retrieve, and discussion threads are retrieved for experience-style queries such as best X for Y or X vs Y. Threads also contain first-person claims and side-by-side comparisons that are easy to quote. Whether that holds for your category is something the source data for your prompts will show.

Should I post on Reddit to get cited in AI answers?

Only as a genuine, disclosed participant where a community's rules allow it. Undisclosed promotion breaks community rules, gets removed, and damages the brand the thread is about; publishing the specific evidence on your own site is the durable route.

How much does it cost to measure Reddit's citation share?

One run of a prompt costs $0.0006 on ChatGPT and $0.0006 on Gemini at the Starter tier. A 30-prompt set on both in one market is $0.036 per run. Every new account gets 100 free requests on any engine, enough for 50 prompts on both.

Try it on your own prompts

100 free requests on any engine, no card. One POST returns the answer, sources and citations as JSON.

Keep reading