AI Brand Visibility Monitor — SERP & Answer Mentions avatar

AI Brand Visibility Monitor — SERP & Answer Mentions

Pricing

$20.00 / 1,000 ai visibility result rows

Go to Apify Store
AI Brand Visibility Monitor — SERP & Answer Mentions

AI Brand Visibility Monitor — SERP & Answer Mentions

Monitor AI brand visibility. No API key / no login. Open Input → leave defaults → Start (1 keyword + 1 result ≈ USD 0.02/row): https://console.apify.com/actors/TrhJ0DJxjSP2IiuHB/input

Pricing

$20.00 / 1,000 ai visibility result rows

Rating

0.0

(0)

Developer

naoki anzai

naoki anzai

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

0

Monthly active users

5 days ago

Last modified

Share

AI Brand Visibility Monitor API | Reddit Tracker (Google not supported at the moment)

Open Input (leave defaults → Start) Paid first run ≈ USD 0.02/row (1 keyword + 1 result). Keep reports, exports, and movement options off for the first run. Open Console Input (deep link above) and run this JSON.

{
"brand": "OpenAI",
"brandTerms": [
"openai.com",
"openai"
],
"competitors": [],
"keywords": [
"ai api pricing"
],
"searchSources": [
"reddit"
],
"requestTimeoutSeconds": 20,
"maxResultsPerKeyword": 5,
"delivery": "dataset",
"datasetMode": "changes_only",
"notifyOnNoChange": false,
"snapshotKey": "ai-visibility-wave-l",
"dryRun": false
}

Paste keyword and Start.

Google is not supported at the moment. Google no longer returns search results to plain HTTP requests, and this Actor does not use a paid proxy or a browser to get around that. Use "searchSources": ["reddit"]. If you select google, that target returns an error row that is not charged (see "Failed rows are not charged" under Cost).

Extract structured brand visibility data directly from Reddit posts (Google search results are not supported at the moment) to build a complete picture of your digital footprint. This scraper goes beyond basic keyword tracking by combining traditional SEO metrics with social discussion data, giving you a unified view of where your AI brand stands in an increasingly crowded market. By reliably parsing raw HTML from search engine results pages and community threads, the actor extracts accurate ranking details, precise rank deltas, and platform-specific visibility scores without requiring you to build custom web browser navigation scripts.

Search engine marketers and data analysts run this tool to schedule daily competitive intelligence checks. Instead of manually checking target keywords, you can schedule the scraper to query Reddit automatically. The scraped dataset reveals exactly which competitor websites are overtaking your organic positions, outputting a detailed competitor overlap matrix alongside individual post performance metrics.

Whether tracking shifting SERP features or trending community discussions, this tool captures the precise state of your digital presence. Data teams use the exported results to generate weekly executive email summaries, feed custom business intelligence dashboards, or trigger instant webhook alerts when brand sentiment or search rankings experience sudden drops. By automating the extraction of search and social signals, you maintain continuous visibility over your product's market position.

Store Quickstart

  • Start with store-input.example.json for a one-keyword, brand-only starter run (set searchSources to ["reddit"]; Google is not supported at the moment).
  • If the output fits, switch to store-input.templates.json and pick one of:
    • Starter: Brand-only Quickstart (1 Keyword) for the fastest first success
    • Upgrade: Competitor Snapshot (1 Keyword) when you want overlap and replacement context
    • Upgrade: Weekly Executive Email (recurring) as the default recurring upgrade after the first useful run
    • Upgrade: Webhook Alert (change alerts) once the same keyword set is monitored by a team or downstream workflow
    • Upgrade: Brand vs Competitors only after the first run looks right

Use with Apify MCP

Exact actor: taroyamada/ai-visibility-monitor-actor

Sample input JSON:

