Supplier Catalog Converter Pro avatar

Supplier Catalog Converter Pro

Pricing

from $1.00 / 1,000 product row converteds

Go to Apify Store
Supplier Catalog Converter Pro

Supplier Catalog Converter Pro

Turn supplier price lists (CSV, TSV, XLSX, text PDF) into a validated product dataset plus WooCommerce and Shopify import CSVs. GTIN checks, duplicate and variant handling, a review queue, nothing invented.

Pricing

from $1.00 / 1,000 product row converteds

Rating

0.0

(0)

Developer

PRIVATEX

PRIVATEX

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

Turn a supplier's price list (CSV, TSV, XLSX or text-based PDF) into clean product rows, plus ready-to-import WooCommerce and Shopify CSV files, a validation report and a review queue. Missing data stays empty: no SKU, GTIN, brand, price, image or stock level is ever invented.

Who needs it

  • Online shops that receive supplier catalogs in Excel or PDF and re-type them into WooCommerce or Shopify.
  • Agencies and marketplace operators onboarding many suppliers' files in different layouts and languages.

What it does

  • Reads the file:
    • CSV and TSV (comma, semicolon or tab; quoted multi-line cells; UTF-8 with or without BOM; windows-1254 and other encodings).
    • XLSX: every sheet; the header row is found even below title rows; formulas use their stored results.
    • Text-based PDF tables, including catalogs with several "SKU | price" column pairs side by side.
  • Finds the columns: SKU, name, description, brand, GTIN/EAN/UPC, price, sale price, currency, category, size/colour/material, parent/style, stock, weight and image.
    • Header names are matched in English, Turkish, German, Spanish and French.
    • Old/previous and change/percentage price columns are skipped (for example "Old List Price" vs "New List Price").
    • Every decision is listed in the validation report. You can override any of them with columnMapping.
  • Checks every row:
    • GTIN check digits are verified.
    • Prices like 1.234,56 € and $1,234.56 are parsed. Text such as "Inquire" is never turned into a price.
    • Exact duplicate rows are merged.
    • The same SKU with different data goes to review. Both rows are kept; nothing is merged unless every product field (name, description, brand, GTIN, MPN, price, sale price, currency, category, parent, options, stock, weight, images) is identical. duplicateConflictFields lists what differs, and a stock difference is coded DUPLICATE_SKU_STOCK_DIFFERS.
    • A sale price that is filled in but is not a usable number (text or negative) is flagged SALE_PRICE_NOT_NUMERIC and goes to review, instead of being dropped silently.
    • GTINs in Excel number cells lose their leading zeros (UPC 012345678905 becomes 12345678905). The Actor adds back at most one or two zeros, only if the check digit then validates, marks the row GTIN_LEADING_ZEROS_RESTORED and sends it to the review queue: a wrong number can pass the check digit by chance, so please confirm the restored GTIN. Otherwise the value is reported as GTIN_INVALID. GTINs stored as text are never changed.
    • A price read from ambiguous "1.250"-style text that sits 50× away from the catalog median goes to review.
  • Groups variants (size, colour, material) by the supplier's parent/style code.
  • Writes the import files following the platforms' documented headers (checked 2026-10-30).
    • WooCommerce:
      • Type, SKU, GTIN, UPC, EAN, or ISBN, Name, Published, … Regular price, Sale price, Categories, Images, In stock?, Stock, Parent, Attribute 1–3.
      • Products are drafts (Published = -1) unless you choose otherwise.
    • Shopify:
      • Uses the current template: Title, URL handle, Description, Vendor, … SKU, Barcodes, Option1–3, Price, Compare-at price, Inventory quantity, Product image URL.
      • Variants share a URL handle.
      • Products are drafts unless you choose active.
    • For every target column the report says MAPPED, DEFAULTED, BLANK or UNSUPPORTED. For example, the default WooCommerce importer has no brand column.
    • Cells starting with =, +, - or @ (text, not real numbers) are neutralised against spreadsheet formula injection. The count is in the report.

What it does NOT do

  • No OCR. Scanned PDFs (pages with no text layer) are reported as OCR_REQUIRED.
  • No writes to your shop. It never connects to WooCommerce or Shopify; you import the CSV yourself.
  • No made-up data. No currency conversion, no generated SKUs or barcodes, no guessed brands, images or stock.
  • No legacy .xls. Save Excel 97-2003 files as .xlsx or CSV first.

