# Reddit Competitor Switching Signals Feed (`getascraper/reddit-competitor-switch-migration-feed`) Actor

Find explicit product-switch statements in public Reddit discussions. Get from-product, to-product, exact quotes, source links, and NEW or KNOWN status for competitive research in Google Sheets, Slack, Airtable, or n8n.

- **URL**: https://apify.com/getascraper/reddit-competitor-switch-migration-feed.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Social media, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.65 / 1,000 switch signals

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🔁 Reddit Competitor Switching Signals Feed

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr>
<td colspan="5" style="padding:10px 14px;background:#FF4500;border:1px solid #FFB49A;border-radius:8px 8px 0 0">
<span style="color:#1C1917;font-size:14px;font-weight:800;letter-spacing:0.5px">REDDIT MARKET SIGNALS SUITE</span><br>
<span style="color:#1C1917;font-size:12px">Five focused monitors for feedback, pricing evidence, switch signals, activity cadence, and announcements.</span>
</td>
</tr>
<tr>
<td style="padding:11px 10px;width:20%;background:#FFFFFF;border:1px solid #FFB49A;border-top:none;border-radius:0 0 0 8px;vertical-align:top">
<a href="https://apify.com/getascraper/reddit-feature-request-regression-feed" style="color:#1C1917;text-decoration:none;font-weight:800;font-size:12px">Feedback clusters</a><br>
<span style="color:#57534E;font-size:12px">Recurring feature-request themes</span>
</td>
<td style="padding:11px 10px;width:20%;background:#FFFFFF;border:1px solid #FFB49A;border-top:none;border-left:none;vertical-align:top">
<a href="https://apify.com/getascraper/reddit-willingness-to-pay-evidence-miner" style="color:#1C1917;text-decoration:none;font-weight:800;font-size:12px">Pricing evidence</a><br>
<span style="color:#57534E;font-size:12px">Prices, budgets, and paid workarounds</span>
</td>
<td style="padding:11px 10px;width:20%;background:#FFF4F0;border:1px solid #FFB49A;border-top:none;border-left:none;vertical-align:top">
<a href="https://apify.com/getascraper/reddit-competitor-switch-migration-feed" style="color:#B83200;text-decoration:none;font-weight:800;font-size:12px">Switch signals</a><br>
<span style="color:#B83200;font-size:12px;font-weight:700">&#10148; You are here</span>
</td>
<td style="padding:11px 10px;width:20%;background:#FFFFFF;border:1px solid #FFB49A;border-top:none;border-left:none;vertical-align:top">
<a href="https://apify.com/getascraper/reddit-subreddit-posting-cadence-monitor" style="color:#1C1917;text-decoration:none;font-weight:800;font-size:12px">Activity cadence</a><br>
<span style="color:#57534E;font-size:12px">Recent posting-gap snapshots</span>
</td>
<td style="padding:11px 10px;width:20%;background:#FFFFFF;border:1px solid #FFB49A;border-top:none;border-left:none;border-radius:0 0 8px 0;vertical-align:top">
<a href="https://apify.com/getascraper/reddit-community-announcement-keyword-monitor" style="color:#1C1917;text-decoration:none;font-weight:800;font-size:12px">Announcements</a><br>
<span style="color:#57534E;font-size:12px">Keyword-matched community posts</span>
</td>
</tr>
</tbody>
</table>

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#FFF4F0;border:1px solid #FFB49A;border-top:4px solid #B83200;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Find people who explicitly say they moved from one product to another.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Turn recent public Reddit discussions into source-linked competitor switching signals for product marketing and competitive research.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FFB49A;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B83200">↗️ Clear direction</span><br>
<span style="font-size:12px;color:#57534E">See the stated from-product and to-product</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FFB49A;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B83200">💬 Exact evidence</span><br>
<span style="font-size:12px;color:#57534E">Review the original switch statement</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FFB49A;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B83200">🔗 Source links</span><br>
<span style="font-size:12px;color:#57534E">Open the public discussion for context</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FFB49A;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#B83200">🔔 Low-noise repeats</span><br>
<span style="font-size:12px;color:#57534E">Separate newly found switches from known ones</span>
</td>
</tr>
</table>

