Mobile App Paywall & In-App Pricing Extractor
Pricing
from $80.00 / 1,000 app paywall & pricing extractions
Mobile App Paywall & In-App Pricing Extractor
Launches real Android 13 mobile sessions across geo-targeted regions to capture onboarding flows, in-app subscription paywalls, trial terms, and XML UI pricing text.
Pricing
from $80.00 / 1,000 app paywall & pricing extractions
Rating
0.0
(0)
Developer
Enigma Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
41 minutes ago
Last modified
Categories
Features
Share
Capture in-app subscription paywalls, free-trial terms, observed IAP prices, and step-by-step onboarding screenshots from real Android 13 sessions. Built by Enigma Labs for mobile growth teams, pricing analysts, competitive-intelligence researchers, and AI Agents (mcp.apify.com).
What does it do?
Many subscription apps only show their plan prices, weekly vs. annual discounts and trial lengths inside native onboarding screens, which store web pages do not expose. This Actor sends a Google Play package_name to a live Android 13 capture worker and returns:
| Capability | Details |
|---|---|
| Native Android 13 session | Fresh Android 13 session per app. country is used for reporting/timezone labelling; prices shown are those Google Play Billing renders for the session (see limitations). |
| Onboarding navigation | Walks welcome prompts (Get Started, Continue, Next, Skip) towards the paywall, without logging in. |
| Price & trial detection | Parses the Android accessibility tree for currency amounts, billing periods (/week, /month, /year) and trial terms. |
| PNG screenshots | Step-by-step screenshots (screen_00.png, ...) saved in the run's Key-Value Store, with the system status bar removed. |
Important limitations (read before buying)
- Store country vs. input country: prices rendered by Google Play Billing follow the store country of the device account. The output reports the prices actually observed;
countrycontrols locale/timezone. - Login walls: apps that require sign-in before showing a paywall are reported as
paywall_detected: false. The Actor never signs in, never starts trials and never purchases. - Live worker availability: live capture runs on a dedicated worker with a curated set of installed apps. When the worker is unavailable, or the requested app is not on the capture device (
worker_status: APP_NOT_AVAILABLE_ON_LIVE_WORKER), you get either a Google Play listing fallback or a status record (seerequire_live) and you are not charged.
How much does it cost? (Pay-Per-Event)
| Event | Price | When it is charged |
|---|---|---|
app_session_start | $0.01 | Once per run, only when the live Android worker actually handled the app |
onboarding_screen_captured | $0.015 | Per screenshot actually stored |
paywall_pricing_extracted | $0.08 | Once, only when a paywall was detected |
Example: 3 screens + paywall found = $0.01 + 3 × $0.015 + $0.08 = $0.135.
$0 is charged for invalid input, live-worker unavailability, and the Google Play listing fallback.
Input
package_name(string, required): Google Play package ID (?id=<package_name>in the Play URL).country(select, defaultUS): locale/timezone of the device session.max_screens(integer 1–12, default 4): onboarding screens to capture.require_live(boolean, default false): if true, skip the Google Play listing fallback when the live worker is unavailable.
{ "package_name": "com.duolingo", "country": "US", "max_screens": 5, "require_live": true }
Output
{"package_name": "com.duolingo","country": "US","device_timezone": "America/New_York","capture_mode": "live_android_13","worker_status": "LIVE_ANDROID_13_WORKER","paywall_detected": true,"all_detected_prices": ["14-day free trial", "$12.99 / month", "$83.99 / year"],"price_granularity": "in_app_paywall_ui","screens": [{ "step": 0, "screenshot_kvs_key": "screen_00.png", "is_paywall": false, "detected_prices": [], "cta_buttons": ["GET STARTED"] },{ "step": 1, "screenshot_kvs_key": "screen_01.png", "is_paywall": true, "detected_prices": ["$12.99 / month"], "cta_buttons": ["START FREE TRIAL"] }],"billing": { "requests": 1, "charged_events": 3, "charge_failures": 0, "stopped_early": false }}
capture_mode values:
live_android_13: real in-app capture (charged as above).google_play_listing_fallback: Play store-listing price range per item only (price_granularity: store_listing_range_per_item), not per-plan prices. $0.live_required_unavailable:require_live=trueand live worker unavailable. $0.invalid_input: malformed package name. $0.
(Example values above are illustrative.)
Python / MCP
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_API_TOKEN")run = client.actor("enigmalabs/mobile-paywall-extractor").call(run_input={"package_name": "com.duolingo", "country": "US", "max_screens": 5, "require_live": True})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["capture_mode"], item["paywall_detected"], item["all_detected_prices"])
Screenshots: client.key_value_store(run["defaultKeyValueStoreId"]).get_record("screen_00.png").
FAQ
- Does it bypass logins, CAPTCHAs or paid gates? No. It only observes screens shown to a new, signed-out user.
- Why did I get no prices? The app may require login before its paywall, use a web checkout, or show no paywall during onboarding.
Independent UI/UX and pricing research tool by Enigma Labs. App names and package identifiers belong to their respective owners.