Skip to main content
RTILA Marketplace

Turn a list of AppSumo product URLs into a paginated dataset of reviews, ratings, reviewer flags and founder replies

Collect AppSumo review text, ratings, dates, reviewer flags and founder replies from every review page.

Market Research Intermediate Experimental v1.0.0 Updated Updated 2026-10-06 11 min read
Download
  • Windows x86_64

    BOT_appsumo-product-reviews-scraper.exe

    64.5 MB

    Download
  • macOS Apple Silicon chmod +x

    BOT_appsumo-product-reviews-scraper.sh

    58.0 MB

    Download
  • macOS Intel chmod +x

    BOT_appsumo-product-reviews-scraper.sh

    64.9 MB

    Download
  • Linux x86_64 chmod +x

    BOT_appsumo-product-reviews-scraper.sh

    82.3 MB

    Download

Do not rename the downloaded file - the filename carries the bot's configuration id.

This tab summarises what the bot does, what it costs, the technical requirements it places on your machine, and how the author is credited - the starting point before you download anything.

Key facts

What it does
Collect AppSumo review text, ratings, dates, reviewer flags and founder replies from every review page.
What it outputs
BOT_appsumo-product-reviews-scraper.exe
Difficulty
intermediate
Platforms
windows, macos, macos_intel, linux
Estimated run time
5-60 minutes depending on how many products are queued and how many review pages each has
Internet at launch
Required
On this page

Overview

The AppSumo Product Reviews Scraper is an AppSumo reviews scraper: a standalone desktop bot that takes a list of AppSumo product URLs, normalizes each one to the review tab, walks every paginated review page through to the last, and extracts thirty-three fields per review into the reviews dataset. Where the sibling catalog bot reads deal cards, this one goes into the review stream itself - the full review body, the star rating, the displayed and ISO-normalised dates, the reviewer’s username and verification badges, the AppSumo Plus membership flag, any founder reply, and the helpful and share counts - across many products in a single run.

This listing is not affiliated with or endorsed by AppSumo. The selectors target AppSumo’s current public review-card markup and will need updating when that markup changes - when it does, a run ends with empty fields or zero rows rather than invented ones.

What does the AppSumo Product Reviews Scraper do?

The run is built for scale across products and depth within each. You supply product_urls - a required list variable, one AppSumo product URL per entry. The configuration ships with a single example product URL as its default; replace it with your own list before a real run. The engine fans the list out into its URL queue, one worker task per product, so a dozen products become a dozen independent collection passes. Each pass is self-normalising: it accepts any AppSumo product URL shape - with or without the reviews path, with or without a trailing slash or query string - and rewrites it to the canonical review tab at page one before collecting.

Within a product the bot paginates. It first reads AppSumo’s own pagination controls to discover the last page number, then loops from page one up to that last page - bounded by the optional max_pages_per_product safety cap - extracting the reviews dataset on every page. Because review pages can overlap and re-render, the dataset deduplicates on the combination of review_id, review_text and reviewer_username, and declares review_id and review_text as required fields, so a card that never rendered its body is logged rather than silently trusted.

Because everything runs on your own machine, your research footprint stays yours: which products you audit, which competitors you benchmark, which complaint themes you mine never passes through a third-party service’s dashboard or logs.

Who uses an AppSumo reviews scraper?

The voice-of-customer researcher asks “what do AppSumo buyers actually praise and complain about across this category?” and needs the full review_text plus review_rating for every review, not a sample. The SaaS founder launching on AppSumo asks “which recurring defects show up in one-star reviews of comparable products, and did those founders respond?” and needs review_rating, review_text and has_founder_reply side by side. The competitive analyst asks “how responsive is the competition to negative reviews, and how fast do they reply?” and needs founder_reply_date_iso measured against review_date_iso. The agency building deal-market datasets for clients asks “can I hand over a dated, deduplicated, structured review file per product?” and needs exactly the reviews export. Each of them needs a defensible artifact they produced themselves rather than a screenshot.