Use this Reddit competitor monitoring Actor to collect explicit migration evidence. It does not infer switch reasons, sentiment, or purchase intent.

### 🔍 What this Actor does

Provide two to twenty product names and one public Reddit source. The Actor returns statements with an explicit switch direction.

Supported wording includes statements such as moved from X to Y, switched from X to Y, migrated from X to Y, or replaced X with Y.

Each result includes the configured product names, exact excerpt, public source URL, source type, publication time, community, and repeat-run status.

<table width="100%"><tr>
<td style="padding:12px 18px;background:#FFF4F0;border-left:4px solid #B83200">
<span style="font-size:15px;color:#1C1917">&#9889; <b>Collect explicit migration evidence without a vague intent score.</b> Use the source link to judge the surrounding context yourself.</span>
</td>
</tr></table>

### 👥 Who uses it

- Product marketers tracking competitor switching signals
- Competitive intelligence teams building migration evidence libraries
- Sales enablement teams collecting source-linked customer language
- Founders studying alternatives in a focused product category
- Agencies sending new switch evidence to Slack, Airtable, or a CRM

### 🚀 How to use it

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#FFF4F0;border:1px solid #FFB49A;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#B83200;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Choose a source</span><br>
<span style="font-size:12px;color:#57534E">Enter one subreddit name or public post URL.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF4F0;border:1px solid #FFB49A;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#B83200;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Name the products</span><br>
<span style="font-size:12px;color:#57534E">Add the exact competitor names you want recognized.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FFF4F0;border:1px solid #FFB49A;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#B83200;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Review and route</span><br>
<span style="font-size:12px;color:#57534E">Export exact switch evidence or schedule repeat checks.</span>
</td>
</tr>
</table>

### 📥 Input

| Field        | Type    | Required | Description                                                |
| ------------ | ------- | -------- | ---------------------------------------------------------- |
| `sourceType` | String  | No       | Choose `subreddit` or `postUrl`. The default is `postUrl`. |
| `source`     | String  | Yes      | One subreddit name or one public Reddit post URL.          |
| `products`   | Array   | Yes      | Provide 2 to 20 exact product names to recognize.          |
| `limit`      | Integer | No       | Inspect 1 to 25 recent entries. The default is 25.         |

The Actor needs no Reddit login, account token, proxy setting, or private source access.

### 📤 Data you receive

| Field         | Type   | Description                                                  |
| ------------- | ------ | ------------------------------------------------------------ |
| `type`        | String | Record type, returned as `PRODUCT_MIGRATION`.                |
| `status`      | String | `NEW` on first discovery or `KNOWN` on a later matching run. |
| `fromProduct` | String | Configured product the source says it left.                  |
| `toProduct`   | String | Configured product the source says it adopted.               |
| `excerpt`     | String | Exact source text containing the migration statement.        |
| `sourceUrl`   | String | Public link to the supporting Reddit post or comment.        |
| `sourceKind`  | String | Whether the evidence came from a post or comment.            |
| `publishedAt` | String | Publication time when available.                             |
| `subreddit`   | String | Source community name when available.                        |

A verified cloud run found this exact source sentence:

> “Recently moved from Cursor to Windsurf.”

