Multi-Retailer MAP & Price-Violation Monitor
Pricing
from $4.00 / 1,000 listing records
Multi-Retailer MAP & Price-Violation Monitor
Monitor product prices across Target, Walmart, Best Buy and Newegg, then flag MAP (minimum advertised price) violations and unauthorized resellers. Cross-retailer SKU matching by UPC/MPN, graded violation severity, daily monitor mode. For brands and MAP enforcement.
Pricing
from $4.00 / 1,000 listing records
Rating
0.0
(0)
Developer
Seibs.co
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Monitor a brand's products across multiple retailers, match each SKU across their disparate catalogs, and detect MAP (Minimum Advertised Price) violations and unauthorized resellers - from logged-out public product pages.
Single-retailer price scrapers are a commodity (priced to the floor). The value here is the layer enterprise MAP tools gate behind quote-based pricing: "here are my SKUs - flag everywhere they're advertised below MAP, and by whom." That means two things this actor owns end to end:
- Cross-retailer SKU matching + normalization - one product collapsed across retailers by UPC / MPN / fuzzy name, with one normalized price/seller schema.
- MAP violation detection - advertised price below the floor, graded by severity, cross-referenced against your authorized-seller list.
Responsible use (read this). Retailer Terms of Service treat scraping as a gray area, so this actor is deliberately conservative: logged-out public product pages only, polite rate limits, capped result counts, no account creation, no login, no CAPTCHA bypass. A blocked retailer fails soft with a documented record - we never fabricate a price. Use within each retailer's terms and your own legal counsel's guidance. You are responsible for how you use the output.
Modes
| Mode | What it returns | Charges |
|---|---|---|
price_scan | Normalized public price rows per product across retailers (the flat listings). | listing_record |
cross_retailer_match | Each product collapsed into one cross-retailer view: which retailers carry it, price spread (min/median/max), lowest offer. | listing_record + sku_match |
map_monitor (flagship) | Everything above + MAP-violation detection with graded severity, seller identity, and unauthorized-seller flags, plus a violation summary. | + map_violation_flag per violation |
seller_audit | Offers grouped by seller, with unauthorized third-party resellers flagged and a below-MAP cross-reference. | listing_record + map_violation_flag |
Retailer coverage (honest labelling)
| Retailer | Code | Access | Anti-bot | Coverage |
|---|---|---|---|---|
| Target | target | RedSky public web JSON | moderate | full |
| Best Buy | bestbuy | search HTML | high (Akamai) | full |
| Newegg | newegg | search HTML | moderate | full |
| Walmart | walmart | __NEXT_DATA__ JSON (browser tier) | high (PerimeterX) | full |
| The Home Depot | homedepot | GraphQL via browser | high | catalog* |
| Lowe's | lowes | SPA state blob | high | catalog* |
| Costco | costco | search HTML | high | catalog* |
| B&H Photo | bhphoto | search HTML | moderate | catalog* |
| Wayfair | wayfair | SPA | high | catalog* |
| Macy's | macys | SPA | high | catalog* |
| Micro Center | microcenter | product grid HTML | low | catalog* |
* catalog = registered with the correct public surface, access method,
anti-bot tier and proxy, and wired into the escalation pipeline, but a
retailer-specific parser is pending. These emit a documented retailer_pending
note rather than fabricated data. Upgrading one to full is a single parser -
the orchestrator, matcher, violation engine, and monitor layers are
retailer-agnostic. The live access_notes record in every run reports the full
matrix and which tier each fetch used.
Anti-bot escalation
On a block, the fetch ladder escalates instead of giving up:
httpx (datacenter) -> curl_cffi Chrome-TLS impersonation (residential)-> patchright stealth browser (residential) -> fail-soft
use_browser_fallback (default on) enables the curl_cffi + browser tiers; Walmart
and the WAF-fronted retailers need them. The optional CAPTCHA solver is off by
default and never invoked by the shipped recipes - a CAPTCHA wall fails soft.
Set browser_cdp_url to point the browser tier at a warm anti-detect browser for
the toughest managed-challenge retailers.
Input
{"mode": "map_monitor","products": [{"label": "Sony WH-1000XM5 Headphones","brand": "Sony","model": "WH-1000XM5","upc": "027242923058", // best: exact cross-retailer match"mpn": "WH1000XM5/B","query": "Sony WH-1000XM5", // search string (defaults to label)"map_price": 399.99, // authoritative MAP floor"authorized_sellers": ["Best Buy", "Crutchfield"]}],"retailers": ["target", "bestbuy", "newegg", "walmart"],"default_map_price": null, // fallback floor for products with no map_price"infer_map": false, // infer an ADVISORY MAP proxy when none supplied"authorized_sellers": ["Best Buy"], // run-wide list; per-product overrides it"max_results_per_retailer": 24,"use_browser_fallback": true}
Quick path: skip products and pass search_terms: ["Sony WH-1000XM5", "Bose QC Ultra"]
to monitor by name. Supply a UPC or MPN for exact matching; supply map_price
for authoritative violation flags.
MAP threshold priority: per-product map_price -> run-wide default_map_price
-> (if infer_map) an inferred proxy from the observed cross-retailer price
distribution (manufacturer list/MSRP anchor). Inferred thresholds are advisory
and clearly labelled (map_source: "inferred_*" + a _disclaimer); they are not
your contractual MAP.
Output
One dataset; record_type distinguishes rows: listing, sku_match,
seller_audit, violation_summary, access_notes, fetch_error,
retailer_pending, no_match.
A listing in map_monitor mode:
{"record_type": "listing","product_query": "Sony WH-1000XM5 Headphones","matched": true, "match_method": "upc", "match_confidence": 1.0,"retailer": "walmart", "seller": "DealZone Electronics", "seller_type": "third_party","title": "Sony WH-1000XM5 Wireless Noise Cancelling Headphones - Black","upc": "027242923058", "mpn": "WH1000XM5B","price": 348.0, "list_price": 399.99, "availability": "in_stock","map_threshold": 399.99, "map_source": "user","map_violation": true, "violation_amount": 51.99, "violation_pct": 0.13,"violation_severity": "moderate","unauthorized_seller": true, "enforcement_priority": true,"url": "https://www.walmart.com/ip/1872934501", "via": "browser"}
Dataset views: overview (AI-agent / dashboard skim), violations (the enforcement worklist - below-MAP listings only), detailed (every field).
Severity grading
violation_pct = how far below MAP the price is. minor <=5%, moderate 5-15%,
severe >15%. A price exactly at MAP is compliant (at_map: true).
enforcement_priority: true marks a below-MAP price from an unauthorized
seller - the top target.
Pricing (pay-per-event)
| Event | Price | When |
|---|---|---|
listing_record | $0.004 | Per normalized listing matched to your SKU. |
sku_match | $0.008 | Per product collapsed across retailers (non-price_scan modes). |
map_violation_flag | $0.012 | Per listing flagged below MAP (the premium signal). |
scheduled_delta_run | $0.050 | Per scheduled monitor run (new-violations digest). |
A _RunBudget guard caps runaway compute and a hard record cap protects against
unbounded cost; over-large inputs are rejected pre-flight and routed to a labelled
demo run rather than failing.
Monitor mode (ongoing violation alerts)
Save your config as a task and schedule it (Apify Console -> Schedules). On a
scheduled run the actor computes the delta vs the prior run, emits a
monitor_digest of new violations / price drops, optionally POSTs it to a
Slack monitor_webhook_url, and charges one scheduled_delta_run. This is the
recurring, compliance-driven workflow brands actually pay for.
Running it
In the Apify Console: pick a mode, add your products + retailers, Start. Or via API:
apify call YOUR_USERNAME/map-price-monitor --input '{"mode": "map_monitor","search_terms": ["Sony WH-1000XM5"],"retailers": ["target", "bestbuy", "newegg"],"default_map_price": 399.99}'
AI agents: use the paired mcp-map-price-monitor MCP server
(scan_prices, check_map_violations, match_across_retailers, audit_sellers)
- x402 (USDC on Base) and Skyfire ready.