$npx -y skills add browser-act/skills --skill walmart-product-reviewsWalmart product reviews scraper: given a walmart.com product item ID, navigate to the reviews page and extract paginated customer reviews including reviewId, rating, title, review text, author nickname, submission date, verified purchase status, helpful votes, variant selected (c
| 1 | # Walmart — Product Reviews |
| 2 | |
| 3 | > product item ID + page → paginated customer reviews from walmart.com |
| 4 | |
| 5 | ## Language |
| 6 | |
| 7 | All process output to user (progress updates, process notifications) follows the user's language. |
| 8 | |
| 9 | ## Objective |
| 10 | |
| 11 | Extract paginated customer reviews from a Walmart product reviews page, returning structured review data with ratings, text, author info, and metadata. |
| 12 | |
| 13 | ## Prerequisites |
| 14 | |
| 15 | - Target reviews page is open in the browser: `https://www.walmart.com/reviews/product/{item-id}?page={page}` |
| 16 | |
| 17 | ## Pre-execution Checks |
| 18 | |
| 19 | ### 1. Tool Readiness |
| 20 | |
| 21 | If browser-act has been confirmed available in the current session → skip this step. |
| 22 | |
| 23 | Invoke `browser-act` via Skill tool to load usage. If installation or configuration issues arise, follow its guidance to resolve then retry. |
| 24 | |
| 25 | ## Capability Components |
| 26 | |
| 27 | > This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. Its role is equivalent to copy-pasting on the user's behalf — the data is already on screen, automation merely saves time. JS code is encapsulated in Python files under the `scripts/` directory, invoked via `eval "$(python scripts/xxx.py {params})"`. `$(...)` is bash syntax; it is recommended to use the bash tool for execution. |
| 28 | |
| 29 | Below are all atomic capabilities discovered and verified during the exploration phase, listed by command template with parameters. Simply invoke them as needed — no need to read `scripts/*.py` source code or re-verify. Only inspect scripts when execution fails for troubleshooting. Combine freely as needed during execution. |
| 30 | |
| 31 | ### DOM: extract reviews from current reviews page |
| 32 | |
| 33 | Navigate to the target reviews URL first, then extract: |
| 34 | |
| 35 | 1. `navigate "https://www.walmart.com/reviews/product/{item-id}?page={page}"` |
| 36 | 2. `wait stable` |
| 37 | 3. `eval "$(python scripts/extract-reviews.py)"` |
| 38 | |
| 39 | Parameters in URL: |
| 40 | - `{item-id}`: Walmart item ID (numeric, e.g., `18656507313`) |
| 41 | - `{page}`: page number starting from `1`; 10 reviews per page |
| 42 | |
| 43 | Note: The `walmart-product-detail` Skill also returns the first 10 reviews in its `reviewSummary.reviewsLookupId` field along with `numberOfReviews`. Use these to determine total pages before starting pagination. |
| 44 | |
| 45 | Output example: |
| 46 | ```json |
| 47 | { |
| 48 | "totalReviews": 279, |
| 49 | "averageRating": 4.2, |
| 50 | "reviewsOnPage": 10, |
| 51 | "ratingBreakdown": { |
| 52 | "5": 191, |
| 53 | "4": 29, |
| 54 | "3": 15, |
| 55 | "2": 10, |
| 56 | "1": 34 |
| 57 | }, |
| 58 | "lookupId": "19X7KSSCUQU5", |
| 59 | "reviews": [ |
| 60 | { |
| 61 | "reviewId": "431060075", |
| 62 | "rating": 5, |
| 63 | "title": null, |
| 64 | "text": "Purchased for adult daughter's bday! She loves it...", |
| 65 | "author": "kimberly", |
| 66 | "submittedDate": "7/4/2026", |
| 67 | "verifiedPurchase": true, |
| 68 | "helpfulVotes": 0, |
| 69 | "notHelpfulVotes": 0, |
| 70 | "variantSelected": {"Color": "Tranquil pink"}, |
| 71 | "badges": ["Verified Purchase"], |
| 72 | "fulfilledBy": "Walmart", |
| 73 | "sellerName": "Walmart.com", |
| 74 | "media": null |
| 75 | } |
| 76 | ] |
| 77 | } |
| 78 | ``` |
| 79 | |
| 80 | Error response (when extraction fails or wrong page): |
| 81 | ```json |
| 82 | {"error": true, "message": "No reviews in __NEXT_DATA__. Ensure the page is a Walmart reviews page (walmart.com/reviews/product/...) or product detail page with reviews."} |
| 83 | ``` |
| 84 | |
| 85 | ## Pagination |
| 86 | |
| 87 | **URL Pagination**: URL pattern `https://www.walmart.com/reviews/product/{item-id}?page={N}`. Start at page 1. Increment page by 1 each iteration. Termination: `reviewsOnPage === 0` OR `page > ceil(totalReviews / 10)`. Each page returns 10 reviews. |
| 88 | |
| 89 | ## Success Criteria |
| 90 | |
| 91 | `reviewsOnPage >= 1` AND `reviews[0].reviewId` is non-null AND `reviews[0].rating` is a number between 1 and 5 |
| 92 | |
| 93 | ## Known Limitations |
| 94 | |
| 95 | - 10 reviews per page; Walmart does not expose an API to change page size |
| 96 | - `title` is null for most reviews that do not have a title |
| 97 | - `media` (photo URLs) is null for most text-only reviews; photo URLs are not included in `__NEXT_DATA__` for review |