Use case

Any online store's full catalog, as one clean file

Add a store by URL, see the product count and the price, and get every product with prices, stock, images and specs in one schema. You don't write or maintain a scraper.

One store is a weekend project. Keeping fifty of them working is a job.

Writing a scraper for one store is easy. Then the site gets a new layout, or a bot wall, or splits products into variants, and your data goes quiet without an error. Every store also names its fields differently, so each new source needs its own mapping before you can use it.

How it works

  1. 1
    Analyze · freeAdd the store by URL.You get the product count, a difficulty tier, the price and a sample of real products. Ten stores a month are free.
  2. 2
    ScrapeApprove the quote.The full catalog is collected, cleaned and checked. Large or protected stores can take many hours. You get an email when it's done.
  3. 3
    DownloadOne file per store.JSON Lines, gzip-compressed, the same fields for every store. Re-run the scrape when you want fresh data.

Try it now

Create a project, paste the store URL, check the sample, approve the quote, then download the file from Exports.

Open the console

What the data looks like

One product from a real export, trimmed. Every store comes back in this shape, one product per line, with the full field list in the docs.

What you can do with it

Same fields for every store, so a new store is a new file, not a new mapping.

allbeauty.com-gb-gbp.jsonl
{
"website_id": "allbeauty.com-gb-gbp",
"product_url": "https://allbeauty.com/products/p-beauty-of-joseon-calming-serum-green-tea-panthenol-60ml-1323145",
"name": "Beauty Of Joseon Calming Serum: Green Tea + Panthenol 60ml",
"brand": "Beauty Of Joseon",
"price": 21.6,
"price_standard": 27.0,
"price_discounted": 21.6,
"currency": "GBP",
"availability": "In stock - Usually dispatched within 24 hours",
"availability_extracted": "IN_STOCK",
"ean": "8809968131069",
"image_url": "https://allbeauty.com/cdn/shop/files/1323145.jpg?v=1793012553&width=1000",
"images_gallery": [
"https://allbeauty.com/cdn/shop/files/1323145-13231452-239214.jpg?v=1793012553&width=1000",
"…"
],
"description": "A lightweight serum formulated to soothe skin irritated by UV rays and other external stressors, using 50% …",
"specification": "Camellia Sinensis Leaf Water, Water, Panthenol, Glycerin, …",
"first_seen": 1793315931056,
"last_seen": 1793315931056
}

Real rows from allbirds.com, scraped in November 2026

ProductPriceRegular priceVariantCategory
Women's Tree Pipers$77$110Blizzard/Vivid Redwomens
Allbirds Slipper$75$75–unisex
Women's Cruiser Coastal$145$145True NavyWomen's Cruiser Coastal
Men's Cruiser$120$120Buoy YellowMen's Cruiser
Women's Varsity$120$120Blizzard/Dark AnthraciteWomen's Varsity

What it costs

The allbirds.com scrape above

Analyze1 store, one of 10 free a month€0
Scrape234 products × €0.40 per 1k (easy store)€0.10
Total€0.10

The quote said 360 products and €0.14. The scrape collected 234, and you pay for what was collected; €0.10 is the minimum charge per job.

Scrape your first store

Paste a store URL. You see the product count, a sample and the exact price before you pay. The analysis is free for 10 stores a month.

Questions

What format is the export?

JSON Lines, gzip-compressed, one file per store. Each line is one product with the same fields for every store: name, prices, availability, images, brand, EAN, SKU, category, description and specification. Full field list in the docs.

Can I get a CSV?

The export is JSON Lines, gzip-compressed. One line of pandas turns it into a CSV: pd.read_json("store.jsonl.gz", lines=True).to_csv("store.csv", index=False).

How is this different from Apify, Octoparse or Scrapy?

Those give you a scraper to configure, run or write, and to fix when the store changes. Here you send the store's URL and get its whole catalog in one fixed schema, with the price quoted before anything runs.

Does it work on Shopify, WooCommerce or Magento?

Yes, and on custom-built stores. The free analysis tells you the product count and the difficulty tier before you pay.

Do I get EAN codes?

When the store shows them, yes. Many stores don't, so to compare the same product across stores, use matching. It works without EAN.

How do I keep the data fresh?

Re-run the full scrape, or scrape a list of product URLs to update just those prices. There are no scheduled runs yet, so use your own cron.

What if the store blocks bots?

That's what the difficulty tier is for. Protected stores cost more per product, and the analysis tells you the tier before you pay.

Which stores work?

Online stores on any platform. Marketplaces like Amazon, eBay and Allegro are not supported.

What if the scrape collects fewer products than quoted?

You pay for what was collected. If nothing is collected, the job fails and nothing is charged.

To make it all work

We use marketing and analytics cookies to learn how you use the product. That helps us improve it and show you relevant ads.