Voice of Customer Analysis with Claude: Find Feature Gaps (2026)
Connect Apify's MCP server to Claude, then pull reviews of your product and three competitors from G2, the App Store and Reddit, plus transcripts of YouTube review videos. Claude codes every review against one theme list, counts how often and how badly each theme hurts, and returns a ranked feature-gap table with verbatim quotes and source links for your PRD. A run of about 1,200 items costs roughly $5 in Apify credits.
Most product teams read reviews the same way: someone skims the latest 1-star posts before planning, remembers the loudest three, and those become "what customers want". That is anecdote, not analysis. The fix is not more reading. It is coding every review against the same theme list, for you and your competitors, so you can see where they are praised for something you are criticised for.
This guide is for software products: SaaS, mobile apps and developer tools, where G2, the App Store, Reddit and YouTube are where people explain what they like, what breaks and why they switched.
Set it up in one prompt
If you just want the result, paste this into Claude Cowork. Claude interviews you for the products and sources, checks the Apify connector, runs a small paid test so you see the real cost, and only then builds the full analysis. The step-by-step walkthrough below explains what each part does.
Claude asks for your product and competitors, tests every source on a small sample, then builds the coded dataset and ranked gap table.
- Asks for your product, 3 competitors and their review URLs, one question at a time
- Checks the Apify connector and explains how to add it if missing
- Runs a 5-item test per source and shows the actual cost
- Pulls the full sample, agrees a codebook with you, then codes and ranks
I want a voice-of-customer feature-gap analysis of my software product against 3 competitors,
built from G2 reviews, App Store reviews, Reddit threads and YouTube review videos.
Set it up with me step by step. Rules for the whole session:
- Ask me ONE question at a time and wait for my answer.
- Before any action that spends Apify credits or writes a file, tell me what it will do
and what it should cost, and wait for my "yes".
1. Interview me. Ask, one at a time: my product's name; the 3 competitors; each product's
G2 reviews URL (https://www.g2.com/products/<name>/reviews) or "none"; each App Store
app ID or "none"; the names people use for each product on Reddit; my main market
country; and how far back to look (default 12 months).
2. Check the connector. Confirm you can call the Apify MCP tools search-actors, call-actor
and get-dataset-items. If you cannot, stop and tell me to add a custom connector in
Customize > Connectors with the URL https://mcp.apify.com, sign in to Apify, then tell
you when it is done.
3. Confirm the Actors exist by calling fetch-actor-details on each, and show me each one's
current price per result:
- zen-studio/g2-reviews-scraper (G2: url, limit, sortOrder "most_recent", publishedAfter,
starRatings left empty so praise is included)
- thewolves/appstore-reviews-scraper (appIds, country, maxItems)
- trudax/reddit-scraper-lite (searches, searchComments true, sort "new", maxItems)
- streamers/youtube-scraper (searchQueries, maxResults) to find review videos
- codepoetry/youtube-transcript-ai-scraper (startUrls, outputFormats ["llm"],
enableAiFallback false unless I approve AI transcription)
4. Test run. With my approval, run each Actor on a tiny sample (G2 limit 10, which is its
minimum; maxItems or maxResults 5 elsewhere; one product, one search) and show me: items
returned, a sample row, and the cost of the test. Fix any empty results (wrong URL, wrong ID) with me before going further.
5. Full run. Propose volumes (about 150 G2 reviews and 100 App Store reviews per product,
200 Reddit items in total, up to 5 YouTube videos per competitor query), show the
estimated total cost, and run only after I approve. For YouTube, show me the video
list and let me drop ads and tutorials before transcribing anything.
6. Codebook. Read a random sample of 100 items and propose 15-25 themes. Wait for my edits.
7. Coding and output. Code every item (source, product, themes, sentiment per theme:
praise / complaint / request, severity 1-3) in batches of 100. For G2, code the likes and
dislikes fields and keep reviewSource and incentivized. Ask before creating files,
then save:
- voc-coded.csv: one row per item with its codes
- voc-gap-table.md: themes ranked by gap type (competitor strength + our weakness first,
then shared pain, then our strength), then by complaint count x severity, with counts
per product per source; count reviews, not mentions
- voc-quotes.md: 3-5 verbatim quotes with source URLs for each top-10 theme, no
reviewer names, never paraphrased inside quotation marks
8. Finish by listing 30 random coded rows for me to spot-check, and the total Apify cost.
Claude asks before each change it makes. Read each step before you approve it.
What you get at the end
Three outputs, all produced by Claude from the scraped data:
- A ranked gap table. One row per theme, with how often it is mentioned for you vs each competitor, a severity score, and the gap type.
- A quote bank. 3 to 5 verbatim quotes per theme, each with its source URL, ready to paste into a PRD or a roadmap review.
- A coded dataset. Every review with its theme codes, as a CSV you can re-sort, audit or hand to an analyst.
Here is what the top of the gap table looks like. The rows below are illustrative, showing the format rather than real data:
| Theme | You | Comp A | Comp B | Severity | Gap type |
|---|---|---|---|---|---|
| Offline mode | 41 complaints | 6 praise | 3 praise | High | Competitor strength, your weakness |
| CSV import errors | 28 complaints | 22 complaints | 19 complaints | Medium | Shared pain (open opportunity) |
| Onboarding speed | 12 praise | 30 complaints | 4 complaints | Medium | Your strength (defend it) |
The gap type column is the part a star-rating dashboard cannot give you. A theme everyone complains about is an open opportunity. A theme a competitor is praised for while you are criticised is a direct reason people switch, and that one goes to the top of the list.
What the raw data looks like
Below is real output from a test run on 2026-10-21, pulling a few items per source for Notion. Rows are trimmed and reviewer names removed.
| Source | Rating | Excerpt | Extra fields worth keeping |
|---|---|---|---|
| G2 | 4.5★ | "Notion can feel a bit slow on larger pages with lots of notes, tasks, and database entries." | reviewSource: Organic, incentivized: false |
| G2 | 5★ | "When there are too many pages, finding something I wrote a few weeks ago can take longer than I'd like." | reviewSource: G2 invite, incentivized: true |
| G2 | 3.5★ | "I'd like to see team-level template standardization, so a team can open and use a standardized view of things." | reviewSource: Organic |
| App Store | 3★ | "Notion is feature rich but it can get frustrating really quick on mobile devices, as it is fairly buggy." | version: 1.7.346 |
| App Store | 2★ | "on phones and ipads it just feels clunky and lacks a lot of the quick functionality features" | version: 1.7.346 |
| n/a (comment) | "soooo glad i built my own notion alternative." | dataType: comment, url | |
| YouTube | n/a | "Notion Review 2026: Is It Still the Best All-in-One Workspace?": about 1,700 words of transcript | is_auto_generated: true |
Even this tiny sample shows why coding beats skimming. Six of the 10 G2 reviews were 5★, yet four mentioned slowness on large pages and four mentioned the learning curve in their dislikes field. A star-rating average would never surface that theme. Notice also that the 5★ "too many pages" review was incentivised, which is exactly what the incentivized field lets you weight.
What you need before you start
- Claude with the Apify connector. Either Claude Desktop or Claude Cowork works. Cowork is easier for this job because it can save the coded CSV into a folder for you. Setup takes five minutes: follow connecting Apify to Claude Cowork or the Apify MCP setup for Claude Desktop.
- An Apify account. The free plan's monthly credit covers one full run of this workflow at the volumes below.
- Your competitor list. Three is the right number. Fewer gives you no baseline, and more makes the table too wide to act on.
- The source URLs. Each product's G2 reviews URL, App Store ID (the number at the end of the App Store link, without
id), and the names people actually use for it on Reddit.
You do not run the Actors by hand. You describe each pull to Claude, and it calls the Actor through the connector. The input fields below are listed so you know what to ask for and can check what Claude sends.
Step 1: Pull G2 reviews
G2 is the richest source for B2B software because reviewers answer structured questions about what they like and dislike. Use G2 Reviews Scraper (zen-studio/g2-reviews-scraper).
The inputs that matter:
| Field | What to set | Why |
|---|---|---|
url | https://www.g2.com/products/<product>/reviews | One run per product |
limit | 150 | Enough for stable theme counts |
sortOrder | most_recent | Gaps from 2023 are often already fixed |
publishedAfter | A date 12 months back | Keeps the sample current |
starRatings | Leave empty | You need praise too, not only complaints |
Leaving starRatings empty matters. If you pull only 1 to 2★ reviews, every theme looks like a weakness, and you lose the "competitor strength" signal that makes the gap table useful. Note that limit has a minimum of 10.
Each review comes back with separate likes and dislikes fields, which is what you want Claude to code, plus reviewSource (for example "Organic", "G2 invite" or "Seller invite") and an incentivized flag. Keep those two. They let you check whether a theme holds up in organic, non-incentivised reviews, instead of arguing about review-campaign bias later.
The Actor can also save an AI-generated pros/cons summary with mention counts (includeProsConsSummary, on by default). Treat it as a cross-check on Claude's coding, not a replacement for it: it summarises one product at a time and does not use your theme list.
Prompt:
Use the Apify Actor zen-studio/g2-reviews-scraper to pull the 150 most recent G2 reviews
published after 2025-10-21 for each of these four products, all star ratings:
- https://www.g2.com/products/<your-product>/reviews
- https://www.g2.com/products/<competitor-a>/reviews
- https://www.g2.com/products/<competitor-b>/reviews
- https://www.g2.com/products/<competitor-c>/reviews
Tell me how many reviews came back per product before doing anything else.
Asking for the counts first catches the common failure early: a wrong product URL that returns zero reviews.
Step 2: Pull App Store reviews
If any of the products has a mobile app, App Store reviews add a different audience: end users rather than the buyers and admins who write on G2. Use App Store Reviews Scraper (thewolves/appstore-reviews-scraper), with appIds set to the four IDs, country set to your main market, and maxItems at about 400.
Use the Apify Actor thewolves/appstore-reviews-scraper to pull up to 400 US App Store reviews
in total for app IDs <id1>, <id2>, <id3>, <id4>. Report the count per app.
App Store reviews are short and emotional. They are good at surfacing bugs, crashes and pricing anger, and poor at explaining workflows. Weight them accordingly in Step 5.
Step 3: Pull Reddit threads
Reddit is where people explain why they switched, in their own words and without a review form shaping the answer. Use Reddit Scraper Lite (trudax/reddit-scraper-lite) in search mode.
Search for switching language, not just the brand name. Use the searches field for each of these queries:
<competitor> alternativeswitched from <competitor><your product> vs <competitor><your product> missing
Set searchComments to true as well, because the useful explanation is usually in a reply rather than in the post title, and keep maxItems around 200 in total.
Use the Apify Actor trudax/reddit-scraper-lite to search Reddit posts and comments for:
"<competitor-a> alternative", "switched from <competitor-a>", "<your-product> vs <competitor-a>",
"<your-product> missing" (repeat for competitors B and C). Max 200 items, newest first.
Drop anything that does not mention at least one of the four products by name.
That last line matters. Reddit search is loose, and without a filter you will code threads about an unrelated product with a similar name. In our test, a search for "notion alternative" with sort set to new returned five comments from just two threads, both about a pricing change. Ask Claude to cap items per thread, so one heated thread does not become your top theme.
For picking a different Reddit Actor, or for the full input reference, see how to scrape Reddit with Apify and the Reddit scraper comparison. To watch Reddit for mentions every day rather than once per study, see Reddit brand monitoring in Claude Cowork.
Step 4: Add YouTube review and comparison videos
Long-form review videos are the most underused voice-of-customer source. A 12-minute "Why I left X for Y" video holds more reasoning than 50 star ratings, and it is invisible to every review dashboard because it is spoken, not written.
This takes two Actors:
- Find the videos. YouTube Scraper (
streamers/youtube-scraper) withsearchQueriessuch as<competitor> review,<competitor> vs <your product>andwhy I switched from <competitor>, andmaxResultsof 5 per query. - Get the transcripts. YouTube Transcript Scraper Pro (
codepoetry/youtube-transcript-ai-scraper) takes the video URLs instartUrls. SetoutputFormatstollm, which strips[Music]and filler tokens before Claude reads the text. It uses YouTube's captions first; turn onenableAiFallbackonly if some videos have no captions, and keepmaxAiMinuteslow, because AI transcription is billed per minute.
Use streamers/youtube-scraper to find up to 5 videos each for "<competitor-a> review",
"<competitor-a> vs <your-product>" and "why I switched from <competitor-a>" (repeat for B and C).
Show me the list first. Then send the ones that are genuine reviews or comparisons
(not ads or tutorials) to codepoetry/youtube-transcript-ai-scraper with outputFormats ["llm"].
The "show me the list first" step is worth the extra message. YouTube search returns a lot of sponsored walkthroughs, and you want to cut those before paying to transcribe them.
For how captions and AI fallback compare, see how to extract YouTube transcripts.
Step 5: Have Claude code, count and rank
This is the step that turns scraped text into a gap list. The prompt does three things that make the result trustworthy: it fixes the theme list before coding, it counts reviews rather than mentions, and it forces a quote with a link for every claim.
You now have reviews from G2, the App Store, Reddit and YouTube transcripts for four products:
<your-product> (ours), <competitor-a>, <competitor-b>, <competitor-c>.
1. Read a random sample of 100 items across all sources and propose a codebook of 15-25
themes (features, reliability, pricing, support, onboarding, integrations...).
Show it to me and wait for my edits before continuing.
2. Code every item against the approved codebook. For each item record: source, product,
theme(s), sentiment per theme (praise / complaint / request), and severity
(3 = blocks work or causes churn, 2 = recurring friction, 1 = minor annoyance).
Work in batches of 100 and save the coded rows to voc-coded.csv as you go.
3. Count REVIEWS, not mentions: one review that complains about sync five times counts once.
Report counts per product per source, so a source with more volume does not dominate.
4. Classify each theme:
- Competitor strength, our weakness: we get complaints, at least one competitor gets praise
- Shared pain: everyone gets complaints
- Our strength: we get praise, competitors get complaints
5. Rank themes by gap type first (in the order above), then by complaint count x severity.
6. For each of the top 10 themes, give 3-5 verbatim quotes with the source URL.
Never paraphrase inside quotation marks. Drop reviewer names.
Why each instruction is there:
- Codebook first, then coding. If Claude invents themes while it codes, the same complaint lands in "performance" in batch 1 and "speed" in batch 6, and your counts split in two. Approving the codebook up front is the single biggest quality lever.
- Batches and a CSV. Around 1,200 items will not fit comfortably in one pass. Saving as it goes also gives you the coded dataset as an output.
- Per-source counts. G2 and App Store volumes differ by an order of magnitude for most products. Without the split, the noisiest source sets your roadmap.
- Severity, not just frequency. Ten mentions of a confusing icon matter less than three people saying they cancelled over missing SSO.
Check the work before it goes into a PRD
Claude is fast at coding and usually right, but "usually" is not good enough for a roadmap decision. Two checks take about 20 minutes:
- Spot-check 30 coded rows. Open
voc-coded.csv, pick 30 rows at random, and code them yourself without looking. If you disagree on more than 5, tighten the theme definitions in the codebook and re-run Step 5. - Open every quote link for the top 3 themes. Confirm each quote exists at the URL and says what Claude says it says. This takes minutes and is what lets you defend the table in a planning meeting.
Then read the sample for bias:
- G2 reviews are often written in response to invitations and review campaigns, which skews them positive. Use the
reviewSourceandincentivizedfields to compare organic and invited reviews. A theme that still shows up as a complaint in invited 5★ reviews is a strong signal. - App Store reviewers write when something just went wrong, so it over-represents crashes and billing.
- Reddit over-represents power users and people who have already left.
- YouTube reviewers are often creators with affiliate deals; the "why I switched" reasoning is still useful, but discount the conclusions.
A theme that appears across three or more sources is real. A theme that appears on only one is a lead to investigate, not a roadmap item.
Once the first table exists, the cheap follow-up is a monthly refresh that only pulls what is new:
Re-runs the pull for the last 30 days and shows which themes moved.
Re-run the G2, App Store and Reddit pulls from our voice-of-customer analysis, limited to
items published in the last 30 days (for G2 use publishedAfter "1 month"). Show me the
estimated cost and wait for my yes. Code the new items with the existing codebook in
voc-coded.csv, append them, and tell me which themes rose or fell in the gap table and
any new complaint that does not fit an existing theme.
What it costs
Apify charges per result for each of these Actors. The figures below are the free-tier prices listed on each Actor's page on 21 October 2026; paid Apify plans get lower per-result rates. Check the Actor pages before a large run, because developers can change prices.
| Source | Actor | Volume | Price per item | Approx. cost |
|---|---|---|---|---|
| G2 | zen-studio/g2-reviews-scraper | 600 reviews (150 × 4) | $0.00649 | $3.89 |
| App Store | thewolves/appstore-reviews-scraper | 400 reviews | $0.0001 | $0.04 |
trudax/reddit-scraper-lite | 200 posts/comments | $0.004 + $0.04 per run | $0.84 | |
| YouTube search | streamers/youtube-scraper | 20 videos | $0.004 | $0.08 |
| Transcripts | codepoetry/youtube-transcript-ai-scraper | 20 transcripts (captions) | $0.001 | $0.02 |
| Total | ~1,220 items | ≈ $4.87 + small start fees |
The Reddit Actor also charges a start fee of $0.02 per GB of run memory. At its default 2 GB that is $0.04 per run, so batch all your searches into one run rather than one run per query.
The test run behind the sample table above cost $0.12 in total, measured from the five runs' charged events on a paid Apify plan: 10 G2 reviews ($0.055), 5 Reddit comments including the start fee ($0.059), 3 YouTube search results ($0.009), 5 App Store reviews ($0.0005) and 2 transcripts (under $0.001). That is the cost of step 4 in the setup prompt.
G2 is most of the bill. If budget matters more than depth, drop G2 to 75 reviews per product and the total roughly halves. AI transcription in the YouTube step is the one thing that can surprise you, which is why the prompt keeps it off unless captions are missing.
Claude itself is not included: this needs a paid Claude plan with connector support.
Limits and fair use
- Terms of service. Review sites have terms that govern automated access. Collect only public reviews, at modest volume, for internal analysis. For the legal background, see is web scraping legal.
- Personal data. Reviews carry names, job titles and usernames. The coding prompt drops reviewer names, and you should keep it that way in anything you share outside the product team.
- This is not a survey. People who write reviews are not a random sample of your users. Use the gap table to choose what to investigate with interviews and usage data, not as the final answer.
- Physical products are a different job. For Amazon or Shopify listings, the sources, Actors and review structure are different, and this workflow does not carry over directly. See mining Amazon and Shopify reviews with Claude instead.
For more product-manager prompts, see Claude prompts that use live web data.
Voice of customer (VOC) analysis is the process of collecting what customers say about a product in their own words, from reviews, forums, support tickets or interviews, and coding it into themes you can count and prioritise. Done across your product and your competitors, it shows where you are losing deals and why.
Claude can code and summarise reviews, but it cannot collect them from G2, the App Store or Reddit by itself. Connecting Apify's MCP server gives Claude access to scrapers for each site, so it can pull the reviews and then analyse them in the same conversation.
Around 100 to 150 reviews per product per source is enough for stable theme counts in most software categories. Below 50, a few loud reviews can swing a theme's ranking. Above a few hundred per product, you mostly pay for repetition.
Review and comparison videos explain the reasoning behind a switch in far more detail than a written review, and they never show up in review dashboards because the content is spoken. Pulling transcripts lets Claude code them alongside written reviews.
At the free-tier prices listed on 21 October 2026, about 1,220 items across G2, the App Store, Reddit and YouTube cost roughly $5, most of it for G2 reviews. Paid Apify plans get lower per-result rates.
