Cross-Retail Product Matcher avatar

Cross-Retail Product Matcher

Pricing

from $9.50 / 1,000 successful match decisions

Go to Apify Store
Cross-Retail Product Matcher

Cross-Retail Product Matcher

Match Amazon and Walmart products using identifiers, models, specifications, titles, variants, brands, and images.

Pricing

from $9.50 / 1,000 successful match decisions

Rating

0.0

(0)

Developer

LeadGen Labs

LeadGen Labs

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 days ago

Last modified

Categories

Share

Cross-Retail Product Matcher for Amazon and Walmart

Match product listings across Amazon and Walmart using GTIN, UPC, EAN, MPN, model numbers, brands, normalized titles, specifications, variants, pack quantities, conditions, and perceptual image fingerprints.

The Cross-Retail Product Matcher turns inconsistent retailer listings into explainable match decisions. Use it for product catalog matching, price-comparison data preparation, competitive retail intelligence, duplicate detection, ecommerce catalog enrichment, procurement, and marketplace analytics.

What does the Cross-Retail Product Matcher do?

The Actor answers a practical question: Do these retailer listings represent the same physical product?

It accepts two product URLs or two product catalogs, extracts Amazon and Walmart product data when needed, normalizes the evidence, rejects critical contradictions, and returns one auditable decision per source product.

Possible decisions are:

  • EXACT_MATCH: the same product and variant.
  • BASE_PRODUCT_MATCH: the same product family, but a variant such as color, capacity, size, condition, or pack quantity differs.
  • POSSIBLE_MATCH: evidence is promising but should be reviewed.
  • NOT_A_MATCH: evidence is weak or a trusted field contradicts.

Every result includes confidence, component scores, matched signals, contradictions, and variant differences. A high title similarity cannot override a conflicting GTIN or model number.

Why use product matching across retailers?

Amazon and Walmart can describe the same item differently. One listing might include a UPC, another a manufacturer part number, and another only a shortened title and image. Product matching connects those records so downstream systems can:

  • Compare prices for the same item.
  • Track retailer assortment and availability.
  • Map competitor listings to internal SKUs.
  • Merge supplier and marketplace catalogs.
  • Detect duplicate products.
  • Build shopping, affiliate, and comparison applications.
  • Prepare normalized product data for analytics or AI agents.

Quick start

  1. Choose Compare two products.
  2. Add one Amazon or Walmart product URL as the source.
  3. Add the product you want to compare as the candidate.
  4. Keep Exact product and variant selected.
  5. Click Start.
  6. Open the Dataset to inspect the decision and supporting evidence.

The Actor supports direct Amazon.com and Walmart.com product pages. Search pages and category pages are not product records and are not supported.

Matching workflows

Compare two products

Use PAIR mode to compare two known products:

{
"mode": "PAIR",
"products": [
{"url": "https://www.amazon.com/dp/B0D1XD1ZV3", "externalId": "amazon-airpods"},
{"url": "https://www.walmart.com/ip/17835006350", "externalId": "walmart-airpods"}
],
"matchLevel": "EXACT_VARIANT"
}

Match two catalogs

Use CATALOG mode to select the best candidate for every source product:

{
"mode": "CATALOG",
"sourceCatalog": [
{
"externalId": "SKU-1001",
"title": "Apple AirPods Pro 3",
"brand": "Apple",
"identifiers": {"gtin": "0195950543799"},
"attributes": {"color": "White", "packQuantity": 1}
}
],
"candidateProducts": [
{"url": "https://www.walmart.com/ip/17835006350", "externalId": "WMT-17835006350"}
],
"oneToOne": false,
"maxCandidatesPerProduct": 25
}

Catalog entries can be product URLs, structured product objects, or a mixture of both. Structured input avoids retailer requests when you already have product data.

How product matching works

The Actor uses a layered, deterministic process:

  1. Validate the workflow, limits, IDs, and product records.
  2. Reuse recent cached extractions when available.
  3. Fetch uncached URLs with browser-impersonated curl_cffi requests.
  4. Use Camoufox with sticky proxy sessions when a retailer challenges or incompletely renders a request.
  5. Extract Amazon or Walmart identity, brand, title, identifiers, variants, specifications, and images.
  6. Normalize punctuation, promotional words, units, colors, capacities, conditions, and pack quantities.
  7. Rank catalog candidates using identifiers, brand, model, and title evidence.
  8. Apply hard contradiction rules before fuzzy scoring.
  9. Calculate an explainable weighted confidence score.
  10. Save and charge only completed match decisions.

Evidence used

EvidenceRole
GTIN, UPC, EAN, ISBNStrong global product identity
MPN and model numberStrong manufacturer identity
BrandPrevents cross-brand false matches
Normalized titleHandles retailer naming differences
SpecificationsCompares shared technical properties
Variant attributesDistinguishes size, color, capacity, generation, and condition
Pack quantityPrevents single-item and multipack mismatches
Image fingerprintSupports visually similar listings without requiring equal image URLs