How does an AppSumo review run work, step by step?

Every command in the run links to its reference page. The pass opens on the queued product URL. First, execute_script reads the live location into source_url, and a second execute_script parses the product slug out of the path into product_slug. Third, goto navigates to the canonical AppSumo review tab for that slug at page one. Fourth, wait_for_selector blocks - up to 45 seconds - until either the page heading or the first review card renders, so extraction never races the page. Fifth, a third execute_script scans the pagination links - any whose accessible label reads “Go to page” followed by a number - and returns the highest into last_page. Sixth, set_variable seeds page at one and extract_data pulls page one’s reviews. Finally a while loop continues while the current page is below both last_page and the max_pages_per_product cap: each iteration increments page, re-navigates to that numbered review page, waits for a review card, and extracts again. This release sets no fixed export filename, so rows land in the launcher’s local results store and you export them from the results view; nothing is uploaded anywhere except the configuration fetch and download telemetry listed on this page.

What does the output look like?

The table mirrors the published sample row (fourteen of the thirty-three fields - the dataset carries the rest). Sample values are illustrative placeholders that show the shape of a real row:

product_slugreview_idreview_titlereview_textreview_ratingreview_date_isoreviewer_usernameis_verified_buyeris_plus_memberhas_founder_replyfounder_reply_texthelpful_countscraped_page_numberreview_position_on_page
flowdesk-pro184207Exactly what my calendar workflow neededSet it up in an afternoon and it replaced three manual steps.52026-03-04dana.k101Thank you Dana - glad it saved you time!1211

product_slug and source_url tie every row back to its AppSumo product - the slug parsed from the path and the original queued URL captured before normalisation. scraped_page_url is the exact review page the row was read from, scraped_page_number is the pagination number parsed out of it (defaulting to 1), and review_position_on_page is the 1-based position of the card within that page.

review_id is the numeric identifier extracted from the review’s own permalink and a required field; review_url and review_slug keep the full permalink and its slug. review_title is the headline and review_text is the full body, whitespace-collapsed and trimmed, also a required field. review_text_length is the character count of that body, computed by a small script transform - handy for filtering thin or empty reviews.

review_rating_raw keeps AppSumo’s star accessibility label verbatim (the text ending in ” stars”) and review_rating is the numeric value cast to a float with a null fallback. review_date is the displayed date string, review_date_iso is that date normalised to yyyy-mm-dd by a parser with a month-name fallback (empty when unparseable), and review_meta_row_text is the whole collapsed meta line for auditing.

reviewer_username, reviewer_profile_url and reviewer_avatar_url identify who wrote the review - personal data, handled accordingly. is_verified_buyer and is_plus_member are count fields (0 when absent) for the verified-purchase check icon and the AppSumo Plus membership badge; reviewer_verified_label captures the verified wording, reviewer_member_since the “Member since” month and year, and reviewer_badges_text the collapsed badge row.

has_founder_reply is a count flag for a creator response; when one is present, founder_reply_label, founder_username, founder_avatar_url, founder_reply_date and founder_reply_date_iso describe it and founder_reply_text carries the response body.

helpful_count and review_share_count are the engagement numbers parsed from the card, both cast to integers defaulting to 0.

Can an AppSumo review scraper capture founder replies?

Yes - and it is one of the more useful columns here. A creator response is captured as a flag plus its full detail: has_founder_reply tells you a reply exists, and founder_username, founder_reply_text, founder_reply_date and founder_reply_date_iso tell you who replied, what they said and when. The analytical payoff is latency: subtract review_date_iso from founder_reply_date_iso and you have a reply-time per review, which becomes a responsiveness benchmark when you compare how quickly AppSumo vendors answer their one-star reviews against their five-star ones - directly useful if you are planning your own launch’s review strategy. What the bot does not do is interpret any of it - there is no sentiment score, no topic tag, no translation. It hands you the raw text and the dates; the analysis is your step.

