Product Matching
Pricing
from $9.99 / 1,000 results
Product Matching
Product Matching — matches products across two datasets using identifiers, names, and brands, then returns confidence scores, matching evidence, product differences, and clear match classifications.
Pricing
from $9.99 / 1,000 results
Rating
0.0
(0)
Developer
Jamshaid Arif
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
A reusable entity-matching Actor. Give it two product datasets (A and B) and it returns, for every A record, its best B match with a confidence score, human-readable evidence, and the concrete field differences. It never claims an exact match when the confidence is insufficient.
What does this Actor do?
For each record in Dataset A it finds the most likely matching record in Dataset B and classifies the match:
exact— identifier-level agreement (SKU / GTIN / MPN / model) or a perfect normalized name + brand.probable— strong name + brand agreement.possible— plausible but weaker match.no_match— nothing cleared the confidence bar.
Matching is delegated to the repository's shared matching module, which caps confidence when hard identifiers conflict, so two different products are never reported as the same item.
Why use it?
- Reconcile a supplier catalogue against your own, or two competitor price feeds, without hand-mapping SKUs.
- Every match is auditable: you see why it matched and how the two records differ (e.g. price, availability, URL).
How to use it
- Provide Dataset A and Dataset B — inline JSON arrays (
recordsA/recordsB), or descriptors pointing at an Apify dataset (datasetA/datasetB). - Optionally set
matchFieldsto control which fields identify a product, andminConfidenceto tune strictness. - Run and export the matches.
Input
| Field | Type | Description |
|---|---|---|
recordsA / recordsB | array | Inline product records for each side. |
datasetA / datasetB | object | Advanced: {records|csv|json|datasetId|datasetUrl}. |
matchFields | object | {nameFields, brandFields, idFields, compareFields} overrides. |
minConfidence | number | 0–1; matches below this become no_match (default 0.6). |
Input example
{"recordsA": [{ "name": "Wireless Mouse", "brand": "Acme", "sku": "AM-100", "price": 19.99 }],"recordsB": [{ "name": "Acme Wireless Mouse", "brand": "Acme", "sku": "AM-100", "price": 22.50 }],"minConfidence": 0.6}
Output
One match record per A record, plus a final summary record.
Output example
{"recordType": "match","recordA": { "name": "Wireless Mouse", "sku": "AM-100", "price": 19.99 },"recordB": { "name": "Acme Wireless Mouse", "sku": "AM-100", "price": 22.50 },"matchStatus": "exact","matchConfidence": 0.98,"matchingEvidence": ["identifier 'sku' matches (am100)", "brand matches ('acme' vs 'acme')"],"differences": { "price": [19.99, 22.50] }}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Configuration
matchFields.idFields— identifier fields checked first (default: gtin, upc, ean, isbn, sku, mpn, model, manufacturerNumber).matchFields.nameFields/brandFields— fields used for name/brand similarity.matchFields.compareFields— fields whose differences are reported (default: price, currency, availability, url).
Environment variables
None. This Actor processes only the records you provide — no scraping, no proxy required.