{
"brand": "OpenAI",
"brandTerms": [
"openai.com"
],
"competitors": [
{
"name": "Anthropic",
"terms": [
"anthropic.com",
"claude.ai",
"anthropic"
]
}
],
"keywords": [
"ai api pricing"
],
"searchSources": [
"reddit"
],
"requestTimeoutSeconds": 20,
"maxResultsPerKeyword": 10,
"delivery": "dataset",
"datasetMode": "changes_only",
"notifyOnNoChange": false,
"snapshotKey": "ai-visibility-snapshots"
}

Key Features

  • 📈 Competitive intelligence — Aggregates cross-platform signals (reviews, listings, catalogs)
  • 🌐 Multi-source aggregation — Unifies iOS/Android/Shopify/market data in one run
  • 📊 Trend detection — Rolling averages, sentiment scoring, and share-of-voice metrics
  • 🎯 Targeted queries — Focused brand/product/keyword watchlists
  • 📡 Webhook intel push — Deliver insights to research/product teams in real-time

Use Cases

WhoWhy
DevelopersAutomate recurring data fetches without building custom scrapers
Data teamsPipe structured output into analytics warehouses
Ops teamsMonitor changes via webhook alerts
Product managersTrack competitor/market signals without engineering time

Input

FieldTypeDefaultDescription
brandstringprefilledPrimary brand label used in summaries. Starter runs can be just your brand plus one keyword.
brandTermsarrayprefilledTerms that indicate your brand in titles/URLs, such as domains and product names. Starter mode usually needs just your d
competitorsarrayprefilledOptional in starter mode. Leave empty for a brand-only first run, then add 1-3 competitors as the next upgrade for overl
keywordsarrayprefilledKeywords or prompts to monitor across search sources. Starter mode should begin with one high-intent keyword before expa
searchSourcesarrayprefilledSources to check for each keyword. Use reddit. google is not supported at the moment (that target returns an uncharged error row).
requestTimeoutSecondsinteger30HTTP timeout per request.
maxResultsPerKeywordinteger10How many top results to inspect per keyword and source.
userAgentstring—Optional custom user-agent header.

Input Example

{
"brand": "OpenAI",
"brandTerms": [
"openai.com",
"openai"
],
"competitors": [],
"keywords": [
"ai api pricing"
],
"searchSources": [
"reddit"
],
"requestTimeoutSeconds": 30,
"maxResultsPerKeyword": 10,
"delivery": "dataset",
"datasetMode": "changes_only",
"notifyOnNoChange": false,
"snapshotKey": "ai-visibility-snapshots",
"dryRun": false
}

Input Examples

Example: Tech brand baseline

{
"brand": "Anthropic",
"brandTerms": [
"anthropic.com",
"claude.ai",
"anthropic"
],
"keywords": [
"best LLM",
"Claude AI review"
],
"searchSources": [
"reddit"
],
"maxResultsPerKeyword": 10
}

Example: Multi-brand competitive overlap

{
"brand": "Notion",
"brandTerms": [
"notion.so",
"notion.com",
"notion"
],
"competitors": [
"Obsidian",
"Roam Research"
],
"keywords": [
"best notes app"
],
"searchSources": [
"reddit"
],
"maxResultsPerKeyword": 10
}

Example: Reddit rank focus (every target row)

{
"brand": "Linear",
"brandTerms": [
"linear.app",
"linear"
],
"competitors": [
"Jira",
"Asana"
],
"keywords": [
"best issue tracker"
],
"searchSources": [
"reddit"
],
"maxResultsPerKeyword": 10,
"datasetMode": "all"
}

Output

FieldTypeDescription
metaobject
resultsarray
results[].idstring
results[].namestring
results[].kindstring
results[].keywordstring
results[].sourcestring
results[].statusstring
results[].visibilityStatusstring
results[].changedboolean
results[].previousBrandRanknull
results[].currentBrandRanknull
results[].rankChangenumber
results[].previousCompetitorCountnumber
results[].currentCompetitorCountnumber
results[].capturedAttimestamp
results[].previousCapturedAtstring
results[].searchUrlstring (url)
results[].matchedBrandUrlstring
results[].summarystring
results[].trendobject
results[].actionItemsarray
results[].topResultsarray
results[].warningstring
results[].errorstring
results[].prioritystring