How does reviewer identity and verification data work?

Each review row carries who wrote it and how AppSumo labels them. reviewer_username, reviewer_profile_url and reviewer_avatar_url are the identity fields; is_verified_buyer counts the verified-purchase check icon and is_plus_member counts the AppSumo Plus badge, so both read 0 when absent and 1 or more when present. reviewer_verified_label keeps the verified wording, reviewer_member_since parses the “Member since” month and year, and reviewer_badges_text collapses the whole badge row for auditing. Because these fields identify real people, this listing is flagged piiHandled true - treat them as personal data, with the lawful-basis and takedown duties that follow.

How does it compare to hosted AppSumo review services?

Reading reviews by hand produces a handful of rows an hour, no consistency, and nothing you can diff next month. Hosted robot and actor marketplaces do list AppSumo review collectors, but the structure is the opposite of this bot: they charge per result or per month, the review text and reviewer identities land in their cloud under their retention terms, and your audit history - which products, which competitors - lives on their servers. Here the marginal cost of a deeper back-catalog is your own time and bandwidth, the personal data stays on your disk under your control, and the workflow configuration is yours to keep, modify and re-run. The trade is real: no dashboards, no built-in sentiment analysis, no scheduling, no cloud-side retry. You get an artifact and a workflow you own outright.

How do you set it up on Windows, macOS and Linux?

Download the launcher for your operating system from this page. On Windows, run the downloaded .exe directly - there is no installation step; SmartScreen may ask for confirmation on first launch, so verify the published checksum, then choose More info and Run anyway. On macOS, two launchers are published - pick the one matching your machine’s chip (Apple menu, About This Mac: Apple Silicon or Intel) - then make it executable with chmod +x, clear the Gatekeeper quarantine with xattr -d com.apple.quarantine /path/to/BOT_appsumo-product-reviews-scraper.sh and launch. On Linux, chmod +x ./BOT_appsumo-product-reviews-scraper.sh then ./BOT_appsumo-product-reviews-scraper.sh. At first run the launcher asks for the product_urls list - one AppSumo product URL per line, replacing the shipped example - and the optional max_pages_per_product cap, then starts the run. Keep product_urls a list: a single string collapses the fan-out. To repeat an audit on a cadence, schedule the launcher with your OS scheduler (Task Scheduler, cron or launchd).

What do I check when a run returns zero rows?

Work in order. Zero rows: did the review page render in an ordinary browser, or did a consent wall, region lock or challenge greet the fresh session - the run waits up to 45 seconds for a heading or a review card, and neither appearing means the page never loaded. Only page one collected for every product: the pagination-label scan most likely stopped at 1, so last_page read 1 and the while loop never advanced - check one product by hand against its real page count on appsumo.com. A single product collected when you queued many: product_urls was passed as a string instead of an array, collapsing the fan-out. Rows present but a column empty across every row: that field’s selector most likely changed in an AppSumo redesign; check one review card by hand. Empty rating or ISO date on scattered rows: completely normal - the casts and date parser fall back to null or empty rather than failing the row. The contract is that failure is loud - empty values and zero rows, never fabricated data.

What are the bot’s limits?

It reads AppSumo review pages only: no product specifications, prices, plan tiers or vendor data (the sibling AppSumo Product Catalog Scraper covers the deal-card side), and no photos beyond reviewer and founder avatars. It ships without sentiment scoring, topic tagging or translation - the review text is raw and the analysis is yours. It has no proxy rotation or CAPTCHA solving enabled, so if a challenge stops the run, the run stops; nothing bypasses it. Pagination is bounded by the labels it recognises and by max_pages_per_product, so an AppSumo redesign of the pagination controls can truncate depth silently - which is why the page-count check above matters. It is a snapshotter, not a monitor - nothing re-runs, diffs or alerts on its own. Deduplication applies within a run on the review id, text and username triple; merging across runs is your step.

What is responsible AppSumo review collection?

