Map Compliance Monitor avatar

Map Compliance Monitor

Pricing

from $0.80 / 1,000 products

Go to Apify Store
Map Compliance Monitor

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

E Commerce

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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?

  1. Reads your MAP policy (a JSON array of SKU → price mappings with retailer URLs)
  2. Scrapes each retailer product page using CheerioCrawler (fast, HTTP-based)
  3. Extracts the advertised price using a universal multi-strategy extractor (JSON-LD schema, meta tags, DOM selectors)
  4. Compares advertised price against your MAP price
  5. 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

ParameterTypeDefaultDescription
mapPolicyarrayMAP policy entries (required)
matchingStrategystringSKUIdentifier used in output keying (SKU / UPC / EAN / ASIN)
alertThresholdnumber0Minimum violation % to report (0 = report every penny below MAP)
maxConcurrencyinteger5Parallel pages scraped simultaneously
proxyConfigurationobjectnoneApify 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.

DatasetNameContents
Default(unnamed)One row per retailer × SKU price check — violations and compliant records
Namedretailer-summaryOne row per retailer with compliance rate, risk level, violation count
Namedcategory-summaryOne 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 MAP
  • medium — 5–10% below MAP
  • high — 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

  1. Export your existing MAP policy from your ERP, spreadsheet, or brand portal
  2. Convert to JSON format (see input format above)
  3. For each SKU, collect the direct product page URLs from each retailer you want to monitor
  4. Paste the JSON array into the mapPolicy input 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.