The result identified `Cursor` as `fromProduct` and `Windsurf` as `toProduct`, with the [public source link](https://www.reddit.com/r/cursor/comments/1o8o9dt/differences_between_cursor_and_windsurf/njy7od6/).

Download results as JSON, CSV, Excel, XML, or HTML from the Apify dataset.

### 🔄 Repeat runs and scheduling

Run the same source and product list again to distinguish `NEW` switches from `KNOWN` switches. This keeps recurring alerts focused.

Use Apify schedules for repeat competitor monitoring. A five-minute or longer interval is recommended because Reddit may temporarily limit frequent requests.

### ⚠️ Coverage and responsible use

- Results represent a bounded recent source window, not complete Reddit history.
- Only explicit configured-product transitions are returned.
- The Actor does not explain why someone switched unless the exact excerpt says so.
- A valid empty result means no explicit switch matched the configured products in the observed window.
- Deleted, private, restricted, or unavailable content is not collected.
- Failed or incomplete runs do not advance the saved comparison baseline.
- Commercial use requires the permissions and policy review applicable to your use case.

### 💰 Pricing

Your cost follows the Apify platform usage shown for each run. Each batch checks one bounded source window to keep resource use predictable.

Review the current run estimate in Apify before starting. The Actor has no external subscription or credential requirement.

### ⭐ Enjoying Reddit Competitor Switching Signals Feed?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#FFF4F0;border:1px solid #FFB49A;border-left:5px solid #B83200;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Help more product teams find explicit competitor migration evidence.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps competitive researchers find this Actor. Your feedback guides future improvements.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#B83200;border:1px solid #FFB49A;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/reddit-competitor-switch-migration-feed/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 🔌 Integrations

Send results to Slack, Microsoft Teams, Google Sheets, Airtable, a CRM, n8n, Make, Zapier, or another Apify integration.

Common workflows include competitor battlecards, migration alerts, win-loss research, and source-linked customer language libraries.

### ❓ FAQ

**Does this Actor score buying intent or sentiment?**

No. It returns explicit configured-product switch statements and their source links.

**Does it infer why a user changed products?**

No. Review the exact excerpt and source context before recording a reason.

**Can it discover every alternative product automatically?**

No. You provide the product names that the Actor should recognize.

**Can I monitor a single discussion?**

Yes. Choose `postUrl` and provide one public Reddit post URL.

**What happens when Reddit limits a request?**

The run reports the problem and protects the previous comparison baseline.

### 🔗 Other actors

- [Hacker News Job Scraper: Who is Hiring Posts](https://apify.com/getascraper/hn-hiring-scraper) ↗ - Collect structured hiring posts for market and talent research.
- [Serchen Scraper: B2B Software Reviews & Directory Leads](https://apify.com/getascraper/serchen-scraper) ↗ - Extract B2B software reviews and vendor listings.
- [Quora Q\&A Change Monitor](https://apify.com/getascraper/quora-qna-change-monitor) ↗ - Track changes to public questions and answers.
- [Threads Monitor: Public Post Changes](https://apify.com/getascraper/threads-mention-delta-monitor) ↗ - Monitor public post changes and mention evidence.

# Actor input Schema

## `sourceType` (type: `string`):

Choose a subreddit name or a public Reddit post URL.

## `source` (type: `string`):

Enter a subreddit name when using Subreddit, or a public Reddit post URL when using Post URL.

## `products` (type: `array`):

Two to twenty product names to recognize in explicit switch statements.

## `limit` (type: `integer`):

Number of recent feed entries to check, from 1 to 25.

## Actor input object example

```json
{
  "sourceType": "postUrl",
  "source": "https://www.reddit.com/r/cursor/comments/1o8o9dt/differences_between_cursor_and_windsurf/",
  "products": [
    "Cursor",
    "Windsurf",
    "RooCode"
  ],
  "limit": 25
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "sourceType": "postUrl",
    "source": "https://www.reddit.com/r/cursor/comments/1o8o9dt/differences_between_cursor_and_windsurf/",
    "products": [
        "Cursor",
        "Windsurf",
        "RooCode"
    ],
    "limit": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/reddit-competitor-switch-migration-feed").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "sourceType": "postUrl",
    "source": "https://www.reddit.com/r/cursor/comments/1o8o9dt/differences_between_cursor_and_windsurf/",
    "products": [
        "Cursor",
        "Windsurf",
        "RooCode",
    ],
    "limit": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/reddit-competitor-switch-migration-feed").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sourceType": "postUrl",
  "source": "https://www.reddit.com/r/cursor/comments/1o8o9dt/differences_between_cursor_and_windsurf/",
  "products": [
    "Cursor",
    "Windsurf",
    "RooCode"
  ],
  "limit": 25
}' |
apify call getascraper/reddit-competitor-switch-migration-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/reddit-competitor-switch-migration-feed"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CtbV6aweNI4kOjGm7/builds/zmbHRPKYkepLnm0Gf/openapi.json
