Reddit Mentions (Company)

Overview

Reddit Mentions (Company) turn candid Reddit threads into structured sales signals. When a business complains about a renewal, evaluates a replacement, or reports an outage, you get a signal with the company resolved to its domain and the exact quotes that prove it.

We monitor 500+ hand-vetted business communities and 150+ standing searches. Every community passed a live AI screen before inclusion (1,300+ candidates tested, 59% rejected). Each signal carries one of 15 subtypes, verbatim evidence, and two honesty labels: stage says how strong the evidence is; prominence says whether the thread was about this or mentioned it in passing.

New signals arrive weekly. A signal ships once - the ID is stable, and a record re-ships only when its evidence gets stronger.

This is the only Reddit format the Signal API serves (signal_type: "reddit-company"). See Using the Signal API below.

Available Subtypes

The signal_subtype field takes one of 15 values. Expand for the full list with each subtype's stage and category vocabularies.

All 15 subtypes - roles, stages, and categories
SubtypeRoleStage valuesCategory valuesDescription
customerFeedbackvendornone considering switching switchedpricing reliability security support integration implementation features usability generalAny customer voice about a vendor's product - praise, pain, pricing anger, intent to leave, or a completed switch. The broadest subtype. Churn (the old churnRisk) is customerFeedback with data.stage considering, switching or switched. switched means the account already moved
buyingIntentvendor or buyerresearching evaluating decidingfree text - the software category ("CRM", "observability")An active evaluation or purchase. Buyer-side records need a company named specifically enough to resolve, so most records are vendor-side
techAdoptionbuyerswitchedfree text - the tool category adoptedA named company reports using or rolling out named tools
serviceOutagesubjectevent ladder¹outage degradation data_lossThe product is down or degraded NOW. Post-hoc reliability complaints are customerFeedback/reliability
pricingChangesubjectevent ladder¹price license packaging termsThe vendor changed price, licensing, packaging, or terms - the fact of the change; the angry reaction is customerFeedback
productChangesubjectevent ladder¹discontinued feature_removed breaking_change redesign policy_changeSunset/EOL, removed feature, breaking release, redesign, or policy change
accountRestrictionsubjectevent ladder¹suspension closure funds_hold quota_denied access_denied listing_removed reviews_removed ad_disapprovedA platform suspended, closed, held funds from, or denied access to a customer
financialDistresssubjectevent ladder¹unpaid_vendors missed_payroll runway fire_sale shutdown_talk otherUnpaid vendors, missed payroll, runway rumors, insolvency. Most records are reported or confirmed. Community predictions ship as speculative (about 4% so far)
cybersecurityIncidentsubjectevent ladder¹breach ransomware vulnerability_disclosed active_exploitation supply_chainA breach, or a critical vulnerability in the company's own product. The entity is always the victim or the vulnerable-product maker
layoffssubjectevent ladder¹layoffs hiring_freeze attritionLayoffs/RIF, hiring freeze, or mass attrition
leadershipChangesubjectevent ladder¹-A named executive joins or leaves. Carries data.details {person_name, title, direction}
acquisitionAnnouncedsubjectevent ladder¹acquirer target merger (this company's side)An acquisition or merger; the counterparty appears in data.other_companies
fundingEventsubjectevent ladder¹seed series_a series_b later_stage debt grant unspecifiedA funding round raised by this company. category can be null when the thread gives no round type
hiringSignalsubjectevent ladder¹-The company hires at scale. One person's job offer does not qualify
productLaunchsubjectevent ladder¹-The company launches a product

¹ Event ladder - every event subtype uses the same stage scale, weakest to strongest evidence: speculative (the author predicts it; never stated as fact) → rumored (someone claims it is happening, unverified) → reported (secondhand claim it occurred) → confirmed (first-hand account or official notice/link). Filter stage != "speculative" for facts only; keep predictions as early intent.

Schema

A production record from the week ending 2026-09-20, as the Signal API returns it, annotated. Long text fields are shortened here.

{
  "signal_id": "dd9c1e08-55de-5867-a320-cfb9bcaf8877", // deterministic: same signal = same ID, every delivery
  "signal_type": "reddit-company",
  "signal_subtype": "customerFeedback",
  "signal_name": "Reddit Mention",
  "detected_at": "2026-09-15T09:53:13.000Z", // the Reddit post time (= data.post_date); detected_after/detected_before filter on it
  "association": "company",
  "company": { // use domain or LinkedIn url to match
    "name": "Microsoft",
    "domain": "microsoft.com", // resolved live; every delivered record has a domain
    "linkedin_url": "linkedin.com/company/microsoft", // "" when unknown
    "industries": ["Software Development"], // [] when unknown
    "employee_count_low": 0, // 0 when unknown; filled from Autobound firmographics when matched
    "employee_count_high": 0,
    "description": "Microsoft Corporation is a multinational conglomerate that develops and sells a wide range of technology products. …"
  },
  "contact": null, // API responses only: always null on company records
  "data": {
    "signal_category": "feedback", // coarse group: feedback | intent | adoption | event
    "summary": "Agoda replaced its 72-shard Microsoft SQL Server price cache with DragonflyDB, indicating SQL Server was not suitable for their high-performance caching requirements.",
    "entity_role": "vendor", // vendor | buyer | subject
    "stage": "switched", // subtype-scoped; here: the customer already moved
    "category": "features", // subtype-scoped; null where the subtype has none
    "sentiment": "negative", // toward the company
    "prominence": "core", // core = the thread is about this; aside = passing mention
    "details": null, // leadershipChange only: { person_name, title, direction }
    "timing": "completed", // ongoing_state | in_progress | completed | planned
    "event_date": "2026-09", // best-estimate month; null = no date derivable (never invented)
    "event_date_text": null, // the raw phrase from the thread, when one exists
    "people": [], // real named people only - never Reddit usernames
    "topics": ["caching", "database", "customer loss", "performance"],
    "products_mentioned": ["SQL Server"],
    "evidence": [ // verbatim quotes; prefix = where each came from
      "[post] Agoda Replaces 72-Shard SQL Server Price Cache with DragonflyDB",
      "[comment u/HRApprovedUsername] They switched from a db to in memory cache and got an improvement? Sounds obvious"
    ],
    "other_companies": [ // everyone else in the conversation, with their role
      { "name": "DragonflyDB", "role": "switching_to", "domain": null }
    ],
    "source_url": "https://www.reddit.com/r/softwarearchitecture/comments/1wgvwi0/agoda_replaces_72shard_sql_server_price_cache/",
    "post_id": "1wgvwi0",
    "post_title": "Agoda Replaces 72-Shard SQL Server Price Cache with DragonflyDB",
    "post_text": "…full thread body, up to 5,000 chars - the same context the extractor read…",
    "post_kind": "link", // text | link | image | multi_media | crosspost | gallery | video | gif | poll
    "link_url": "https://www.infoq.com/news/2026/09/agoda-price-cache-dragonflydb/",
    "image_url": null,
    "image_read_by_model": false, // true when the extractor read the image pixels
    "subreddit": "softwarearchitecture",
    "subreddit_url": "https://www.reddit.com/r/softwarearchitecture/",
    "post_date": "2026-09-15T09:53:13.000Z", // when the thread was posted (the real conversation time)
    "post_flair": ["Article/Video"],
    "post_author": "rgancarz", // handle only - we never resolve Reddit users
    "post_author_url": "https://www.reddit.com/user/rgancarz/",
    "post_author_id": "t2_qvzmu",
    "nsfw": false, // Reddit's own over-18 flag
    "content_warning": null, // "profanity_in_quotes" = check before quoting in outreach
    "total_upvotes": 54,
    "total_comments": 2,
    "upvote_ratio": 0.98,
    "awards": 0,
    "virality": "medium", // engagement percentile vs the week's corpus
    "mention_count": 261, // distinct threads naming this company this run
    "mention_surge": true, // true at mention_count >= 3
    "related_post_urls": [ // up to 10 other threads naming the same company
      "https://www.reddit.com/r/sysadmin/comments/1whxib9/microsoft_down/",
      "…"
    ],
    "comments": [ // up to 20 top comments, for verification context
      {
        "author": "HRApprovedUsername",
        "author_url": "https://www.reddit.com/user/HRApprovedUsername/",
        "score": 5,
        "depth": 0,
        "posted_at": "2026-09-17T01:43:24.000Z",
        "url": "https://www.reddit.com/r/softwarearchitecture/comments/1wgvwi0/comment/paaaieh/",
        "excerpt": "They switched from a db to in memory cache and got an improvement? Sounds obvious"
      }
    ],
    "comments_total": 2,
    "comments_included": 1
  }
}

Field Reference

Core Fields

FieldTypeRequiredDescription
signal_idstring (UUID)✓Deterministic ID derived from (post, company, subtype). The same signal carries the same ID in every delivery. Re-runs and backfills are upsert-safe: treat signal_id as your primary key
signal_typestring✓Always "reddit-company"
signal_subtypestring✓One of the 15 subtypes above. Drives which stage and category values are possible
signal_namestring✓Always "Reddit Mention"
detected_atstring (ISO 8601)✓The Reddit post time: the same instant as data.post_date (for example 2026-09-15T09:53:13.000Z). detected_after and detected_before filter on it
associationstring✓Always "company"
companyobject✓The company this signal is about (below)
contactnullAlways null in Signal API responses. Bucket files omit the key

batch_id (the generation batch timestamp) is in the V3 bucket files only. Signal API responses do not include it.

Company Object

This is the company object that the Signal API returns. An unknown linkedin_url is "", unknown industries is [], and unknown employee counts are 0. They are never null.

FieldTypeRequiredDescription
namestring✓The company name after resolution. Every delivered record is resolved (see domain), so no record carries only the raw thread name
domainstring✓Primary domain from Autobound's live resolution engine (web search + AI verification of each candidate). Every delivered record has a domain: when the resolver abstains, the signal is held back, not shipped name-only. Use domain as your join key to CRM/enrichment
linkedin_urlstring✓LinkedIn company page. "" when unknown
industriesarray✓Industry labels. [] when unknown
employee_count_low, employee_count_highnumber✓Employee range from Autobound firmographics when it has a match. Both are 0 when unknown
descriptionstring | null✓Short company description. null when unknown
revenuestring | nullAnnual-revenue bucket from Autobound firmographics. Present only when Autobound has a firmographics match for the company (null when that match has no revenue)

Data Object

Signal API responses carry all 44 data keys on every row. A key with no value is null ([] for arrays), so treat each type below as nullable.

FieldTypeDescription
signal_categorystringCoarse grouping for quick routing: feedback, intent, adoption, or event. Redundant with subtype but cheaper to filter on
summarystringOne sentence, company first, with the concrete specifics (numbers, dates, names) pulled into words. Predictions read as predictions; passing mentions read as asides - the summary never upgrades weak evidence
entity_rolestringThe company's side of the story. vendor = its product is being discussed; buyer = it is doing the evaluating/adopting; subject = the event happened to it
stagestring | nullHow far along, or how solid. Funnel subtypes use funnel values (considering → switched); event subtypes use the evidence ladder (speculative → confirmed). See the subtype accordion for each vocabulary. This is your main precision filter
categorystring | nullThe subtype's finer classification (e.g. pricing vs reliability inside customerFeedback). Always null on subtypes that define no categories (hiringSignal, productLaunch, leadershipChange). Can also be null on other subtypes when no category fits (about 40 of 13,089 rows so far: mostly customerFeedback, productChange, fundingEvent)
sentimentstringpositive, neutral, negative, or mixed - the thread's tone toward THIS company, not the thread's overall mood
prominencestringcore = the thread is about this signal, or the author reports it first-hand. aside = a passing mention: a commenter's recommendation, an old event recalled, background context. Roughly a third of signals are asides - they are real information, labeled so you can weight them
timingstring | nullWhen the described thing happens relative to the post: ongoing_state (a standing situation), in_progress (happening now), completed (already happened - even years ago), planned (announced for the future). The key is always present. It is null when none fits (about 4% of rows)
event_datestring | nullBest-estimate month, YYYY-MM or YYYY. Relative phrases ("yesterday", "last week") are anchored to the post date. null when no date is derivable - we never invent one. Pair with timing: completed + an old event_date = history, not news
event_date_textstring | nullThe raw temporal phrase from the thread ("effective October 1", "the last 3 or 4 months", "upcoming"). It does not depend on event_date: a vague phrase can ship with event_date null, and a dated signal can have no phrase. About 24% of records carry it (3,126 of 13,089 so far). Useful for display
peoplearrayReal named humans relevant to this signal: { name, title, employer, role } with role actor (the person the signal is about) or mentioned. Reddit usernames never appear here
detailsobject | nullPresent on every row. It has a value only on leadershipChange: { person_name, title, direction }. It is null on the other 14 subtypes. direction is "joins", "leaves", or null when the thread does not say (2 of 16 records so far)
topicsarrayUp to 5 short lowercase tags (pricing, migration, ai) for faceting
products_mentionedarrayThe company's own product lines named in the thread ("M365", "Lambda")
evidencearray1–5 verbatim quotes supporting the signal, each prefixed with its source in square brackets. Most quotes start with [post] or [comment u/<name>]. Other prefixes: [image] (text read from the image), [title] (the post title), [body] (the post body), and [link] or [link_url] (the linked URL). Parse the prefix as "text in the first [...]", not as a fixed list. This is the checkability guarantee - every claim is one click from its evidence via source_url
other_companiesarrayEvery other company in the conversation with its relationship to this one: competitor, alternative, incumbent, switching_to, adopted, replaced, acquirer, target, partner - each with its resolved domain when available. A churn signal's switching_to entry tells you who won the deal
source_urlstringCanonical thread permalink. Append .json for Reddit's public JSON of the full thread
post_id, post_title, post_textstringThread identity, title, and body (up to 5,000 chars - the same text our extractor read, shipped for verification)
post_kindstringWhat kind of post: text, link, image, multi_media, crosspost, gallery, video, gif, or poll. Image posts may carry the content in pixels - see image_read_by_model
link_url, image_urlstring | nullThe external link or image for non-text posts
image_read_by_modelbooleantrue when the extractor read the attached image (screenshots of outage banners, pricing emails, etc.)
subreddit, subreddit_urlstringThe source community
post_datestring (ISO 8601)When the thread was posted - the conversation's real timestamp. The Signal API copies it into detected_at
post_flairarrayThe thread's flair labels, when set
post_author, post_author_url, post_author_idstringThe poster's handle, profile URL, and stable t2_ ID. Provenance only - we never resolve Reddit users to real identities
total_upvotes, total_comments, upvote_ratio, awardsnumberThread engagement at collection time. High engagement = the market is watching this conversation
viralitystringEngagement percentile bucket relative to that week's whole corpus: very_low, low, medium, somewhat_high, high, very_high - "viral" always means viral for that week
mention_countnumberHow many distinct threads named this company in the same run
mention_surgebooleantrue at mention_count ≥ 3. Large vendors trip it most weeks (57% of all records so far: 7,424 of 13,089), so treat it as a weak hint and use mention_count for ranking
related_post_urlsarrayUp to 10 other threads mentioning the same company that run
commentsarrayUp to 20 top comments (author, score, depth, timestamp, permalink, 400-char excerpt) - the discussion context, shipped so you can verify tone and claims without leaving the record
comments_total, comments_includednumberThe thread's full comment count vs how many ship here
nsfwbooleanReddit's own over-18 flag for the thread. Effectively always false in our vetted business communities
content_warningstring | null"profanity_in_quotes" when the summary or evidence text contains profanity. Check this before piping quotes verbatim into outreach copy

Coverage

  • Communities: 500+ hand-vetted business subreddits across IT & infrastructure, security, data/AI, software engineering, e-commerce & retail, marketing, sales & CS, finance & accounting, HR & legal, healthcare, construction & trades, manufacturing, energy, logistics - plus dedicated regional coverage (UK & Ireland, DACH, France & Benelux, Nordics, Iberia & LATAM, India, Australia & NZ, Canada, SEA & Japan/Korea, MEA). Per-community yield is re-measured every run; communities that stop producing get pruned.
  • Standing searches: 150+ probe-verified queries catch signals outside the curated communities.
  • Cadence: weekly (week ending Sunday). History starts with the week ending 2026-09-06. Deduplication is guaranteed: a signal ships once, under a stable ID, and re-ships only when its evidence strengthens (a rumor upgrading to confirmed).
  • Quality machinery: automated review of every risky signal at production time, tripwire gates on every run, and independent AI audits that grade weekly batches field-by-field before delivery.

Using the Signal API

  • Type: signal_types: ["reddit-company"].
  • Subtypes: pass any of the 15 names above in signal_subtypes, together with signal_types: ["reddit-company"]. Old Reddit subtype names are retired and return 0 Reddit rows.
    • A retired name gets a warnings[] entry that names its V3 replacement only when no requested signal type uses that name.
    • With no signal_types, company search and enrich treat all company types as requested, reddit-company included. So a retired Reddit-only name (for example churnRisk, pricingConcern or useCase) gets the warning.
    • painPoint and competitorMention are also earnings-transcripts subtypes. These two never get the warning when earnings-transcripts is in the requested set, explicitly or implicitly (no signal_types). They still return 0 Reddit rows.
    • The changelog post has the full old-to-new mapping.
  • Dates: detected_at is the Reddit post time (data.post_date). detected_after and detected_before filter on it.
  • Refresh: one new week of signals each week. Typical volume is 3,000-5,000 signals about 1,300-1,900 companies per week.
  • Filtering on data: stage, category, prominence, and sentiment are not API filters. Filter on them in your code after you fetch.
  • Monitoring pool: Reddit is discovery-only. We scan communities, not a company list. reddit-company monitoring-pool entries are free, do not add coverage, and return the warning signal_type_not_monitorable.

Changes from the Old Reddit Format

All data field changes from the old Reddit format (v0-v2) to V3:

Changedata fields
Renamed (2)source_urls (array) → source_url (string); subreddits (array) → subreddit (string)
Removed (12)audience_type, buying_stage, competitors_mentioned, confidence_score, evidence_urls, moderation_score, objection_type, post_count, recency_score, salience_score, topics_tags, urgency
Kept (11)evidence, post_author, post_date, post_flair, post_text, sentiment, summary, topics, total_comments, total_upvotes, upvote_ratio
Added (31)awards, category, comments, comments_included, comments_total, content_warning, details, entity_role, event_date, event_date_text, image_read_by_model, image_url, link_url, mention_count, mention_surge, nsfw, other_companies, people, post_author_id, post_author_url, post_id, post_kind, post_title, products_mentioned, prominence, related_post_urls, signal_category, stage, subreddit_url, timing, virality

Every V3 row carries all 44 keys. A key with no value is null ([] for arrays). details has a value only on leadershipChange.


Legacy docs: the previous Reddit page describes the legacy reddit-company-v2 bucket feed. It is kept (hidden) for bucket readers. The Signal API does not serve that format.


Did this page help you?