Output Example

One dataset row per keyword × source (the fields listed under results[] above). Real output from build 0.1.47: the Quickstart input above with "datasetMode": "all" and a fresh snapshotKey (brand OpenAI, keyword "ai api pricing", "searchSources": ["reddit"], maxResultsPerKeyword: 5), run tzkTyQmBBx4UXuWk9 at 2026-10-18 20:14 UTC. Post snippets are shortened here with "…"; the dataset contains the full snippet text.

{
"id": "reddit-ai-api-pricing",
"name": "ai api pricing (reddit)",
"kind": "reddit",
"keyword": "ai api pricing",
"source": "reddit",
"status": "initial",
"visibilityStatus": "initial_found",
"changed": false,
"previousBrandRank": null,
"currentBrandRank": 4,
"rankChange": 0,
"previousCompetitorCount": 0,
"currentCompetitorCount": 0,
"capturedAt": "2026-10-18T20:14:01.061Z",
"previousCapturedAt": "",
"searchUrl": "https://www.reddit.com/search.rss?limit=5&sort=relevance&t=month&q=ai%20api%20pricing",
"matchedBrandUrl": "https://www.abtin.com/blog/2026-09-22-openai-spend.html",
"summary": "REDDIT: initial capture shows your brand at #4 for \"ai api pricing\".",
"trend": {
"points": 1,
"historyWindowDays": 0,
"bestRank": 4,
"worstRank": 4,
"averageRank": 4,
"latestRank": 4,
"previousRank": null,
"latestCompetitorCount": 0,
"averageCompetitorCount": 0,
"presenceRatePct": 100,
"recentDirection": "insufficient_data"
},
"actionItems": [
"Keep monitoring ai api pricing on reddit and compare again after the next content or SEO update."
],
"topResults": [
{
"rank": 1,
"title": "How are you keeping AI API costs under control without hurting quality or latency?",
"url": "https://www.reddit.com/r/AI_Agents/comments/1x1jlh8/how_are_you_keeping_ai_api_costs_under_control/",
"snippet": "I'm looking for some recommendations on ways to keep our monthly AI API costs under budget. As we've grown, our usage has increased to the point that we frequently run …",
"subreddit": "AI_Agents",
"matchType": "neutral",
"competitor": ""
},
{
"rank": 2,
"title": "Why does Google expect us to pay $20/mo for AI Pro when Antigravity locks Gemini 4 Argon behind a $100+ Ultra paywall? Claude and Codex give flagship models for the same $20",
"url": "https://www.reddit.com/r/GoogleGeminiAI/comments/1x5l89z/why_does_google_expect_us_to_pay_20mo_for_ai_pro/",
"snippet": "I honestly don’t understand Google’s product strategy right now. Gemini 4 Argon just dropped, and Google is bragging everywhere about its 77.9% DeepSWE benchmarks and …",
"subreddit": "GoogleGeminiAI",
"matchType": "neutral",
"competitor": ""
},
{
"rank": 3,
"title": "Introducing BRUTAL | A free C# framework that helped RimWorld make its own engine and break free of Unity. Now you can too.",
"url": "https://www.reddit.com/r/gamedev/comments/1x6d2dy/introducing_brutal_a_free_c_framework_that_helped/",
"snippet": "Our industry is rotting from its core, outwards in every direction, and it has been for some time. Driven by greed, driven by a race to the bottom on price. It is my …",
"subreddit": "gamedev",
"matchType": "neutral",
"competitor": ""
},
{
"rank": 4,
"title": "OpenAI researchers might be spending >$4m/day on tokens (at API prices)",
"url": "https://www.abtin.com/blog/2026-09-22-openai-spend.html",
"snippet": " ",
"subreddit": "OpenAI",
"matchType": "brand",
"competitor": ""
}
],
"warning": "Reddit JSON search was blocked; results were read from the public Reddit search feed (search.rss).",
"error": "",
"priority": "stable"
}

