RuStore App Scraper & Monitor avatar

RuStore App Scraper & Monitor

Pricing

from $10.00 / 1,000 results

Go to Apify Store
RuStore App Scraper & Monitor

RuStore App Scraper & Monitor

Scrape apps from RuStore (Russia's Android app store): ratings, review counts, versions, sizes, prices, developers — plus full review text — and track what changes between runs.

Pricing

from $10.00 / 1,000 results

Rating

0.0

(0)

Developer

Sasha Ebashu

Sasha Ebashu

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

2 months ago

Last modified

Share

Scrape apps from RuStore — Russia's Android app store (VK), preinstalled on every phone sold in the country — and track what changes between runs.

Ratings, review counts, downloads, versions, sizes, prices, developers — plus the full review text, one row per review. ~69,500 apps.

What you get

One row per app:

FieldMeaning
packageName, name, url, descriptionApp identity
rating, ratingCountStar rating and how many ratings it has
downloadsRuStore's own downloads bucket ("40 млн +") — a rounded band, never an exact number
version, fileSizeBytes, updatedAtCurrent version, APK size, when it was last updated
price, priceCurrency, isFreePrice in ₽
developer, developerId, developerUrlPublisher and their RuStore profile
category, contentRatinge.g. SocialNetworkingApplication, 12+
sourceCategoryThe RuStore category the app was discovered in (when using Categories) — e.g. finance, games/free
verifiedRuStore's data-safety moderation badge
icon, screenshots[]Media
reviews[]Optional — the handful of reviews RuStore embeds in the app card (author, rating, date, text)

In Monitor mode every row also gets changeType — new / rating_up / rating_down / reviews_change / version_change / price_up / price_down / delisted / relisted / unchanged — plus previousRating, previousRatingCount, previousVersion, previousPrice, firstSeenAt, lastConfirmedAt and a 30-day rating band.

Delisted apps are reported, not dropped. If an app is pulled from RuStore (its page starts returning 404) you still get a row — delisted: true, changeType: "delisted" — carrying its last known name and rating. An app leaving the store is a signal, not missing data. It is reported once, then stays unchanged until it returns (relisted).

Reviews mode

Turn on Reviews mode and the output becomes one row per review — appName, packageName, author, rating, datePublished, text, plus the app's appRating / totalReviews for context.

The honest limit: RuStore renders exactly the 30 most recent reviews per app and offers no way to get more — no pagination, no "show more", and scrolling loads nothing. So:

AppWhat 30 reviews covers
Yandex Cloud (19 reviews total)its complete history — 2023 → 2026
Толока (57 total)the last 1.5 years
2ГИС (7,571 total)the last 4 days
ВКонтакте (34,800 total)the last ~15 minutes

For most of the catalogue's long tail, 30 is everything there is. For busy apps it is a rolling window — so run Reviews mode with Monitor mode on a schedule: each run emits only reviews it has not seen before, and the dataset accumulates the review stream. (Verified: a second run 60 seconds later returned exactly 1 row — the single new review that had appeared.)

Use it for

  • Review mining — collect reviews per app on a schedule (see Reviews mode).
  • ASO / competitor tracking — watch a rival's rating, review count and release cadence (updatedAt + version_change).
  • Market research — pull a whole RuStore category (finance, games…) and compare ratings, prices and publishers side by side.
  • Release monitoring — get notified when an app ships a new version, changes price, or disappears.

Input

OptionDescription
AppsPackage names (com.vkontakte.android) or full RuStore URLs — both accepted.
CategoriesScrape whole RuStore categories — finance, games, health… Accepts a slug, a slug with a price filter (finance/free, tools/paid — every category except games and tv), or a full category URL including topic pages like /catalog/all/tag-anime-5. Every row is tagged with sourceCategory.
Crawl the cataloguePull apps from RuStore's own sitemap (~69,500 apps).
Catalogue filterOnly apps whose package contains this text — yandex, sberbank, com.vk.
Max apps from catalogue / Max appsKeep a run bounded.
Include reviewsAdd the handful of reviews embedded in each app card (app mode).
Reviews modeOutput one row per review instead of per app — 30 most recent per app. With Monitor mode, only reviews not seen before.
Monitor mode / Only output changesCompare against the previous run; optionally emit only what moved.
Max concurrencyParallel page fetches (default 10).
ProxyApify datacenter proxy (the default) — cheap, no residential needed.

Example

{
"crawlSitemap": true,
"appFilter": "yandex",
"maxAppsFromSitemap": 100,
"monitorMode": true,
"onlyChanges": true
}

Schedule that and each run's dataset is a clean list of every Yandex app whose rating, version or price moved.

Notes & limits

  • A proxy is required. RuStore's antibot (kittenx) challenges some networks — a plain unproxied request can get bounced to a challenge page. The Apify datacenter proxy sails through and is the cheapest option; it is the default.
  • downloads is a bucket, not a count. RuStore only ever publishes rounded bands ("40 млн +"). It is reported verbatim rather than turned into a fake precise number.
  • Unrated apps return rating: null — that is real (nobody has rated them), not a scrape failure.
  • Reviews are capped at the 30 most recent per app — that is RuStore's limit, not the Actor's. There is no pagination to work around it. Apps with ≤30 reviews yield their full history.
  • RuStore's antibot throttles in waves. When it does, some app pages cannot be fetched even after 9 retries. The run never hides this: it warns with the exact count and percentage, names the affected packages, and stores the full list in the run's key-value store under FAILED_APPS — so you can re-run just those later.
  • If you see losses, LOWER "Max concurrency", don't raise it. Measured: concurrency 30 was only ~13% faster than 15 but lost 33 apps instead of 1. The default of 10 is the sweet spot; heavy parallelism makes the antibot throttle harder.
  • Runs stop cleanly before the platform timeout and honour the run's maximum-cost limit, committing what they have.