PrestaShop · Catalog Copy by Store URL avatar

PrestaShop · Catalog Copy by Store URL

Pricing

from $0.95 / 1,000 product exporteds

Go to Apify Store
PrestaShop · Catalog Copy by Store URL

PrestaShop · Catalog Copy by Store URL

Copy a public PrestaShop catalog into another shop: titles, photos, descriptions, SKUs and features. Optional webservice reimport. No admin login on the source. Export-ready rows.

Pricing

from $0.95 / 1,000 product exporteds

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Copy a public PrestaShop catalog into a clean dataset — titles, photos, descriptions, SKUs and features — and optionally reimport those products into another PrestaShop with a webservice key.

No login on the source shop. No back-office access. Destination key only if you turn reimport on.

Built for: agencies migrating shops · merchants cloning a catalog · merchandising / competitor snapshots · ops teams who need a spreadsheet first

Who is this for?

You are…Typical goalSuggested setup
Agency migrating a clientMove products from shop A to shop BSource URL + reimport on, with the client’s webservice key
Merchant opening a second shopClone names, photos and SKUsCap 25 first, then maxProducts = 0
Merchandising / researchCompetitor prices and photosExport only (reimport off)
Ops / PIMSpreadsheet or JSON feedDefault run, then export CSV

What you get by default — one row per product: name, reference (SKU), tax-included price, short and long description, feature lines, image URLs.

When to turn reimport on — you already have a destination PrestaShop and a webservice key with products, images and stock. The Actor upserts by reference. Combinations (sizes/colors as variants) are not fully cloned in this version: they land as a simple product, with features appended to the description.

Quick start

  1. Open the Actor in Apify Console.
  2. Paste the public home URL of the PrestaShop you want to copy from (the page customers see — not demo.prestashop.com, which only launches a demo).
  3. Leave Product cap at 25 for a first try (empty, null, or 0 for the full catalog).
  4. Leave Reimport off unless you are ready to write into another shop.
  5. Click Start. Download JSON or CSV from the dataset.

Ready-made examples (published tasks)

ExampleBest for
Export a PrestaShop catalog from the store URLFirst export, capped sample
PrestaShop product sample for a test importCheck fields before a full run
Copy a PrestaShop catalog into another shopA → B with a webservice key
PrestaShop competitor catalog snapshotPrices and photos, export only

What it extracts

CategoryFields
IdentityproductName, reference, ean13, sourceProductId, sourceUrl
OfferpriceTaxIncl, currency, quantity, manufacturer, categoryName
ContentproductDescription, descriptionShort, features
MediaimageUrl, images, imageCount
Import (optional)imported, destProductId, importAction, imagesUploaded, importError

Missing values on the source stay null. Import fields stay empty unless reimport is on. Magento-style storefronts (JSON-LD, data-price-amount, SKU in the URL) are filled the same way as Classic PrestaShop.

Input

FieldRequiredDefaultNotes
shopUrlyesPublic storefront home
maxProductsnoempty / 0 = no capForm prefill is 25. Empty, null, or 0 = full catalog (time limit still applies). Free Apify plan: 20 products per run.
concurrencyno24Parallel product pages (max 32). Use 24–32 for thousands of SKUs.
importToShopnofalseWrite to a destination shop
destShopUrlif importDestination front URL
destApiKeyif importWebservice key (secret)
taxRatePercentno20Source prices are usually tax included; destination stores tax-excluded. 0 keeps the number as-is

API-only (not on the Console form): productUrls (skip discovery), verboseLogs, categoryId (default 2), languageId (default 1), taxRulesGroupId (default 1), proxyConfiguration.

Export only

{
"shopUrl": "https://shop.example",
"maxProducts": 25,
"importToShop": false
}

Copy into another shop

{
"shopUrl": "https://source-shop.example",
"maxProducts": 0,
"importToShop": true,
"destShopUrl": "https://destination-shop.example",
"destApiKey": "YOUR_WEBSERVICE_KEY",
"taxRatePercent": 20
}

Output example

{
"shopUrl": "https://shop.example",
"sourceUrl": "https://shop.example/2-hummingbird-printed-tshirt.html",
"sourceProductId": 2,
"productName": "Hummingbird printed t-shirt",
"reference": "demo_1",
"ean13": null,
"priceTaxIncl": 23.9,
"currency": "EUR",
"quantity": 300,
"manufacturer": "Studio Design",
"categoryName": "Men",
"imageUrl": "https://shop.example/img/p/1/1.jpg",
"imageCount": 2,
"images": ["https://shop.example/img/p/1/1.jpg"],
"features": ["Composition: Cotton", "Property: Short Sleeve"],
"imported": false,
"destProductId": null,
"importAction": null,
"scrapedAt": "2026-08-24T12:00:00.000Z"
}

How it works

  1. Opens the public home page and checks it looks like PrestaShop.
  2. Collects product URLs from the XML sitemap when it exists, then from category / listing pages on the public storefront.
  3. Reads each product page (embedded product JSON, then JSON-LD, then markup).
  4. Writes one dataset row per product as soon as it is parsed.
  5. If reimport is on: creates or updates the destination product by reference, uploads photos on create, and sets stock when the source exposes a quantity.

Limitations

  • Simple products only on import. Combinations (size/color) are not recreated as PrestaShop combinations. Features are copied into the description.
  • Not a full shop clone. Modules, related products, layered navigation, specific prices, carriers and CMS pages are out of scope.
  • Tax. Front-office prices are usually tax included. Import converts with taxRatePercent (default 20%). Align categoryId / taxRulesGroupId with your destination catalog if you use non-default groups.
  • Photos on update. Existing destination products are updated (name, texts, price) without re-uploading images, to avoid duplicates.
  • Source must be public PrestaShop. Shopify, WooCommerce and custom stacks fail fast with a clear error.
  • Official PrestaShop live demo launcher (demo.prestashop.com) is not a catalog. Paste a real public shop URL. The Console prefill is a public Classic demo shop so Try works without extra setup.

How much does it cost to copy a PrestaShop catalog?

HTTP-only (no browser). You pay Apify compute plus pay-per-event:

ScenarioEventsApprox. list price
25 products, export only25 × product row~$0.02
1,000 products, export only1,000 × product row~$0.95
1,000 products, with reimport1,000 rows + 1,000 imports~$4.95

product-row = $0.00095 (~$0.95 per 1,000) — same ballpark as other public catalog scrapers. Reimport is the extra: $0.004 per product actually written to the destination shop. Failed pages and skipped imports are not billed. No actor-start fee. Compute stays low on datacenter proxy.

This Actor only reads data the source shop already shows to any visitor. You are responsible for complying with the shop’s terms, GDPR and any licence on product photos or texts — especially if you reimport into a commercial shop. Do not copy catalogs you do not have rights to reuse.

Also available

Shopify Catalog · Products by Store URL — export a public Shopify catalog (one row per variant).

PrestaShop Addons · Publisher Emails — unique Addons publishers and contact emails (leads, not catalogs).

Local development

cd prestashop-catalog-copy
npm install
# storage/key_value_stores/default/INPUT.json must include shopUrl
# or: apify run --input-file=./input.json
apify run
npm test

storage/ is local only and is not uploaded (apify push). Cloud input overwrites keys from repo input.json.

Support

Contact corentin@outreacher.fr if you need combinations cloned, a custom mapping, or a scheduled A → B sync.