SaaS Churn Signal 📉 (competitor win-back intel) avatar

SaaS Churn Signal 📉 (competitor win-back intel)

Pricing

from $35.00 / 1,000 competitor signals

Go to Apify Store
SaaS Churn Signal 📉 (competitor win-back intel)

SaaS Churn Signal 📉 (competitor win-back intel)

Find where a competitor's customers are unhappy and what that competitor now charges. Negative-review themes (price, support, reliability, missing features, migration) from Capterra, the App Store and Google Play, joined to live pricing-page changes, one signal row per competitor.

Pricing

from $35.00 / 1,000 competitor signals

Rating

0.0

(0)

Developer

Tagada Data

Tagada Data

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Share

SaaS Churn Signal

Find where a competitor's customers are unhappy, and what that competitor now charges. Point this actor at a competitor and it pulls their recent reviews from Capterra, the Apple App Store and Google Play, sorts the negative ones into the five reasons customers actually leave a SaaS product (price, support, reliability, missing features, migration), and joins that to their live pricing plans and any price change since your last run. You get one signal row per competitor: the churn themes ranked, sample quotes, review volume and its trend, the current plans and the last price move. It is a win-back and displacement brief, not a review dump.

No LLM, no API key, no browser. The classification is a transparent keyword heuristic, so it costs nothing per review and gives the same answer every time.

Who uses this

  • Competitive intelligence and product marketing teams building displacement battlecards: which pain points to lead with, and whether the rival just raised prices.
  • Sales teams running win-back and competitive deals who want the specific complaint themes and quotes to use against an incumbent.
  • Founders and product managers watching where a rival's customers are frustrated, and how the rival is repricing in response.

What you get

One signal row per competitor, plus the underlying review and pricing rows behind it, all in the same dataset (tell them apart by recordType).

signal row

FieldDescription
competitorThe competitor this signal is about
reviewVolume / reviewsInWindowReviews pulled, and how many fall in the trend window
negativeReviews / negativeShareCount and share of negative (1-2 star) reviews
averageRating / averageRatingNegativeMean rating over all, and over the negative tail
volumeTrendrecent vs prior window counts, direction (up/down/flat) and pctChange
topChurnThemesRanked themes, each with negativeReviews, share and up to three sample quotes
churnThemeCountsRaw count per theme (price, support, reliability, missing-feature, migration)
currentPlansThe competitor's current plan names and prices
lastPriceChangeThe most recent structured pricing change, or null if none since last run
sourcesOk / sourcesFailed / partial / statusExactly which sources answered, and a plain-language status line

review row

Each underlying review with source, rating, negative, its matched churnThemes and primaryTheme, the date, text and a link back.

pricing row

The pricing snapshot: plans (name, price, period, per-user, features), priceTokens, parseStatus, whether it is the isBaseline capture, and priceChanges versus the previous run.

How the churn themes work

Each negative review's text is scanned for the language customers use when they are about to leave:

  • price — expensive, overpriced, price increase, billing, value for money
  • support — unresponsive support, no reply, slow response, poor service
  • reliability — bugs, crashes, downtime, slow, sync errors, data loss
  • missing-feature — lacks, no option to, limited, cannot, wish it had
  • migration — switching, cancelling, exporting data, looking at alternatives

A review can match several themes, and one that matches none is counted under other. A review counts as negative at 1-2 stars. The themes, volume and trend on the signal row are always computed from every review pulled, even when you choose to only keep the negative ones in the output.

Input examples

Watch one competitor across every source (the prefill):

{
"competitors": [
{
"name": "Slack",
"capterraUrl": "https://www.capterra.com/p/135003/Slack/reviews/",
"appStoreId": "618783545",
"playAppId": "com.Slack",
"pricingUrl": "https://slack.com/pricing"
}
]
}

Compare several competitors, reviews only, over a 90-day trend window:

{
"competitors": [
{ "name": "Asana", "capterraUrl": "https://www.capterra.com/p/136446/Asana/reviews/", "pricingUrl": "https://asana.com/pricing" },
{ "name": "Monday.com", "playAppId": "com.monday.monday", "pricingUrl": "https://monday.com/pricing" }
],
"reviewsPerSource": 100,
"negativeOnly": true,
"sinceDays": 90
}

You do not need all four handles. Supply the sources you have, and each one you supply is pulled and joined.

Tracking price changes over time

The pricing side remembers each pricing page's last state between runs. The first time it sees a page it records a baseline; every run after that reports what changed (a price moved, a plan appeared or disappeared, a feature was added to a tier) on the pricing row and as lastPriceChange on the signal. Schedule the actor and you get a running churn-and-pricing feed on your competitors.

Pricing

Pay per event, platform usage included, no subscription. Higher Apify plans get automatic discounts. The valued unit is the joined signal per competitor; the underlying rows are billed cheaply.

EventPriceWhen
Run started$0.001Flat, once per run
Competitor signal$0.05Per competitor summary produced (the joined judgement)
Review scraped$2.00 per 1,000Per underlying review row kept
Pricing snapshot$0.01Per pricing page captured this run

A source that is blocked or empty is never billed; the signal row says which sources answered.

FAQ

Does it use AI to read the reviews? No. Themes come from a transparent keyword heuristic, which is why it is free per review and deterministic. It is deliberately simple: a review can be tagged with several themes, and a genuinely off-topic complaint may land under other.

What counts as a negative review? One to two stars. The signal's themes are drawn from those, while volume, trend and average rating use every review pulled.

Do I need an API key or a login? No. Every source is read from its own public endpoint.

How far back does it read? As far as "Max reviews per source" allows, newest first. The trend window is a separate setting and only controls the recency comparison on the signal row.

A source returned nothing, did the run fail? No. If a source is blocked or has no reviews, the signal row still ships with an explicit status saying which source did not answer, so a partial answer never looks like a complete one.

Can I feed it a list from another scraper? Yes. Competitor entries are matched by common field names (company, name, packageName, pricing and so on), so piping another dataset in usually works without reshaping it.


Competitor churn analysis, SaaS win-back intelligence, negative review themes, Capterra reviews, App Store reviews, Google Play reviews, competitor pricing changes, displacement battlecards, churn risk signals, competitive intelligence, customer complaint analysis, review sentiment by theme.