PrestaShop · Catalog Copy by Store URL
Pricing
from $0.95 / 1,000 product exporteds
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
Maintained by CommunityActor 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 goal | Suggested setup |
|---|---|---|
| Agency migrating a client | Move products from shop A to shop B | Source URL + reimport on, with the client’s webservice key |
| Merchant opening a second shop | Clone names, photos and SKUs | Cap 25 first, then maxProducts = 0 |
| Merchandising / research | Competitor prices and photos | Export only (reimport off) |
| Ops / PIM | Spreadsheet or JSON feed | Default 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
- Open the Actor in Apify Console.
- 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). - Leave Product cap at 25 for a first try (empty,
null, or 0 for the full catalog). - Leave Reimport off unless you are ready to write into another shop.
- Click Start. Download JSON or CSV from the dataset.
Ready-made examples (published tasks)
| Example | Best for |
|---|---|
| Export a PrestaShop catalog from the store URL | First export, capped sample |
| PrestaShop product sample for a test import | Check fields before a full run |
| Copy a PrestaShop catalog into another shop | A → B with a webservice key |
| PrestaShop competitor catalog snapshot | Prices and photos, export only |
What it extracts
| Category | Fields |
|---|---|
| Identity | productName, reference, ean13, sourceProductId, sourceUrl |
| Offer | priceTaxIncl, currency, quantity, manufacturer, categoryName |
| Content | productDescription, descriptionShort, features |
| Media | imageUrl, 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
| Field | Required | Default | Notes |
|---|---|---|---|
shopUrl | yes | — | Public storefront home |
maxProducts | no | empty / 0 = no cap | Form prefill is 25. Empty, null, or 0 = full catalog (time limit still applies). Free Apify plan: 20 products per run. |
concurrency | no | 24 | Parallel product pages (max 32). Use 24–32 for thousands of SKUs. |
importToShop | no | false | Write to a destination shop |
destShopUrl | if import | — | Destination front URL |
destApiKey | if import | — | Webservice key (secret) |
taxRatePercent | no | 20 | Source 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
- Opens the public home page and checks it looks like PrestaShop.
- Collects product URLs from the XML sitemap when it exists, then from category / listing pages on the public storefront.
- Reads each product page (embedded product JSON, then JSON-LD, then markup).
- Writes one dataset row per product as soon as it is parsed.
- 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%). AligncategoryId/taxRulesGroupIdwith 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:
| Scenario | Events | Approx. list price |
|---|---|---|
| 25 products, export only | 25 × product row | ~$0.02 |
| 1,000 products, export only | 1,000 × product row | ~$0.95 |
| 1,000 products, with reimport | 1,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.
Is it legal to scrape PrestaShop?
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-copynpm install# storage/key_value_stores/default/INPUT.json must include shopUrl# or: apify run --input-file=./input.jsonapify runnpm 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.