Maps Reviews Issue Matrix by Location
Pricing
from $20.00 / 1,000 matrix analyses
Maps Reviews Issue Matrix by Location
Compare issue-topic prevalence across store locations from review datasets you already hold. Aggregate output only.
Pricing
from $20.00 / 1,000 matrix analyses
Rating
0.0
(0)
Developer
Practical AI Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
Google Maps Reviews Analysis by Location | PAL
Compare how often issue topics (waiting time, cleanliness, pricing, order mistakes and more) appear in the reviews of each of your store locations, using review data you already hold. The output is aggregate only: counts, prevalence, confidence intervals and a peer comparison per location and topic.
Published Apify Actor. Runs on the public Store with review data supplied by the customer. The Actor never scrapes Google Maps or obtains reviews automatically. Review sample results before running large datasets.
What it does
Use this Google Maps reviews analysis tool with exported reviews you already have rights to process. Compare waiting time, cleanliness, pricing and other operational issues across multiple business locations. No login, Google Maps scraping or reviewer-identity output.
- Reads review rows from the
reviewsinput array and/or from datasets in your own Apify account (datasetIds). - Matches each review against a keyword lexicon of ten built-in topics plus optional custom topics.
- Per location and topic it reports mentions, prevalence, a 95% Wilson interval, the pooled prevalence of all other locations, the difference in percentage points, a two-proportion z-test and a Benjamini-Hochberg adjusted q-value across all tested cells.
- Flags a cell as
higher_than_peersorlower_than_peersonly when the q-value is below your threshold and the gap is at least your minimum number of points. - Stores a summary (top findings, a location by topic prevalence matrix, input statistics, limitations) in the key-value store under
OUTPUT.
What it does not do
- It never contacts Google Maps or any review site. You supply existing data that you are allowed to use.
- It never stores review text, reviewer names, profile links or any field other than the location name. Those fields are read only for matching and then dropped.
Privacy controls
- Locations with fewer than
minReviewsPerLocationanalyzed reviews (floor of 5) are excluded. - Cells with 1 to
minCellCount - 1mentions are suppressed (null values, statussuppressed_small_cell). - Location names appear in the output, so only use names of business locations.
Sample input
{"reviews": [{"location": "Harbor Cafe - North", "text": "Long wait at the counter, but the coffee was great.", "stars": 3},{"location": "Harbor Cafe - North", "text": "Waited 30 minutes for a simple order. Slow service.", "stars": 2},{"location": "Harbor Cafe - North", "text": "Friendly staff and clean tables.", "stars": 5},{"location": "Harbor Cafe - North", "text": "Wrong order again and the line was very slow.", "stars": 2},{"location": "Harbor Cafe - North", "text": "Nice place, a bit pricey.", "stars": 4},{"location": "Harbor Cafe - South", "text": "Quick service and lovely staff.", "stars": 5},{"location": "Harbor Cafe - South", "text": "Tables were dirty and the restroom smelled.", "stars": 2},{"location": "Harbor Cafe - South", "text": "Great coffee, fair price.", "stars": 5},{"location": "Harbor Cafe - South", "text": "Very noisy inside, hard to talk.", "stars": 3},{"location": "Harbor Cafe - South", "text": "Dirty floor but fast and polite.", "stars": 3}],"topics": ["wait_time", "cleanliness", "price_value", "noise_crowding"],"minReviewsPerLocation": 5,"minCellCount": 2}
The sample only demonstrates the input format. Five reviews per location are far too few for a meaningful comparison.
Input fields
| Field | Meaning |
|---|---|
reviews | Inline array of review objects. |
datasetIds | Up to 10 dataset IDs from your own account. |
locationField, textField, ratingField | Override field names. Common names are tried automatically. |
topics | Subset of built-in topics (default all): wait_time, staff_attitude, cleanliness, price_value, product_quality, order_accuracy, noise_crowding, parking_access, safety_hygiene, billing_issues. |
customTopics | Object of topic name to keywords. A trailing * matches any word ending. |
maxRating | Analyze only reviews at or below this star rating. |
minReviewsPerLocation, minCellCount | Privacy and reliability thresholds. |
minDifferencePoints, fdrAlpha | Flagging thresholds. |
maxReviews, maxLocations | Safety caps (defaults 50000 and 200). |
Output
One dataset row per eligible location and topic. Key fields: location, topic, reviewsInLocation, mentionCount, prevalencePct, ciLowPct, ciHighPct, peerPrevalencePct, differencePoints, pValue, qValue, direction, status, sampleNote.
Limitations and sample-size caveats
- Keyword matching is not sentiment analysis. "No wait at all" still counts as a wait mention. Sarcasm and negation are not handled.
- The built-in lexicon is English only. Use
customTopicsfor other languages. - Prevalence is the share of analyzed reviews that mention a topic, not the share of customers affected. Reviewers are a self-selected group.
- Statistical tests need adequate samples. As a rough guide, aim for at least 100 reviews per location; below that rows are marked
small_sampleand intervals are wide. - The peer baseline is the pooled set of other eligible locations, so one very large location can dominate it.
- Tests across many cells can still yield false positives even with false discovery control. Treat flags as leads to investigate.
- Duplicate reviews in your input are not removed and will inflate counts.
Billing
The code references one event, matrix-analysis, triggered once after output has been stored successfully. Failed or invalid runs fail before any charge. The Actor uses Apify pay-per-event pricing; the latest verified rate on 2026-10-30 is $0.02 per completed analysis, plus a small Actor start event ($0.00005). The live Pricing tab is authoritative for current charges.
Development
Tests are offline and use only the standard library: python -m unittest discover -s tests -t . from the project root.