[Feat] Walmart scraper: product + reviews across API, chat, and MCP#1614
[Feat] Walmart scraper: product + reviews across API, chat, and MCP#1614CREDO23 wants to merge 21 commits into
Conversation
|
@CREDO23 is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Adds Walmart as a first-class native scraper, matching the other platforms end to end.
walmart.scrape(products/search/category → prices, ratings, sellers, variants, availability) andwalmart.reviews(full paginated public review history).High-level PR Summary
This PR adds Walmart as a first-class native scraper platform alongside Reddit, YouTube, Amazon, and others. It implements two main capabilities:
walmart.scrapefor extracting product data (prices, ratings, sellers, variants, availability) from product pages and search results, andwalmart.reviewsfor paginated customer review history. The implementation includes a complete scraper engine that extracts data from Walmart's server-rendered Next.js JSON state, REST API endpoints with per-product and per-review billing, chat agent integration with routing and subagent system, MCP tools for external agent integration, comprehensive test coverage (31 unit tests), documentation, and marketing pages. The scraper uses residential proxies with anti-bot detection and retry logic to handle Walmart's Akamai and PerimeterX protection.⏱️ Estimated Review Time: 30-90 minutes
💡 Review Order Suggestion
surfsense_backend/app/proprietary/platforms/walmart/README.mdsurfsense_backend/app/proprietary/platforms/walmart/schemas.pysurfsense_backend/app/proprietary/platforms/walmart/url_resolver.pysurfsense_backend/app/proprietary/platforms/walmart/next_data.pysurfsense_backend/app/proprietary/platforms/walmart/parsers.pysurfsense_backend/app/proprietary/platforms/walmart/fetch.pysurfsense_backend/app/proprietary/platforms/walmart/scraper.pysurfsense_backend/app/proprietary/platforms/walmart/__init__.pysurfsense_backend/app/capabilities/walmart/scrape/schemas.pysurfsense_backend/app/capabilities/walmart/scrape/executor.pysurfsense_backend/app/capabilities/walmart/scrape/definition.pysurfsense_backend/app/capabilities/walmart/reviews/schemas.pysurfsense_backend/app/capabilities/walmart/reviews/executor.pysurfsense_backend/app/capabilities/walmart/reviews/definition.pysurfsense_backend/app/capabilities/walmart/__init__.pysurfsense_backend/app/capabilities/core/types.pysurfsense_backend/app/capabilities/core/billing.pysurfsense_backend/app/config/__init__.pydocker/.env.examplesurfsense_backend/.env.examplesurfsense_backend/app/agents/chat/multi_agent_chat/subagents/builtins/walmart/tools/index.pysurfsense_backend/app/agents/chat/multi_agent_chat/subagents/builtins/walmart/agent.pysurfsense_backend/app/agents/chat/multi_agent_chat/subagents/builtins/walmart/description.mdsurfsense_backend/app/agents/chat/multi_agent_chat/subagents/builtins/walmart/system_prompt.mdsurfsense_backend/app/agents/chat/multi_agent_chat/subagents/registry.pysurfsense_backend/app/agents/chat/multi_agent_chat/constants.pysurfsense_backend/app/agents/chat/multi_agent_chat/main_agent/system_prompt/prompts/identity/private.mdsurfsense_backend/app/agents/chat/multi_agent_chat/main_agent/system_prompt/prompts/identity/team.mdsurfsense_backend/app/agents/chat/multi_agent_chat/main_agent/system_prompt/prompts/kb_first.mdsurfsense_backend/app/agents/chat/multi_agent_chat/main_agent/system_prompt/prompts/routing.mdsurfsense_mcp/mcp_server/features/scrapers/platforms/walmart.pysurfsense_mcp/mcp_server/features/scrapers/__init__.pysurfsense_backend/app/routes/__init__.pysurfsense_backend/tests/unit/platforms/walmart/test_parsers.pysurfsense_backend/tests/unit/platforms/walmart/test_flows.pysurfsense_backend/tests/unit/capabilities/walmart/test_registry.pysurfsense_backend/tests/unit/capabilities/walmart/scrape/test_schemas.pysurfsense_backend/tests/unit/capabilities/walmart/scrape/test_executor.pysurfsense_backend/tests/unit/capabilities/walmart/reviews/test_schemas.pysurfsense_backend/tests/unit/capabilities/walmart/reviews/test_executor.pysurfsense_backend/tests/unit/agents/multi_agent_chat/test_subagent_composition.pysurfsense_backend/scripts/e2e_walmart_scraper.pysurfsense_web/content/docs/connectors/native/walmart.mdxsurfsense_web/content/docs/connectors/native/index.mdxsurfsense_web/content/docs/connectors/native/meta.jsonsurfsense_web/content/docs/connectors/index.mdxsurfsense_web/content/docs/how-to/mcp-server.mdxsurfsense_web/lib/connectors-marketing/walmart.tsxsurfsense_web/lib/connectors-marketing/index.tssurfsense_web/lib/playground/catalog.tssurfsense_web/lib/playground/platform-icons.tsxsurfsense_web/public/connectors/walmart.svgsurfsense_web/app/(home)/mcp-server/page.tsxsurfsense_web/components/homepage/hero-section.tsxsurfsense_web/components/homepage/persona-paths.tsxsurfsense_web/components/seo/json-ld.tsxsurfsense_web/lib/chat/example-prompts.ts