Missing evidence is treated as unknown, not as a mismatch.

Exact variant versus base product matching

Choose EXACT_VARIANT when each sellable variant must remain separate. A 128 GB phone and a 256 GB phone become BASE_PRODUCT_MATCH, not EXACT_MATCH.

Choose BASE_PRODUCT when variants should roll up into one product family. Variant differences are still included in the result, but a strong base-product match can be classified as exact for your selected workflow.

Input reference

FieldTypeDefaultDescription
modestringPAIRPAIR or CATALOG.
productsarrayExample pairExactly two entries for pair mode.
sourceProductsarray[]Source product URLs for catalog mode.
candidateProductsarray[]Candidate product URLs for catalog mode.
sourceCatalogarray[]Structured source records for API users.
candidateCatalogarray[]Structured candidate records for API users.
matchLevelstringEXACT_VARIANTExact variant or base-product matching.
exactMatchThresholdnumber0.9Automatic exact-match threshold.
reviewThresholdnumber0.7Minimum possible-match threshold.
oneToOnebooleanfalsePrevent reuse of a selected candidate.
maxCandidatesPerProductinteger25Highest-ranked candidates fully scored per source.
maxProductsinteger1000Safety limit across both catalogs.
maxConcurrencyinteger3Concurrent retailer requests.
maxRequestRetriesinteger2Retries before extraction failure.
requestTimeoutSecondsinteger40Direct request timeout.
cacheMaxAgeHoursinteger24Maximum age of reusable product extraction.
cacheStoreNamestringcross-retail-matcher-cacheNamed cache shared across runs.
localestringen-USBrowser and request locale.

For API users, each product can include an externalId. IDs must be unique within the run and are returned in product references.

Structured product format

A structured record requires a title plus at least one of brand, modelNumber, or identifiers.

{
"externalId": "MY-SKU-42",
"title": "Example Noise Cancelling Headphones 256GB",
"brand": "Example",
"modelNumber": "EX-200-BLK",
"identifiers": {
"upc": "012345678905",
"gtin": "0012345678905",
"mpn": "EX-200-BLK"
},
"attributes": {
"color": "Black",
"packQuantity": 1,
"condition": "New"
},
"specifications": {
"Bluetooth": "5.3",
"Battery life": "30 hours"
},
"imageHashes": ["ff00ff00ff00ff00"]
}

imageHashes accepts 64-bit hexadecimal perceptual hashes. URL extraction creates a hash from the primary image automatically when the image is accessible.

Output example

{
"recordType": "MATCH_DECISION",
"mode": "PAIR",
"sourceId": "amazon-airpods",
"candidateId": "walmart-airpods",
"classification": "EXACT_MATCH",
"confidence": 0.9482,
"scores": {
"identifier": 1,
"brand": 1,
"title": 0.89,
"variants": 1,
"images": 0.92
},
"matchedSignals": ["identifier", "brand", "title", "variants", "images"],
"contradictions": [],
"variantDifferences": [],
"reviewRequired": false,
"matchedAt": "2026-10-06T12:00:00Z"
}

Extraction failures are saved separately with recordType: FAILURE. Failed products do not produce or incur a match-decision charge.

Run with the Apify API

curl -X POST \
"https://api.apify.com/v2/acts/lead.gen.labs~cross-retail-product-matcher/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "PAIR",
"products": [
{"url": "https://www.amazon.com/dp/B0D1XD1ZV3"},
{"url": "https://www.walmart.com/ip/17835006350"}
],
"matchLevel": "EXACT_VARIANT"
}'

Do not expose an Apify API token in client-side code or a public repository.

Frequently asked questions

What is cross-retail product matching?

Cross-retail product matching is the process of deciding whether listings from different stores represent the same real-world product and variant. It combines exact identifiers with normalized text, attributes, specifications, and images.

Can it match Amazon products to Walmart products?

Yes. The first release includes Amazon.com and Walmart.com product extraction and also accepts structured records from other data sources.

Does an identical title guarantee a match?

No. Titles are supporting evidence. A conflicting GTIN, model number, capacity, pack quantity, or other critical attribute prevents an exact match.

What happens when identifiers are missing?

The Actor redistributes confidence across available evidence. Missing data is unknown. It does not automatically count as a mismatch.

Can I match my own ecommerce catalog?

Yes. Send structured source records with your SKU in externalId, then provide retailer URLs or structured products as candidates.

Does it support one-to-one catalog assignment?

Yes. Enable oneToOne to prevent one candidate from being selected for multiple successful source matches.

Is AI required?

No. Decisions are deterministic and explainable. This avoids hallucinated matches and keeps costs predictable. POSSIBLE_MATCH records identify cases that benefit from human or downstream AI review.

Why did a product extraction fail?

The URL may be unsupported, removed, incomplete, or blocked after all direct and browser retries. The failure is saved without charging a successful match decision.