This bot crosses into personal data by design: review bodies, usernames, profile links and avatars identify people, so establish a lawful basis under GDPR, UK GDPR or your local equivalent before storing or analysing the output, and honour takedown and opt-out requests immediately and permanently. Never republish reviewer identities, and never use the output for spam or for profiling that harms individuals. Review AppSumo’s terms of service with open eyes - automated collection may conflict with them, and the decision to run is yours to own. Keep request volume at what a patient human could sustain; the per-page waits and the max_pages_per_product cap already pace the run that way. Date every snapshot, and if you republish derived analysis, do so in aggregate and in ways AppSumo permits. This bot is an independent tool, not affiliated with or endorsed by AppSumo.

#appsumo#product-reviews#review-analysis#voice-of-customer#market-research#software-deals

Sample output

The first rows a finished run produces. The Output tab documents every dataset and field.

product_slugsource_urlscraped_page_urlscraped_page_numberreview_position_on_pagereview_idreview_urlreview_slugreview_titlereview_textreview_text_lengthreview_rating_rawreview_ratingreview_datereview_date_isoreview_meta_row_textreviewer_usernamereviewer_profile_urlreviewer_avatar_urlis_plus_memberis_verified_buyerreviewer_verified_labelreviewer_member_sincereviewer_badges_texthas_founder_replyfounder_reply_labelfounder_usernamefounder_avatar_urlfounder_reply_datefounder_reply_date_isofounder_reply_texthelpful_countreview_share_count
flowdesk-pro11184207Exactly what my calendar workflow neededSet it up in an afternoon and it replaced three manual steps.52026-03-04dana.k011Thank you Dana - glad it saved you time!12

Related resources

Technical details

Launcher version
1.0.0
Minimum runtime version
1.0.0
Internet required at launch
Yes
Update channel
live
Config encoding
plain

Requirements

  • Minimum launcher runtime version: 1.0.0.
  • Supported operating systems: Windows x86_64, macOS Apple Silicon, macOS Intel, Linux x86_64.
  • On macOS Apple Silicon and macOS Intel and Linux x86_64 the launcher is a shell script: if your system flags it as quarantined or strips the executable bit, grant execute permission with chmod +x BOT_appsumo-product-reviews-scraper.sh and approve the launcher in Gatekeeper (macOS security settings) before the first run.
  • First launch requires an internet connection to fetch the bot's configuration by id.

Responsible use

See our acceptable use policy and takedown process.

Commands this bot uses

These are the commands the published configuration actually uses.

The count is how many times each command appears in the published configuration; it is derived from the project, not hand-authored.

Frequently asked questions

