Map Compliance Monitor
Pricing
from $0.80 / 1,000 products
Map Compliance Monitor
Scrapes advertised prices from retailer product pages and detects Minimum Advertised Price (MAP) violations. Outputs a compliance report with violation details, retailer risk levels, and category breakdowns.
Pricing
from $0.80 / 1,000 products
Rating
0.0
(0)
Developer
E Commerce
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Automatically scrape advertised prices from retailer product pages and detect Minimum Advertised Price (MAP) violations — no manual checking required. Give the actor your MAP policy and a list of retailer URLs, and it returns a full compliance report with violation details, retailer risk scores, and category breakdowns.
What Is MAP Compliance Monitoring?
MAP (Minimum Advertised Price) is a pricing policy brands set to prevent retailers from advertising products below a minimum price. Retailers who violate MAP agreements undercut authorized sellers, erode brand value, and can trigger price wars. Monitoring compliance manually across dozens of retailers and hundreds of SKUs is time-consuming and error-prone. This actor automates the entire process.
What Does This Actor Do?
- Reads your MAP policy (a JSON array of SKU → price mappings with retailer URLs)
- Scrapes each retailer product page using CheerioCrawler (fast, HTTP-based)
- Extracts the advertised price using a universal multi-strategy extractor (JSON-LD schema, meta tags, DOM selectors)
- Compares advertised price against your MAP price
- Outputs:
- Per-violation records (SKU, retailer, prices, violation %, severity)
- Retailer compliance summary (risk level: High / Medium / Low)
- Category breakdown (most violated SKUs per category)
- Full JSON report saved to the Key-Value Store as
MAP_COMPLIANCE_REPORT
The actor handles strike-through/was-now pricing (ignores old price, uses current), auth-walled prices (flags requiresAuth: true), and scraping errors (soft-fail — the run never crashes).
Use Cases
- Brand protection teams monitoring authorized retailers weekly or monthly
- E-commerce managers verifying compliance after pricing policy updates
- Wholesale brands tracking whether distributors honour MAP agreements
- Marketplace sellers auditing competitors to identify policy violation patterns
Input Format
The core input is a mapPolicy array. Each entry describes one product and lists the retailer URLs to check:
[{"sku": "TG-1001","upc": "123456789012","productName": "Pro Wireless Headphones","category": "Audio","mapPrice": 299.99,"currency": "USD","effectiveDate": "2025-01-01","expirationDate": "2026-12-31","retailers": [{ "name": "ElectroMart", "url": "https://electromart.com/product/tg1001" },{ "name": "BargainTech", "url": "https://bargaintech.com/product/tg1001" }]}]
Required fields per entry: sku, productName, mapPrice, retailers
Optional fields: upc, category, currency (default: USD), effectiveDate, expirationDate
Other Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mapPolicy | array | — | MAP policy entries (required) |
matchingStrategy | string | SKU | Identifier used in output keying (SKU / UPC / EAN / ASIN) |
alertThreshold | number | 0 | Minimum violation % to report (0 = report every penny below MAP) |
maxConcurrency | integer | 5 | Parallel pages scraped simultaneously |
proxyConfiguration | object | none | Apify proxy settings (recommended for large catalogs) |
Output Format
The actor writes three datasets — one per report type — plus a full JSON report in the Key-Value Store.
| Dataset | Name | Contents |
|---|---|---|
| Default | (unnamed) | One row per retailer × SKU price check — violations and compliant records |
| Named | retailer-summary | One row per retailer with compliance rate, risk level, violation count |
| Named | category-summary | One row per category with violation count and most-violated SKU |
All three appear under the run's Storage tab in the Apify Console.
Dataset 1 — Violation Records (default)
Each row represents one retailer check for one SKU:
{"violationId": "VIO-001","sku": "TG-1001","productName": "Pro Wireless Headphones","category": "Audio","mapPrice": 299.99,"currency": "USD","retailerName": "ElectroMart","retailerUrl": "electromart.com","advertisedPrice": 279.99,"requiresAuth": false,"violationAmount": -20.00,"violationPercentage": -6.7,"severity": "medium","status": "open","productUrl": "https://electromart.com/product/tg1001","detectedAt": "2026-01-15T14:22:00Z"}
Severity levels:
low— violation less than 5% below MAPmedium— 5–10% below MAPhigh— more than 10% below MAP
Dataset 2 — Retailer Compliance Summary (named: retailer-summary)
One row per retailer. Use this to rank retailers by risk and identify repeat offenders:
{"retailerName": "BargainTech","productsMonitored": 32,"violationCount": 5,"complianceRate": 84.4,"riskLevel": "high","avgViolationAmount": -22.50,"repeatedViolator": true}
Risk levels: high (<90% compliance) · medium (90–95%) · low (>95%)
Dataset 3 — Category Breakdown (named: category-summary)
One row per product category. Use this to spot which product lines are most affected:
{"category": "Audio","productsMonitored": 52,"violationCount": 8,"mostViolatedSku": "TG-1001","avgViolationPercentage": -7.2}
Key-Value Store — Full Report
All three datasets are also bundled into a single JSON report saved to the Key-Value Store under the key MAP_COMPLIANCE_REPORT, with top-level reportMetadata, violations, retailerSummary, and categorySummary. Useful for downstream integrations that prefer one file over three datasets.
How to Prepare Your MAP Policy File
- Export your existing MAP policy from your ERP, spreadsheet, or brand portal
- Convert to JSON format (see input format above)
- For each SKU, collect the direct product page URLs from each retailer you want to monitor
- Paste the JSON array into the
mapPolicyinput field in the Apify Console
Tip: Start with your top 20 highest-risk SKUs and 5–10 known retailers to validate the setup before scaling to your full catalog.
Frequently Asked Questions
Is this legal to use?
Yes. The actor scrapes publicly visible advertised prices — the same prices any consumer would see on a product page. It does not bypass authentication, access private data, or violate CFAA. MAP monitoring of public prices is a standard brand-protection practice. Always check the retailer's Terms of Service for your jurisdiction.
Does it work on Amazon?
Yes. Amazon product pages (ASIN URLs like amazon.com/dp/B0XXXXX) are supported. Use matchingStrategy: ASIN when monitoring Amazon.
What if a price is behind a login wall?
The actor detects common auth-wall patterns and flags those records as requiresAuth: true. These are excluded from violation detection since the public advertised price is not visible.
Can I use this with the Apify API or MCP?
Yes. The actor is fully API-compatible. Call it via the Apify API or via the Apify MCP server for AI-native integrations.
How do I schedule automatic monitoring?
In the Apify Console, open the actor and click Schedule to run it daily, weekly, or monthly. You can also trigger it via the API from your own systems.
How accurate is the price extraction?
The actor uses a layered extraction strategy: JSON-LD structured data (most reliable), meta tags, and DOM selectors. For major retailers (Amazon, Best Buy, Walmart, Target, B&H, etc.) accuracy is high. For niche or heavily JavaScript-rendered retailers, enable proxies or contact support.
What happens if a retailer URL changes or returns a 404?
The actor records a NOT_FOUND error for that entry and continues with the rest of the policy. The run always exits successfully regardless of individual page errors.
Does it capture historical violation data?
Each run produces a timestamped report. Save results across runs in a shared Apify dataset to build a violation history timeline.
How many SKUs and retailers can I monitor per run?
There is no hard limit. For large catalogs (500+ SKUs, 30+ retailers), enable proxies and set maxConcurrency to 10–15. A catalog of 500 SKUs × 10 retailers = 5,000 pages typically completes in 20–40 minutes with concurrency 10.
Can I export results to Excel or CSV?
Yes. From the Apify dataset view, click Export and select CSV or Excel. You can also call the dataset API with ?format=csv to integrate into your reporting pipeline.
Pricing
This actor runs on Apify's pay-per-use infrastructure. A typical run of 100 SKUs × 10 retailers (1,000 pages) costs approximately $0.05–$0.15 depending on page complexity and proxy usage. Use Apify Residential Proxies for anti-bot protection on major retailers.