App Store & Google Play monitoring · built in Rust

Know what your
reviews mean.

Every review across the App Store and Google Play, tagged by theme and severity and boiled down to one line of English — whatever language it was written in. Only the ones that matter reach you, delivered exactly once to a webhook today, Slack next — each event carries a stable event_id, so a retry can never become a duplicate. Not another dashboard to log into.

How it works

Three moving parts. None of them yours.

01 — poll

We watch both stores

We poll your apps on the App Store and Google Play, on a regular cadence. No SDK, no code in your app.

02 — read

We read every one

Each review is normalized into one schema, then tagged by theme and severity and boiled down to a one-line English summary — so you can act on it without reading it. Same shape, whichever store it came from.

03 — deliver

Where you already work

You get the event — delivered exactly once — to a webhook or your automation tool today, native Slack next. No new tab, no new login.

Event catalog

The product's vocabulary.

Every signal Rustle emits has a name. Subscribe to the ones you care about; filter them down to the noise floor you can live with.

A new review lands on either store — normalized into one schema and tagged with sentiment, theme, severity, and a one-line English summary. Filter by star rating, sentiment, or theme.
Fires when your aggregate rating falls by a delta you define.
review.reply_changedComing soon
The developer reply on a review is added or edited — so you can track how support lands, without re-firing the original review.
review.flagged_keywordComing soon
A review hits a keyword cluster you watch — crash, refund, scam, churn. A fast, literal pre-filter that fires the moment the word shows up.

More events are on the way — a public roadmap is coming soon.

Beyond single signals

It's not just signals. It's patterns.

Rustle watches the shape of your reviews over time and pushes the turning points — so a trend reaches you as an event, not as something you notice by scrolling a dashboard.

Requests for the same feature cross a threshold in a short window — grouped across languages, so “dark mode” and « mode sombre » count as one.
Reports of a bug or theme spike against their baseline — with a version-aware variant that catches a bad release: v3.2 crashes 6× more than v3.1.
A slow downward slide in your aggregate rating — EWMA-smoothed to catch what rating.dropped's delta misses, firing once per downtrend and re-arming after it recovers.

Where it lands

It goes where you already are.

One event, any destination. Fan a single trigger out to as many as you like.

LiveWebhook
Coming soonSlack
Coming soonDiscord
Coming soonZapier
Coming soonMake
Coming soonn8n
Coming soonGoogle Sheets
Coming soonEmail
Coming soonMicrosoft Teams
Coming soonTelegram
Coming soonNotion
Coming soonLinear / Jira

Built for developers

One normalized schema. Plain JSON.

No proprietary client required. Register a webhook in three lines and start receiving events. The same payload shape, whichever store it came from.

review.created · payload
{
  "event_type": "review.created",
  "store": "apple",
  "app_id": "com.acme.notes",
  "review_id": "10982334771",
  "rating": 2,
  "title": null,
  "body": "Crashes on launch since 4.2.",
  "author": "tess_w",
  "app_version": "4.2.0",
  "country": "us",
  "occurred_at": "2026-06-02T14:08:11Z",
  "observed_at": "2026-06-02T14:09:03Z",
  "enrichment": {
    "sentiment": "negative",
    "themes": ["stability_crash", "update_regression"],
    "severity": "high",
    "is_bug_report": true,
    "summary_en": "Crashes on launch since the 4.2 update; unusable."
  }
  // + event_id, occurrence_id, fingerprint, content_hash, schema_version
}
register a webhook
# point an endpoint at any event
curl -X POST https://api.rustle.cloud/v1/hooks \
  -H "Authorization: Bearer $RUSTLE_KEY" \
  -d '{"event_type":"review.created","url":"https://…"}'

# → 201 Created
# { "hook_id": "hk_8f2a", "status": "armed" }

One normalized schema across both stores — you write the handler once.

Explore

Everything around the event.

The pieces that turn a feed of events into a workflow — docs, a console, and one-click automation. All in the works.

Why not just script it

You could. For about a week.

The weekend hackcron + google-play-scraper
  • ~Fires twice when a poll overlaps, or drops events when the box sleeps.
  • ~Two code paths — one per store — that drift out of sync.
  • ~The same review re-notifies every run until you build dedupe.
  • ~A store tweaks its markup and your parser breaks silently on a Saturday.
  • ~Reviews land in a dozen languages — and you'd read every one to find the bug or feature request that matters.
Rustlethe boring-correct version
  • Exactly-once delivery — never double-fires, never silently dies.
  • Cross-store normalization — one schema, no per-store branching.
  • Triaged for you — sentiment, theme, and severity on every review, summarized in English whatever the language.
  • Parser breakage handled — when a store shifts its markup, we fix it, not you.
  • Patterns, pushed — demand surges and bad-release spikes arrive as events, not a dashboard you have to check.

Anyone can fetch the review. Knowing what it means — reliably — is the product.

Pricing

Indie-friendly. Two plans, that's it.

Enriched review & rating events, free. Patterns and more apps on Indie. Billing opens with the console — nothing to pay today.

Free
€0$0/ mo

1 app

  • 1 country
  • Enriched review & rating events
Supported countries (16)
  • United States
  • United Kingdom
  • Canada
  • Australia
  • Ireland
  • France
  • Germany
  • Spain
  • Italy
  • Netherlands
  • Sweden
  • Brazil
  • Mexico
  • Japan
  • South Korea
  • India