Shopify Product Search | Cross-Store SKU Match & CSV avatar

Shopify Product Search | Cross-Store SKU Match & CSV

Pricing

from $1.70 / 1,000 matched product records

Go to Apify Store
Shopify Product Search | Cross-Store SKU Match & CSV

Shopify Product Search | Cross-Store SKU Match & CSV

Search public Shopify product feeds for stores you select, using SKU, vendor, tag and price filters. Export CSV and identify shared SKUs across stores. No global store index, currency conversion or private stock quantity.

Pricing

from $1.70 / 1,000 matched product records

Rating

0.0

(0)

Developer

Practical AI Lab

Practical AI Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Search the public product feeds of Shopify stores you are permitted to read, filter by SKU, title, vendor, product type, tag and price, and export reproducible JSON (dataset) and CSV files.

SKU sourcing search report — store-by-store coverage

Start from the free-to-configure public demo: Shopify Product Search — SKU & Vendor Example. Use the fictional inline products to see the output without asking for access to a shop.

For B2B catalog reconciliation, supply one or more permitted public Shopify store URLs, then use skuExact to audit a list of SKU values. The new SEARCH_COVERAGE_REPORT JSON file tells your buying team:

  • How many source products were scanned, matching product/variant rows exported and distinct observed SKUs by store.
  • Which exact SKUs were not observed in the pages you were permitted to inspect (this does not prove the SKU is not sold).
  • Which store feed failed, reached a limit, or returned no matching records, with an actionable next step.
  • Whether result scope may be limited by maxPagesPerStore or maxResults.

This is calculated from existing export rows, so it does not require more storefront requests or charge an extra event. The output is useful for supplier catalog QA, store-to-store SKU reconnaissance, repeated assortment checks and procurement spreadsheet exports. Cross-store matches are candidates only; verify product identity and store currency separately.

Example filters: {"storeUrls":["https://store-you-can-access.example"],"skuExact":["SKU-100","SKU-200"],"maxPagesPerStore":2,"maxResults":50}. Replace the example domain and confirm you are authorized to read the store.

What makes it different

  • SKU-first: one record per matching variant, with the SKU and a matchedOn list that explains why it matched. A product-level mode is also available.
  • Reproducible: every run writes RUN_SUMMARY with an input fingerprint and a results hash; every record carries a recordHash, so you can diff two exports and see what changed.
  • Spreadsheet-safe CSV: EXPORT_CSV neutralises cells that start with =, +, - or @.
  • Offline mode: paste product objects you already hold (inlineProducts) and search them with the same filters, with no network request.
  • Conservative by design: https only, public hostnames only, robots.txt is checked first, requests are paced and size-limited, redirects are not followed.

Quick start (copy and run)

The default input searches built-in sample products, so it works without any store:

{
"query": "outdoor",
"vendors": ["Harbor & Pine"],
"granularity": "variant",
"maxResults": 100
}

To read a live store you are permitted to collect from:

{
"storeUrls": ["https://shop.example.com"],
"skuContains": ["TRS-"],
"onlyAvailable": true,
"maxPagesPerStore": 4,
"requestDelayMs": 1000,
"maxResults": 200
}

Replace shop.example.com with a real store. You are responsible for confirming you may use that store's data.

Input

FieldMeaning
storeUrlsUp to 10 store root URLs or domains.
inlineProductsProduct objects in Shopify products.json format (up to 5000).
queryAll words must appear in SKU, title, variant title, vendor, type, tags or handle.
skuContains / skuExactSKU fragments or exact SKUs (case-insensitive).
vendors, productTypes, tagsExact vendor/type match; any-of tags.
minPrice, maxPriceVariant price bounds.
onlyAvailableKeep variants marked available.
granularityvariant (default) or product.
maxResults1-5000 records.
maxPagesPerStore1-20 pages of up to 250 products.
requestDelayMs500-10000 ms between requests.
writeCsvSave EXPORT_CSV.

Output

Dataset records contain store, productId, variantId, sku, title, variantTitle, vendor, productType, tags, price, compareAtPrice, available, matchedOn, matchedVariantCount, productUrl, imageUrl, updatedAt and recordHash.

Key-value store: EXPORT_CSV (same records) and RUN_SUMMARY (fingerprint, results hash, per-store status, caveats).

Example record:

{
"store": "inline-data",
"sku": "HP-BTL-750-BL",
"title": "Insulated Water Bottle",
"vendor": "Harbor & Pine",
"price": "24.50",
"available": true,
"matchedOn": ["tags"],
"matchedVariantCount": 1
}

Limitations and sample-size caveats

  • Results are a snapshot of a public feed at run time, not a full or guaranteed-complete catalog. Only the first maxPagesPerStore pages are read, so large catalogs can be partly scanned; check productsScanned and stopReason in RUN_SUMMARY.
  • Many stores disable /products.json, disallow it in robots.txt, rate-limit, or redirect. Those stores are skipped with a reason, never bypassed. If robots.txt cannot be read cleanly, the store is skipped.
  • Feeds do not include currency, tax, shipping or stock counts. available is a flag, not a quantity.
  • Feed ordering can change between runs, so identical filters may return a different first N records on a changing store. Compare recordHash values rather than row positions.
  • Hostname safety is checked by DNS before each store is read; this reduces but cannot fully eliminate DNS-rebinding risk.
  • Searches are plain text matching, with no fuzzy matching or synonyms.
  • This Actor has not been validated as having paying demand; treat any adoption figures for similar tools as unproven.

Responsible use

Only collect data from stores where you have the right to do so, and follow each store's terms. The Actor does not collect personal data, log in, use proxies or read private storefront areas.

Billing

The code emits one product-record event per exported record, after the record is stored. Runs that fail validation or stores that error produce no events. The Apify Store Pricing tab shows the current pay-per-event plan.

Local tests

python -m unittest discover -s tests runs offline tests of the filtering, URL safety, robots handling and CSV logic.

Cross-store SKU overlap report (new)

When multiple permitted Shopify store feeds are scanned, the Actor now writes SKU_CROSS_STORE_AUDIT in Key-value storage and a crossStoreSkuAudit section in RUN_SUMMARY. These identify normalized SKUs that appear in two or more different stores, with each published product title, product URL, price display and availability flag.

B2B use case: Identify candidate equivalent products across supplier or retailer catalogs, export the overlap report for merchant review, and rerun after each catalog refresh. Unlike raw search results, the report groups the same SKU across stores and preserves the source links.

Important: A shared SKU alone does not prove identical products. Published Shopify feeds do not reveal currency, tax, shipping or private stock quantity. The tool does not calculate cross-store price winners or claim normalized prices. Inline sample-only mode is excluded from cross-store comparisons. This feature creates no additional paid event: billing is still per exported product record as shown in the Store Pricing tab.