Catalog Matching
Send two product records from any supplier, marketplace, or feed. Find out whether they're the same purchasable item, a different variant of the same product, or a different product, along with the attributes that agree and the ones that conflict.
- Distinguishes exact variants from product families
- Normalizes units, attribute names, and identifier formats
- Validates GTIN, UPC, and EAN check digits
- Says "uncertain" instead of guessing an exact match
{
"product_a": {
"title": "Apple iPhone 16 Pro 256GB Black Titanium",
"brand": "Apple",
"model": "iPhone 16 Pro",
"attributes": {
"storage": "256GB",
"color": "Black Titanium"
}
},
"product_b": {
"title": "iPhone 16 Pro - Black Titanium - 256 GB",
"brand": "Apple",
"model": "iPhone 16 Pro",
"attributes": {
"storage": "256 GB",
"color": "Black Titanium"
}
}
}{
"request_id": "req_6tVb1QmXcR8pLz3K",
"match_type": "same_variant",
"requires_review": false,
"matched_attributes": [
"brand",
"model",
"storage",
"color"
],
"conflicting_attributes": [],
"normalized": {
"brand": "Apple",
"model": "iPhone 16 Pro",
"attributes": {
"storage": "256GB",
"color": "Black Titanium"
}
}
}The same product, described a hundred ways
Suppliers and marketplaces format titles, units, and identifiers differently. Deciding whether two listings are the same item matters: a wrong match causes inventory errors and fulfillment problems.
Where teams use it
- Supplier onboarding
- Marketplace listing deduplication
- Price comparison feeds
- Catalog clean-up
- Compares two records per request; no catalog search, ingestion, or storage.
- Never adds specifications that aren't in your records.
- Doesn't convert between units or resolve marketing color names.
One HTTP call
const response = await fetch("https://kovca.io/api/v1/catalog/match", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.KOVCA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"product_a": {
"title": "Apple iPhone 16 Pro 256GB Black Titanium",
"brand": "Apple",
"model": "iPhone 16 Pro",
"attributes": {
"storage": "256GB",
"color": "Black Titanium"
}
},
"product_b": {
"title": "iPhone 16 Pro - Black Titanium - 256 GB",
"brand": "Apple",
"model": "iPhone 16 Pro",
"attributes": {
"storage": "256 GB",
"color": "Black Titanium"
}
}
}),
});
if (!response.ok) {
const { error, request_id } = await response.json();
throw new Error(`${error.code}: ${error.message} (${request_id})`);
}
const { match_type, requires_review, conflicting_attributes } = await response.json();Related APIs
- Returns Intelligence
Classify return requests, check them against your return policy, and get a suggested next step.
- Compatibility Intelligence
Determine whether two products work together using structured specifications, compatibility rules, and intelligent evaluation.
- Listing Intelligence
Check product listings for contradictions, missing attributes, unsupported claims, and your listing requirements before publication.
- Warranty Intelligence
Classify warranty claims, check them against the warranty terms you supply, and get the next workflow step.