How do I scrape AppSumo product reviews to CSV?
Run the launcher, paste one or more AppSumo product URLs into the required product_urls list (one URL per line), optionally set a per-product page cap, and the bot fans the list out, normalizes each URL to the AppSumo review tab, paginates to the last page and extracts every review card into the reviews dataset. Rows land in the launcher's local results store; export them from the results view - CSV is the common working format, and JSON and XLSX exports are available too. No selector work is required from you.
What review data does the AppSumo scraper collect?
Thirty-three fields per review: the product slug and source URL, the scraped page URL and number, the review position, review id, url and slug, the title, the full review text and its character length, the raw star label and the numeric rating, the displayed date and an ISO-normalised date, the meta row text, the reviewer username, profile url and avatar, verified-buyer and AppSumo Plus member flags, the verified label and member-since text, the badge row, whether a founder replied plus the reply label, username, avatar, date, ISO date and text, and the helpful and share counts.
How does the bot handle multiple AppSumo products at once?
product_urls is a required list variable, and the engine fans it out into its URL queue with one worker task per entry, so a dozen products become a dozen independent collection passes in a single run. It accepts any AppSumo product URL shape - with or without the reviews path, with or without a trailing slash or query string - and normalizes each to the canonical review tab. One caution baked into the configuration: the value must stay a JSON array. Passed as a single string, the fan-out breaks and the run collapses to one worker-replicated URL.
How does AppSumo review pagination work?
For each product the bot first reads the page's own pagination controls - it scans links whose accessible label reads Go to page followed by a number and takes the highest - storing that in last_page. It then loops from page one up to last_page, re-navigating to each numbered review page URL, waiting for a review card to render, and extracting. The loop stops at the last detected page or at the max_pages_per_product cap, whichever comes first.
Can I limit how many review pages are crawled per product?
Yes. max_pages_per_product is an optional safety cap on review pages crawled per product. It defaults to 999, which is effectively unlimited, so a full review history is collected. Set it to 2 for a fast smoke test, or to any number to bound run time and request volume on products with very deep review back-catalogs.
Does the scraper collect reviewer names and profiles?
It does, deliberately, and that raises the compliance bar. The dataset captures reviewer_username, reviewer_profile_url and reviewer_avatar_url, plus verified-buyer and AppSumo Plus member flags and a member-since value. These identify people, so this listing is flagged piiHandled true: establish a lawful basis before storing or analysing them, honour takedowns, and never republish reviewer identities or use them for spam.
Can it capture AppSumo founder replies to reviews?
Yes. has_founder_reply is a count flag for a creator response on the review card, and when one is present the run also captures founder_reply_label, founder_username, founder_avatar_url, founder_reply_date and its ISO-normalised form, and founder_reply_text. Diffing founder_reply_date_iso against review_date_iso gives you a reply-latency measure - a useful responsiveness signal when benchmarking how a vendor handles its negative AppSumo reviews.
How are AppSumo review dates normalised?
Two ways per date. review_date keeps the displayed string verbatim, and review_date_iso runs it through a small script transform that first tries a native date parse and then falls back to a month-name pattern (AppSumo shows dates like March 4, 2026), emitting a clean yyyy-mm-dd value. The same pair exists for founder replies. When a date cannot be parsed the ISO field is left empty rather than guessed, so an empty review_date_iso is an honest unknown, not a failure.
How does deduplication work across review pages?
AppSumo review pages can overlap and re-render as you paginate, so the reviews dataset deduplicates on the combination of review_id, review_text and reviewer_username. That triple is stable for a given review and catches the same card appearing on adjacent pages. review_id and review_text are also declared required fields, so a card that never rendered its body is logged rather than silently trusted.
Is scraping AppSumo reviews allowed?
Automated collection may conflict with AppSumo's terms of service, and review text plus reviewer usernames are personal data in most jurisdictions. You are responsible for reviewing AppSumo's terms and establishing a lawful basis under GDPR, UK GDPR or your local equivalent before running the bot, storing the output, or analysing named individuals. Keep request volume modest and let the acceptable-use policy govern every run. This bot is not affiliated with or endorsed by AppSumo.
Why are some rating or date fields empty?
Empty is normal and expected in a few cases: a review with no star label leaves review_rating null through its cast default; an unparseable or absent date leaves review_date_iso empty; helpful_count and review_share_count fall back to 0 when the card shows none; the AppSumo Plus flag reads 0 for non-members; and the founder-reply fields are empty on every review that has no creator response. The transforms fall back to empty or zero rather than failing the row, and the failure contract is loud - empty values or zero rows, never fabricated data.
How long does a full AppSumo review scrape take?
It scales with products times pages. Each product costs one page visit per review page, paced by human-like navigation and a wait for the review card to render before each extraction. A single product with a few hundred reviews across a handful of pages finishes in minutes; a queue of many products with deep review histories can run toward an hour. Lower max_pages_per_product or queue fewer products to keep runs short.
Does the bot need an internet connection to run?
Yes on first run: the launcher fetches its configuration by id from the backend at launch, so an internet connection is required at least the first time it starts.
Can I rename the downloaded file?
No. The downloaded file must keep its exact name - the filename carries the per-bot configuration id, and renaming it breaks the configuration fetch at launch.