curl https://api.zinc.com/search?q=cast+iron+skillet \
-H "Authorization: Bearer <your_api_key>"
import requests
res = requests.get(
"https://api.zinc.com/search",
params={"q": "cast iron skillet"},
headers={"Authorization": "Bearer <your_api_key>"},
)
res.raise_for_status()
results = res.json()["results"]
const res = await fetch(
"https://api.zinc.com/search?q=" + encodeURIComponent("cast iron skillet"),
{ headers: { Authorization: "Bearer <your_api_key>" } }
);
const { results } = await res.json();
{
"status": "completed",
"query": "cast iron skillet",
"results": [
{
"url": "https://www.wayfair.com/cookware/pdp/lodge-cast-iron-skillet-6-5-...",
"retailer": "wayfair",
"title": "Lodge Cast Iron Skillet 6.5\" Black/Gray, Pre-Seasoned",
"image": "https://thf.bing.com/th?id=OPHS.DO%2fNmrRBpgF0sA474C474&w=220&h=220",
"brand": null,
"price": 1890,
"stars": 4.7,
"num_reviews": 1000,
"available": null
},
{
"url": "https://www.homedepot.com/p/10-5-in-Cast-Iron-Skillet-In-Black/...",
"retailer": "homedepot",
"title": "10.5 in. Cast Iron Skillet In Black",
"image": "https://thf.bing.com/th/id/OPHS.Jv2SxDM0Y6PO8g474C474?w=220&h=220",
"brand": null,
"price": 2490,
"stars": 4.7,
"num_reviews": 1000,
"available": null
},
{
"url": "https://www.target.com/p/lodge-12-cast-iron-skillet/-/A-...",
"retailer": "target",
"title": "Lodge 12\" Cast Iron Skillet: Preseasoned, Non-Stick, Scratch-Resistant",
"image": "https://thf.bing.com/th/id/OPHS.W0Kf0gUKdW1yoA474C474?w=220&h=220",
"brand": null,
"price": 2999,
"stars": 4.7,
"num_reviews": 1000,
"available": null
},
{
"url": "https://www.amazon.com/dp/B00006JSUC",
"retailer": "amazon",
"title": "Lodge L8SK3 10.25-inch Pre-Seasoned Cast Iron Skillet",
"image": "https://m.media-amazon.com/images/I/81ysMDr2VgL._AC_UL320_.jpg",
"brand": "Lodge",
"price": 2497,
"stars": 4.8,
"num_reviews": 132840,
"available": true
}
]
}
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key",
"details": null
}
}
{
"detail": "Insufficient wallet balance for data API call"
}
Cross-Retailer Search
Search every retailer Zinc supports in a single API call to compare products and prices (beta).
curl https://api.zinc.com/search?q=cast+iron+skillet \
-H "Authorization: Bearer <your_api_key>"
import requests
res = requests.get(
"https://api.zinc.com/search",
params={"q": "cast iron skillet"},
headers={"Authorization": "Bearer <your_api_key>"},
)
res.raise_for_status()
results = res.json()["results"]
const res = await fetch(
"https://api.zinc.com/search?q=" + encodeURIComponent("cast iron skillet"),
{ headers: { Authorization: "Bearer <your_api_key>" } }
);
const { results } = await res.json();
{
"status": "completed",
"query": "cast iron skillet",
"results": [
{
"url": "https://www.wayfair.com/cookware/pdp/lodge-cast-iron-skillet-6-5-...",
"retailer": "wayfair",
"title": "Lodge Cast Iron Skillet 6.5\" Black/Gray, Pre-Seasoned",
"image": "https://thf.bing.com/th?id=OPHS.DO%2fNmrRBpgF0sA474C474&w=220&h=220",
"brand": null,
"price": 1890,
"stars": 4.7,
"num_reviews": 1000,
"available": null
},
{
"url": "https://www.homedepot.com/p/10-5-in-Cast-Iron-Skillet-In-Black/...",
"retailer": "homedepot",
"title": "10.5 in. Cast Iron Skillet In Black",
"image": "https://thf.bing.com/th/id/OPHS.Jv2SxDM0Y6PO8g474C474?w=220&h=220",
"brand": null,
"price": 2490,
"stars": 4.7,
"num_reviews": 1000,
"available": null
},
{
"url": "https://www.target.com/p/lodge-12-cast-iron-skillet/-/A-...",
"retailer": "target",
"title": "Lodge 12\" Cast Iron Skillet: Preseasoned, Non-Stick, Scratch-Resistant",
"image": "https://thf.bing.com/th/id/OPHS.W0Kf0gUKdW1yoA474C474?w=220&h=220",
"brand": null,
"price": 2999,
"stars": 4.7,
"num_reviews": 1000,
"available": null
},
{
"url": "https://www.amazon.com/dp/B00006JSUC",
"retailer": "amazon",
"title": "Lodge L8SK3 10.25-inch Pre-Seasoned Cast Iron Skillet",
"image": "https://m.media-amazon.com/images/I/81ysMDr2VgL._AC_UL320_.jpg",
"brand": "Lodge",
"price": 2497,
"stars": 4.8,
"num_reviews": 132840,
"available": true
}
]
}
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key",
"details": null
}
}
{
"detail": "Insufficient wallet balance for data API call"
}
GET /search returns a single ranked list of buyable products across every supported retailer — Amazon, Walmart, Target, Best Buy, Home Depot, Lowe’s, Costco, Wayfair, Macy’s, and more — in one call.
Each result’s url is the orderable retailer URL: pass it directly to Create order. There is no opaque sku id and no separate ASIN / item-id field — the URL is the contract.
This is distinct from the per-retailer /products/search, which searches one retailer at a time. Use /search when you want breadth.
Pricing
| Price | $0.01 per call, drawn from your wallet |
| Charged | On each successful search, before any order is placed |
| Empty wallet | 402 with {"detail": "Insufficient wallet balance for data API call"} |
| Sandbox | Free — zn_test_ keys are never metered |
GET /wallet/me rather than retrying into a 402.POST /agent/search is the same search at the same price, paid per request instead of from a wallet.
Ranking
Results are ranked by a quality signal that combines rating and review volume, with price as a tiebreaker for unrated items. The list is then woven across retailers so a single retailer doesn’t dominate the top — typically you’ll see two or three different retailers in the first few results.Filtering and sorting
All three parameters are optional. With none set, a search behaves exactly as described above.| Parameter | Description |
|---|---|
retailer | Only return results from these retailers. Repeat it for several: ?retailer=amazon&retailer=target. Accepts the slugs listed in the parameter reference below, etsy, and up to 3 Shopify stores (see below). |
sort | relevance (default), price_asc, price_desc, or rating. |
limit | Return at most this many results, 1–50. |
limit, if larger) that match at least half the query, then sort those, so a cheap accessory that merely names the product can’t lead a price_asc page. Results with no price (or no rating, for rating) sort last.
A search costs one billed call whatever limit you set.
Shopify stores
retailer also takes up to 3 Shopify stores, by their retailer slug (e.g. retailer=yetch) or domain. GET /retailers/check?url= returns a store’s slug.
- A store in the filter is searched directly, using the store’s own search. A filter of only stores (
?retailer=yetch) searches just those stores; mix in other retailers (?retailer=amazon&retailer=yetch) and the results are ranked together. - Each result’s
urlis on the store’s public domain, so it goes straight to Create order.retaileris the store’s slug. - With a live key, a store not yet in Zinc’s catalog is checked and added the first time you name it by domain, exactly as on Search Products, with the same
422,503and429answers when it can’t be. In test mode and onPOST /agent/search, an uncatalogued store returns422. - More than 3 stores returns
422. If one store’s search fails, the others’ results are still returned. - It’s still one billed call, however many stores the filter names.
Etsy
retailer=etsy (or etsy.com) searches Etsy directly, the same way a store is searched. Etsy can be combined with other retailers and stores, and it doesn’t count toward the 3-store limit.
- Each result’s
urlis the Etsy listing.retailerisetsy. - Results have no
starsornum_reviews. Etsy publishes no product-level rating, sosort=ratingputs Etsy results last. - Only listings priced in US dollars are returned.
has_variantssays whether a listing has options, such as size or color, that must be chosen before it can be ordered.falsemeans it can be ordered as is. When it’strue, the API can’t tell you what the options are: Etsy shares them only with the listing’s own shop. Read them from the listing page, then pass the buyer’s choice asvariantwhen you create the order: one{label, value}pair per option, using the option name and choice as the listing shows them (e.g.{"label": "Size", "value": "Large"}). Etsy won’t cart a listing with options until one is chosen, so expect an order withoutvariantto fail.has_variantsisnullon other retailers’ results.
curl "https://api.zinc.com/search?q=cast+iron+skillet&retailer=amazon&retailer=target&sort=price_asc&limit=10" \
-H "Authorization: Bearer <your_api_key>"
Beta limits
- No condition filter — used / marketplace listings may appear when the source doesn’t expose condition.
- Coverage varies by query; some long-tail and DTC retailers may not appear.
retaileris the only filter; there’s no brand, category, or rating filter yet.- Shopify stores and Etsy appear only when named in
retailer; an unfiltered search doesn’t include them. - Response shape may add fields (e.g. condition, shipping ETA). Existing fields won’t be removed without notice.
Help shape the beta
Customer interview — 30 minutes · $50 Amazon gift card
/search. Tell us what queries you’re running, what coverage you need, and what’s missing. As a thank-you we’ll send you a $50 Amazon gift card.curl https://api.zinc.com/search?q=cast+iron+skillet \
-H "Authorization: Bearer <your_api_key>"
import requests
res = requests.get(
"https://api.zinc.com/search",
params={"q": "cast iron skillet"},
headers={"Authorization": "Bearer <your_api_key>"},
)
res.raise_for_status()
results = res.json()["results"]
const res = await fetch(
"https://api.zinc.com/search?q=" + encodeURIComponent("cast iron skillet"),
{ headers: { Authorization: "Bearer <your_api_key>" } }
);
const { results } = await res.json();
{
"status": "completed",
"query": "cast iron skillet",
"results": [
{
"url": "https://www.wayfair.com/cookware/pdp/lodge-cast-iron-skillet-6-5-...",
"retailer": "wayfair",
"title": "Lodge Cast Iron Skillet 6.5\" Black/Gray, Pre-Seasoned",
"image": "https://thf.bing.com/th?id=OPHS.DO%2fNmrRBpgF0sA474C474&w=220&h=220",
"brand": null,
"price": 1890,
"stars": 4.7,
"num_reviews": 1000,
"available": null
},
{
"url": "https://www.homedepot.com/p/10-5-in-Cast-Iron-Skillet-In-Black/...",
"retailer": "homedepot",
"title": "10.5 in. Cast Iron Skillet In Black",
"image": "https://thf.bing.com/th/id/OPHS.Jv2SxDM0Y6PO8g474C474?w=220&h=220",
"brand": null,
"price": 2490,
"stars": 4.7,
"num_reviews": 1000,
"available": null
},
{
"url": "https://www.target.com/p/lodge-12-cast-iron-skillet/-/A-...",
"retailer": "target",
"title": "Lodge 12\" Cast Iron Skillet: Preseasoned, Non-Stick, Scratch-Resistant",
"image": "https://thf.bing.com/th/id/OPHS.W0Kf0gUKdW1yoA474C474?w=220&h=220",
"brand": null,
"price": 2999,
"stars": 4.7,
"num_reviews": 1000,
"available": null
},
{
"url": "https://www.amazon.com/dp/B00006JSUC",
"retailer": "amazon",
"title": "Lodge L8SK3 10.25-inch Pre-Seasoned Cast Iron Skillet",
"image": "https://m.media-amazon.com/images/I/81ysMDr2VgL._AC_UL320_.jpg",
"brand": "Lodge",
"price": 2497,
"stars": 4.8,
"num_reviews": 132840,
"available": true
}
]
}
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid API key",
"details": null
}
}
{
"detail": "Insufficient wallet balance for data API call"
}
Authorizations
Zinc API key (Bearer zn_...)
Headers
Query Parameters
Search term
1Cents. Drop results priced below this.
x >= 0Cents. Drop results priced above this. Pass the max_price you intend to send to POST /orders and every result returned fits it. Results with no known price are dropped when a clamp is set.
x >= 0Only return results from these retailers. Repeat the param for several: ?retailer=amazon&retailer=target. Takes the discovery retailers (amazon, bestbuy, bhphotovideo, chewy, costco, homedepot, kohls, lowes, macys, newegg, staples, target, walmart, wayfair), etsy, and up to 3 catalogued Shopify stores by their Zinc retailer slug (e.g. retailer=yetch; a store's domain also works). Etsy and stores are searched directly, and only when named here: an unfiltered search never includes them. Etsy results are listings: when has_variants is true the order needs a variant, and the options must be read from the listing page, because Etsy shares them only with the listing's own shop. With a live key, a Shopify store not yet catalogued is added on first use by its domain.
Result order. relevance (default) blends query match, source rank and rating, and mixes retailers. The explicit sorts order the 20 most relevant results (or limit, if larger) that match at least half the query, so accessories that merely name the product don't lead; results with no price (or no rating, for rating) sort last.
relevance, price_asc, price_desc, rating Return at most this many results (1-50). One search is one billed call either way.
1 <= x <= 50Response
Successful Response
Response from the cross-retailer search endpoint.

