{"name":"brand-mentions-monitor","id":"sfoln/brand-mentions-monitor","title":"Brand Monitoring – X, Reddit, News & Bluesky","description":"Monitor brand mentions on X (Twitter), Reddit, Google News, the web, Bluesky, Hacker News and your RSS feeds in one run: one row per mention with text, URL, author, date, engagement, language and sentiment, plus a per-brand summary. $1 per 1,000 mentions + $0.01 per brand.","version":"0.1","status":"ready","family":{"id":"social-media-data","name":"Social media data","description":"Profiles, posts, comments, followers and account audits from X, Instagram, TikTok, YouTube, Reddit, Threads, LinkedIn, Facebook, Bluesky, Telegram, Hacker News and Substack.","actors":31},"categories":["SOCIAL_MEDIA","NEWS","AUTOMATION"],"availability":"on_request","seoTitle":"Brand Monitoring Tool – $1 per 1,000 Mentions","seoDescription":"Brand monitoring API: mentions of your brand on X, Reddit, Google News, the web, Bluesky, Hacker News and RSS, with sentiment. $1 per 1,000 mentions.","summary":"Brand Monitoring – X, Reddit, News & Bluesky tracks who is talking about your brand, product or keyword across seven channels in one run: X (Twitter) posts, Reddit posts, Google News articles, Google web results, Bluesky posts, Hacker News stories and comments, and the RSS/Atom feeds you list. Every mention becomes one normalized row (source, title/text, URL, author, publish date, engagement) with its language and sentiment; the same mention found by two sources is delivered once. Each brand also gets a summary row: counts per source, sentiment split, volume by day, top domains and repeat authors. With onlyNew, scheduled runs deliver (and charge) only mentions you have not received before. Built for PR and comms teams, social listening, competitor tracking, reputation alerts and agency reporting.","pricing":{"model":"pay-per-event","currency":"USD","billedBy":"Apify","freePlanMaxItemsPerRun":10,"events":[{"name":"brand-mention","title":"Brand mention","description":"Charged once per mention row delivered (an X post, Reddit post, news article, web page, Bluesky post, Hacker News story or comment, or feed item mentioning the brand).","priceUsd":0.001},{"name":"brand-monitor-query","title":"Brand monitor query","description":"Charged once per brand whose sources were queried; covers the per-call minimums of the first page of each paid source (also when nothing is found).","priceUsd":0.01}]},"input":{"description":"List brand names or keywords. Each brand produces one row per mention found plus one summary row.","required":["brands"],"fields":[{"name":"brands","title":"Brands or keywords","type":"array","required":true,"description":"Brand names or keywords, one per line. Multi-word names are searched as exact phrases; advanced search syntax (quotes, OR, -word) is passed through as written. Accounts on the Apify free plan can process up to 10 brands per run.","prefill":["Apify"],"editor":"stringList"},{"name":"sources","title":"Sources","type":"array","required":false,"description":"Where to look: x (X / Twitter posts), reddit (Reddit posts), news (Google News), web (Google web results), bluesky (Bluesky posts), hackernews (Hacker News stories and comments), rss (the feeds listed below). Default: all but rss; rss is added whenever feeds are given.","default":["x","reddit","news","web","bluesky","hackernews"],"editor":"select"},{"name":"feeds","title":"RSS / Atom feeds","type":"array","required":false,"description":"Feed URLs (RSS, Atom, JSON Feed) or website / newsletter URLs whose feed is discovered automatically (up to 20). Their items that mention the brand become mentions (source rss). Each feed is read once per run for all brands.","editor":"stringList"},{"name":"onlyNew","title":"Only new mentions","type":"boolean","required":false,"description":"Deliver (and charge) only mentions that earlier runs did not deliver for the same brand. Built for schedules: the first run returns the current mentions, later runs only what is new. The memory lives in a key-value store named brand-mentions-monitor-memory in your account (30 days).","default":false},{"name":"maxPerSource","title":"Max mentions per source","type":"integer","required":false,"description":"Upper limit of mentions per brand and source (10–100), newest / most relevant first.","default":20,"minimum":10,"maximum":100},{"name":"timeRange","title":"Time range","type":"string","required":false,"description":"Only mentions from the last day, week, month or year (any = no limit).","default":"week","enum":["day","week","month","year","any"],"editor":"select"},{"name":"country","title":"Country (news & web)","type":"string","required":false,"description":"2-letter country code for Google News and web results (gl), e.g. us, gb, de.","default":"us","editor":"textfield"},{"name":"language","title":"Language (news & web)","type":"string","required":false,"description":"Interface language for Google News and web results (hl), e.g. en, de.","default":"en","editor":"textfield"},{"name":"excludeDomains","title":"Exclude domains","type":"array","required":false,"description":"Domains to leave out (e.g. your own site: apify.com). Applied to all sources and as -site: filters on web search; posts are never dropped for their own platform's domain (x.com, reddit.com, bsky.app, news.ycombinator.com: use Sources to leave a platform out).","editor":"stringList"},{"name":"excludeRetweets","title":"Exclude reposts on X","type":"boolean","required":false,"description":"Skip plain reposts (retweets) in X results.","default":true},{"name":"maxItems","title":"Max brands","type":"integer","required":false,"description":"Safety cap on how many brands are processed in this run; the rest are ignored and counted in the OUTPUT record.","default":100,"minimum":1,"maximum":500},{"name":"concurrency","title":"Concurrency","type":"integer","required":false,"description":"Brands processed in parallel (1–4). Sources of one brand are always queried in parallel.","default":2,"minimum":1,"maximum":4},{"name":"itemTimeoutSecs","title":"Per-brand timeout (seconds)","type":"integer","required":false,"description":"Time limit per brand; paging stops early when it is near.","default":600,"minimum":120,"maximum":1800},{"name":"includeRaw","title":"Include raw upstream response","type":"boolean","required":false,"description":"Attach the unmodified upstream item (tweet, Reddit post, search result, Bluesky post, Hacker News hit or feed item) to each mention row under `raw`.","default":false}]},"exampleInput":{"brands":["Apify"]},"outputFields":[{"name":"input","type":"string | object","title":"Input","description":"The input item this record corresponds to."},{"name":"status","type":"string","title":"Status","description":"ok (mention row charged brand-mention; summary row charged brand-monitor-query) | error (all sources failed or nothing could be queried; not charged) | skipped_budget | skipped_free_plan","example":"ok"},{"name":"charged","type":"boolean","title":"Charged","description":"Whether this record incurred a pay-per-event charge."},{"name":"chargedEvent","type":"string","title":"Charged event","description":"Pay-per-event event charged for this record."},{"name":"source","type":"string","title":"Source","description":"Mention rows: platform (x | reddit | news | web | bluesky | hackernews | rss). Summary rows: multi-source."},{"name":"fetchedAt","type":"string","title":"Fetched at","description":"ISO timestamp."},{"name":"error","type":"object","title":"Error","description":"code / message when status is not ok (or a partial failure)."},{"name":"warnings","type":"array","title":"Warnings","description":"Non-fatal notes (partial data, stopped early, free-plan caps)."},{"name":"recordType","type":"string","title":"Record type","description":"mention (one per mention found) or summary (one per brand)."},{"name":"brand","type":"string | null","title":"Brand","description":"Brand / keyword the row belongs to."},{"name":"provider","type":"string | null","title":"Provider","description":"Mention rows: upstream (twitterapi, scrapecreators, serper, bluesky, hackernews, feeds)."},{"name":"position","type":"integer | null","title":"Position","description":"Mention rows: 1-based position within its source for this brand."},{"name":"mentionId","type":"string | null","title":"Mention id","description":"X post id, Reddit post id, Bluesky at:// URI, Hacker News item id or feed item guid."},{"name":"title","type":"string | null","title":"Title","description":"Reddit post title, news headline, web page title, Hacker News story title (for comments: the story they belong to) or feed item title."},{"name":"text","type":"string | null","title":"Text","description":"Post text (X, Bluesky), self-text (Reddit), comment or story text (Hacker News), snippet (news / web) or feed summary / snippet around the brand (RSS); ≤ 1000 chars."},{"name":"url","type":"string | null","title":"URL","description":"Link to the mention."},{"name":"domain","type":"string | null","title":"Domain","description":"x.com, reddit.com, bsky.app, news.ycombinator.com or the publishing site."},{"name":"author","type":"string | null","title":"Author","description":"X handle, Reddit username, Bluesky handle, Hacker News user, news publisher or feed item author."},{"name":"authorName","type":"string | null","title":"Author name","description":"X or Bluesky display name."},{"name":"authorFollowers","type":"integer | null","title":"Author followers","description":"X author's followers."},{"name":"publishedAt","type":"string | null","title":"Published","description":"ISO timestamp."},{"name":"publishedAtIsEstimate","type":"boolean | null","title":"Date is estimate","description":"True when derived from a relative label (\"3 hours ago\")."},{"name":"language","type":"string | null","title":"Language","description":"ISO 639-1 language of the mention: the platform's own tag when it has one, else detected from the text."},{"name":"community","type":"string | null","title":"Community","description":"Subreddit (Reddit) or Hacker News item type (story, comment, ask_hn, show_hn, launch_hn, tell_hn)."},{"name":"rank","type":"integer | null","title":"Rank","description":"Position in Google News / web results."},{"name":"engagement","type":"object | null","title":"Engagement","description":"{ likes, reposts, replies, quotes, views } (X, Bluesky) or { score, comments } (Reddit, Hacker News)."},{"name":"engagementTotal","type":"integer | null","title":"Engagement total","description":"likes + reposts + replies + quotes (X, Bluesky) or score + comments (Reddit, Hacker News); null for news, web and RSS."},{"name":"sentiment","type":"string | null","title":"Sentiment","description":"Mention rows: positive | neutral | negative (VADER, English text); null for other languages."},{"name":"sentimentScore","type":"number | null","title":"Sentiment score","description":"Mention rows: VADER compound score from -1 (most negative) to 1 (most positive)."},{"name":"feedUrl","type":"string | null","title":"Feed URL","description":"RSS mentions: the feed the item came from."},{"name":"feedTitle","type":"string | null","title":"Feed title","description":"RSS mentions: the feed's title."},{"name":"sources","type":"array","title":"Sources","description":"Summary rows: sources queried."},{"name":"timeRange","type":"string | null","title":"Time range","description":"Summary rows: day | week | month | year | any."},{"name":"totalMentions","type":"integer | null","title":"Total mentions","description":"Summary rows: mention rows delivered for the brand."},{"name":"mentionsBySource","type":"object | null","title":"Mentions by source","description":"Summary rows: { x, reddit, news, web, bluesky, hackernews, rss } counts."},{"name":"topDomains","type":"array","title":"Top domains","description":"Summary rows: up to 10 { domain, count }."},{"name":"topAuthors","type":"array","title":"Repeat authors","description":"Summary rows: up to 10 { author, source, count } with more than one mention."},{"name":"newestMentionAt","type":"string | null","title":"Newest mention","description":"Summary rows: ISO."},{"name":"oldestMentionAt","type":"string | null","title":"Oldest mention","description":"Summary rows: ISO."},{"name":"totalEngagement","type":"integer | null","title":"Total engagement","description":"Summary rows: sum of engagementTotal."},{"name":"sourceStatus","type":"object | null","title":"Source status","description":"Summary rows: per source ok | error | skipped."},{"name":"stopReasons","type":"object | null","title":"Stop reasons","description":"Summary rows: why paging stopped per source (limit, end, budget, deadline, caught_up, error…)."},{"name":"sentimentCounts","type":"object | null","title":"Sentiment counts","description":"Summary rows: { positive, neutral, negative, unscored } mentions (unscored: not English)."},{"name":"averageSentiment","type":"number | null","title":"Average sentiment","description":"Summary rows: mean sentiment score of the scored mentions (-1 … 1)."},{"name":"sentimentBySource","type":"object | null","title":"Sentiment by source","description":"Summary rows: sentiment counts per source with mentions."},{"name":"volumeByDay","type":"array | null","title":"Volume by day","description":"Summary rows: [{ date, count }] by UTC publish day, oldest first."},{"name":"topLanguages","type":"array | null","title":"Top languages","description":"Summary rows: up to 5 [{ language, count }]."},{"name":"duplicatesSkipped","type":"integer | null","title":"Duplicates skipped","description":"Summary rows: mentions found again (same canonical URL) by another source or page; not charged."},{"name":"nearDuplicatesSkipped","type":"integer | null","title":"Near-duplicates skipped","description":"Summary rows: the same article under another URL from another source (news, web, RSS); not charged."},{"name":"unrelatedSkipped","type":"integer | null","title":"Unrelated hits skipped","description":"Summary rows: Bluesky / Hacker News hits whose text does not contain the brand; not charged."},{"name":"onlyNew","type":"boolean | null","title":"Only new","description":"Summary rows: true when onlyNew was on."},{"name":"firstRun","type":"boolean | null","title":"First run","description":"Summary rows (onlyNew): no earlier run had remembered this brand."},{"name":"alreadyDeliveredSkipped","type":"integer | null","title":"Already delivered","description":"Summary rows (onlyNew): mentions met that an earlier run delivered (not charged; newest-first sources stop at the first one)."},{"name":"raw","type":"object | null","title":"Raw","description":"Mention rows with includeRaw: the unmodified upstream item."}],"outputExample":{"input":"Apify","recordType":"mention","brand":"Apify","source":"bluesky","provider":"bluesky","position":1,"mentionId":"at://did:plc:example1/app.bsky.feed.post/3m1abcdxyz","title":null,"text":"Moved our price monitoring to Apify last week and it has been fantastic so far.","url":"https://bsky.app/profile/dataops-team1.bsky.social/post/3m1abcdxyz","domain":"bsky.app","author":"dataops-team1.bsky.social","authorName":"Data Ops Team 1","authorFollowers":null,"publishedAt":"2026-10-14T05:00:00.000Z","publishedAtIsEstimate":false,"language":"en","community":null,"rank":null,"engagement":{"likes":14,"reposts":3,"replies":2,"quotes":1,"views":null,"score":null,"comments":null},"engagementTotal":20,"sentiment":"positive","sentimentScore":0.5574,"feedUrl":null,"feedTitle":null,"status":"ok","charged":true,"chargedEvent":"brand-mention","fetchedAt":"2026-10-14T10:00:02.000Z"},"faq":[{"question":"How do I get only new mentions on a schedule?","answer":"Turn on onlyNew and schedule the Actor (for example daily). The first run returns the current mentions; later runs deliver and charge only mentions that no earlier run delivered for the same brand."},{"question":"How is sentiment calculated?","answer":"Locally with VADER, a lexicon built for English social-media text, so there is no AI fee. English mentions get positive, neutral or negative and a score from -1 to 1; other languages get null (their language is still detected)."},{"question":"Can I monitor blogs and newsletters?","answer":"Yes: list their RSS/Atom feeds or website URLs in feeds. Every item that mentions the brand in its title, summary or content becomes a mention with source rss."}],"mcpExamplePrompt":"Find this week's mentions of the brand \"Apify\" on X, Reddit, Google News, the web, Bluesky and Hacker News, and summarize what people are saying and how positive it is.","related":["bluesky-scraper","hacker-news-scraper","rss-feed-reader","google-news-search","reddit-subreddit-posts"],"urls":{"site":"https://www.sfoln.com/actors/brand-mentions-monitor/","siteJson":"https://www.sfoln.com/actors/brand-mentions-monitor.json","siteMarkdown":"https://www.sfoln.com/actors/brand-mentions-monitor.md","runSync":"https://api.apify.com/v2/actors/sfoln~brand-mentions-monitor/run-sync-get-dataset-items","runAsync":"https://api.apify.com/v2/actors/sfoln~brand-mentions-monitor/runs","mcp":"https://mcp.apify.com?tools=sfoln/brand-mentions-monitor","requestAccess":"mailto:contact@sfoln.com?subject=Access%20request%3A%20Brand%20Monitoring%20%E2%80%93%20X%2C%20Reddit%2C%20News%20%26%20Bluesky%20(sfoln%2Fbrand-mentions-monitor)&body=Please%20publish%20brand-mentions-monitor.%20What%20we%20plan%20to%20use%20it%20for%3A"},"publisher":{"name":"SFOLN LLC","apifyUsername":"sfoln","url":"https://www.sfoln.com","apifyProfile":"https://apify.com/sfoln","email":"contact@sfoln.com"},"generatedAt":"2026-10-22T04:28:58.477Z"}