API Usage

Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console → Settings → Integrations.

cURL

curl -X POST "https://api.apify.com/v2/acts/taroyamada~ai-visibility-monitor-actor/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "brand": "OpenAI", "brandTerms": [ "openai.com", "openai" ], "competitors": [], "keywords": [ "ai api pricing" ], "searchSources": [ "reddit" ], "requestTimeoutSeconds": 30, "maxResultsPerKeyword": 10, "delivery": "dataset", "datasetMode": "changes_only", "notifyOnNoChange": false, "snapshotKey": "ai-visibility-snapshots", "dryRun": false }'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("taroyamada/ai-visibility-monitor-actor").call(run_input={
"brand": "OpenAI",
"brandTerms": [
"openai.com",
"openai"
],
"competitors": [],
"keywords": [
"ai api pricing"
],
"searchSources": [
"reddit"
],
"requestTimeoutSeconds": 30,
"maxResultsPerKeyword": 10,
"delivery": "dataset",
"datasetMode": "changes_only",
"notifyOnNoChange": false,
"snapshotKey": "ai-visibility-snapshots",
"dryRun": false
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('taroyamada/ai-visibility-monitor-actor').call({
"brand": "OpenAI",
"brandTerms": [
"openai.com",
"openai"
],
"competitors": [],
"keywords": [
"ai api pricing"
],
"searchSources": [
"reddit"
],
"requestTimeoutSeconds": 30,
"maxResultsPerKeyword": 10,
"delivery": "dataset",
"datasetMode": "changes_only",
"notifyOnNoChange": false,
"snapshotKey": "ai-visibility-snapshots",
"dryRun": false
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Tips & Limitations

  • Google is not supported at the moment. Only reddit returns results. Reddit blocks its JSON search from some servers; the Actor then reads the public search feed instead (warning on the row) and may wait about a minute between requests when Reddit rate-limits.
  • Run weekly for trend tracking; daily for competitive launch monitoring.
  • Use webhook delivery to push insights into your BI tools or research Slack.
  • Archive results in Apify Dataset for your own historical trend analysis.
  • Combine with ai-visibility-monitor-actor for AI-era brand surface coverage.
  • Start with a small watchlist, iterate on keyword precision before scaling.

See also (AI bot policy + visibility cluster)

FAQ

What platforms are covered?

Varies by actor — see each actor's input schema for the full source list. Most cover 3–8 major platforms per vertical.

How is data deduplicated across sources?

The actor normalizes entity identifiers (brand name, SKU) before aggregation — cross-source duplicates are merged.

Can I whitelabel the output?

Dataset rows are raw data — build your own presentation layer to whitelabel.

Is the sentiment scoring accurate?

Sentiment uses rule-based + keyword scoring tuned for English. For non-English content, treat scores as directional rather than absolute.

Can I share the dashboard output?

Export from Dataset API into your BI tool (Looker, Metabase, Tableau) for stakeholder-facing dashboards.

Market Intelligence cluster — explore related Apify tools:

Cost

Pay Per Event:

  • AI visibility result row: $0.02 per result row delivered to the dataset (no separate start fee)

Example: 100 delivered rows = 100 × $0.02 = $2.00

Failed rows are not charged

A target that could not be read (blocked source, Google not supported, request error) is not written to the dataset and is not charged. Those rows are saved in the run's key-value store under the record FAILED_ROWS (with the error text), and the run's status message tells you how many there were. Unchanged monitoring runs are also free. This applies to the dataset delivery mode; webhook and email delivery do not write dataset rows.

No subscription required — you only pay for what you use.

⭐ Was this helpful?

If this actor saved you time, please leave a ★ rating on Apify Store. It takes 10 seconds, helps other developers discover it, and keeps updates free.

Bug report or feature request? Open an issue on the Issues tab of this actor.