Start in 60 seconds

  1. Press Start without giving a file. It converts a small synthetic catalog for a fictional brand. The demo shows variants, duplicates, an invalid GTIN and the review queue. No conversion events are charged for demo runs.
  2. Open WooCommerce import CSV, Shopify import CSV and Review queue in the Output tab.
  3. Paste the HTTPS link to your supplier file, or pick a key-value store record. Set the catalog currency if the file doesn't state it, then run.

Example input

{
"fileUrl": "https://example.com/supplier/price-list-2026.xlsx",
"defaultCurrency": "USD",
"wooPublished": "draft",
"shopifyStatus": "draft"
}

Example output row

This row is real: cloud run rZbPV6ENMfPEHfUiy, 2026-10-30, a public Broilmaster retail price list (XLSX). The description field is omitted here for brevity.

{
"sku": "P3PK5N",
"name": "Package 1, Stainless Cart/Base, one Side Shelf with Stainless Bracket, Natural",
"gtin": "720968971470",
"price": 2109,
"currency": "USD",
"currencySource": "user-default",
"brand": null,
"stock": null,
"weight": "116",
"issues": [],
"needsReview": false,
"source": { "file": "2026-27-Broilmaster-Retail-Price-List-Effective-10-1-26-Excel.xlsx", "sheet": "BRM Price List (List Format)", "row": 3 }
}

Two real files were converted in the cloud:

  • the Broilmaster XLSX: 477 rows, New List Price chosen over Old List Price, 0 rows needing review;
  • a public 26-page Gilson PDF price list: 5,218 rows from 5 side-by-side column groups, 228 rows in the review queue ("Inquire" prices and SKUs listed twice with different prices).

Output

WhereWhat
DatasetOne row per product: sku, name, description, brand, gtin, gtinRaw, price, salePrice, currency, currencySource, options, stock, issues, needsReview and source (file, sheet, row, or PDF page/line).
WOOCOMMERCE_CSVImport file for the WooCommerce Product CSV Importer.
SHOPIFY_CSVImport file for Shopify (Products → Import).
REVIEW_QUEUE_CSVRows a person should check first, with the reasons.
VALIDATION_REPORTColumn-mapping decisions, per-column export status, issue counts, variant groups and notes.
OUTPUTRun status: SUCCEEDED, PARTIAL_RESULT, EMPTY_INPUT or FAILED, with an error code such as INPUT_INVALID, ACCESS_DENIED, UNSUPPORTED_FORMAT, PARSE_ERROR, OCR_REQUIRED or INPUT_TOO_LARGE. Also counts and billing.

All CSV files are UTF-8 with a BOM, so Excel shows non-English characters correctly.

Pricing

Pay per event:

EventPriceWhen it is charged
product-row-converted$0.001Once per product row delivered to the dataset and the export files.
catalog-converted$0.03Once per run, when at least one row was delivered.
apify-actor-start$0.00005Once per run, by Apify.

Examples:

  • 500 rows: $0.53.
  • 5,000 rows: $5.03.

Platform usage is included.

You are not charged for:

  • exact duplicate rows;
  • empty rows;
  • failed runs;
  • demo conversion events.

The Actor respects your maximum cost per run: it converts only as many rows as the limit allows, keeps room for the catalog event and reports the rest as skippedForChargeLimit.

Limits and security

SettingDefaultMaximum
Rows (maxRows)5,00050,000
File size (maxFileSizeMb)20 MB100 MB
PDF pages (maxPdfPages)50300
  • File URLs must be HTTPS. Private, internal, loopback and cloud-metadata addresses are refused, also after redirects.
  • Oversized and compressed-bomb downloads are cut off.
  • The Actor runs with limited permissions. It can read only the key-value store you pick.
  • Your file is processed in the run and not stored anywhere else.

Known limitations

  • PDF table reading relies on a recognisable header row ("SKU", "Item", "Model No.", "Price", "US$" …). It handles single tables and repeated column groups. Complex layouts (merged cells, prices on a different line from the SKU) may need a CSV/XLSX export from the supplier.
  • When the file has no name/title column, the description column is used as the product name; the validation report says so.
  • WooCommerce variations are linked only when the file has a parent/style code. Variants found by product name alone are exported as simple products, and the report explains why.
  • Shopify and WooCommerce import prices in your store currency. Check that it matches the catalog currency.

Support

Use the Issues tab on this Actor's page.