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
- 1Analyze · 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.
- 2ScrapeApprove 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.
- 3DownloadOne 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 consoleWhat 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.
Same fields for every store, so a new store is a new file, not a new mapping.
{"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
| Product | Price | Regular price | Variant | Category |
|---|---|---|---|---|
| Women's Tree Pipers | $77 | $110 | Blizzard/Vivid Red | womens |
| Allbirds Slipper | $75 | $75 | – | unisex |
| Women's Cruiser Coastal | $145 | $145 | True Navy | Women's Cruiser Coastal |
| Men's Cruiser | $120 | $120 | Buoy Yellow | Men's Cruiser |
| Women's Varsity | $120 | $120 | Blizzard/Dark Anthracite | Women's Varsity |
What it costs
The allbirds.com scrape above
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.
Read next
- Use case: Build a price-comparison site
- Guide: Best scraping APIs for e-commerce, benchmarked
- Guide: Why scrapers rot