Shein Catalog Scraper - Product IDs, Titles & Images avatar

Shein Catalog Scraper - Product IDs, Titles & Images

Pricing

from $0.19 / 1,000 catalogue entries

Go to Apify Store
Shein Catalog Scraper - Product IDs, Titles & Images

Shein Catalog Scraper - Product IDs, Titles & Images

Scrape Shein's public catalogue for 13 storefronts: one row per entry with the product id, full title, product link, image link and Shein's date stamp. Filter by title words. No prices, stock or sizes, which Shein's catalogue does not carry. No account needed. $0.20 per 1,000 rows.

Pricing

from $0.19 / 1,000 catalogue entries

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

19 hours ago

Last modified

Share

Pick a Shein storefront and get its public catalogue as rows: product id, full title, product link, image link and Shein's own date stamp, for 13 storefronts. Germany alone lists 5,271,135 products, and one run can take up to 100,000 of them.

There are no prices, no stock and no sizes in it, on any storefront, and no setting that adds them. If you need Shein prices, this is the wrong purchase however cheap the rows are.

InputA storefront, plus optional title words and a date
OutputOne row per catalogue entry: product id, full title, product link, image link and date stamp, no prices
Ceiling100,000 rows or 20 catalogue files per run, whichever comes first
Account neededNone
Price$0.20 per 1,000 rows on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 25,000

🔍 What Shein Catalog Scraper does

It reads the catalogue Shein publishes for each storefront and hands it over one entry per row. If you need the list itself, every product id and title on a storefront or every listing whose title says "cargo", this is what it does.

Shein splits a storefront's catalogue into files of 12,000 entries. The files do not overlap (file 1 and file 221 were checked and share none of their ids), so startFile lets you walk the whole catalogue across several runs without repeating yourself. Every row names the file it came from.

The run stops the moment it has the rows you asked for, even halfway through a file. A 12,000-row run took nine seconds in testing.

Filters work on entries as they are read, because there is no search behind a catalogue file. A narrow filter therefore reads a lot and delivers a little. That costs time, not money, since you only pay for rows delivered, and maxSitemapFiles puts a limit on how far it hunts.

updatedSince is not a change feed. Shein re-stamps the whole catalogue at once, not each product when it changes. On 2026-09-20 two files read end to end were 12,000 of 12,000 on one date, and every file in the index carried it. So the date says when Shein last regenerated the catalogue. Set it to yesterday and you may get everything; set it to tomorrow and you get nothing. A run can also come back with today's date and yesterday's side by side, though inside one file the date is always the same. To see what really changed, pull the ids and compare them with your last pull.

📋 What data you get from each Shein catalogue entry

What you getField
Shein's product idproductId
The full title as Shein publishes ittitle
The product page and one imageurl, imageUrl
Shein's date stamp and change hintlastmod, changefreq
The catalogue file it came fromsourceSitemap
The storefront, the entry type and when it was readregion, contentType, scrapedAt
Price, always nullprice
What kind of row it isok, recordType

▶️ How to scrape the Shein catalogue

  1. Open Shein Catalog Scraper and click Try for free.
  2. Choose a Storefront.
  3. Set Maximum rows. Start small, 200 is plenty for a first look.
  4. To narrow it down, add words under Only titles containing one of these words.
  5. Click Start, then download the dataset as JSON, CSV or Excel.

Run it with no storefront chosen and you get one free sample row showing the shape.

💰 How much does it cost to scrape the Shein catalogue?

$0.20 per 1,000 rows on the Free plan. Paid plans pay a little less: $0.198 on Starter, $0.196 on Scale and $0.194 on Business. One catalogue file's worth of rows, 12,000 of them, comes to $2.40. On the free plan, the $5 Apify gives you each month covers about 25,000 rows.

Not charged: the sample row, every note, rows your filters drop, and any file that fails or comes back empty. A run that matches nothing charges for no rows at all. If you set a maximum cost for the run, it stops there and says so, rather than going over.

📥 What you give it

{
"region": "de",
"maxItems": 200,
"titleContains": ["cargo"],
"maxSitemapFiles": 10
}
FieldDefaultWhat it is
regionnone, which gives a free sample rowThe storefront: de, uk, it, es, pt, nl, pl, fr, ro, at, se, ch or tr. gb works for the UK. Each has its own ids, links and titles in its own language.
maxItems200Rows to return, 1 to 100,000. Keep it low while testing, since you pay per row.
contentTypeproductsproducts is the catalogue, and the only type with titles and images. categories and stores are category and store pages, carrying just a link and a date.
titleContainsnoneUp to 20 words. A row is kept if its title or link contains any one of them, ignoring case.
updatedSincenoneA date as YYYY-MM-DD. Keeps entries stamped on or after it. Read the warning above first.
maxSitemapFiles10How many catalogue files one run may open, 1 to 20. With no filter, nine files cover the 100,000-row limit.
startFile1Where in the catalogue to begin, 1 to 500. A number past the end is refused before anything is read, and the note says how many files that storefront has today.
proxyUrlsnoneYour own servers, one per line as http://user:pass@host:port, if you want the run to go out through them. Leave it empty otherwise.

📤 What you get back

A real row from a run on the German storefront on 30 September 2026:

{
"ok": true,
"recordType": "catalogEntry",
"region": "de",
"contentType": "products",
"productId": "87740328",
"title": "Suitcases",
"url": "https://de.shein.com/Suitcases-p-87740328.html",
"imageUrl": "https://img.ltwebstatic.com/v4/j/spmp/2025/05/23/c8/174797332031d410969cc879219609176ffc61bd82_square.jpg",
"lastmod": "2026-09-29",
"changefreq": "daily",
"sourceSitemap": "sitemap-products-1.xml",
"scrapedAt": "2026-09-30T02:32:29.470Z",
"price": null
}
FieldHow to read it
productIdShein's id, taken from the link. Null on category and store rows.
titleThe full title as Shein publishes it. On category and store rows it is read off the link, because Shein gives those no title.
imageUrlEmpty on category and store rows.
lastmodShein's date stamp, YYYY-MM-DD. One date for the whole catalogue, not a per-product change date.
sourceSitemapThe catalogue file the row came from, so you know where to resume.
priceAlways null. It is there so nobody has to wonder whether a missing key means they did something wrong.

🧾 Reading the output

RowHow to spot itBilled
A catalogue entryrecordType: "catalogEntry"yes
The sample_sample: true, recordType: "sample", charged: falseno
A note_diagnostic: true, recordType: "diagnostic", charged: false, with an errorCodeno

To keep only real rows, filter on recordType equal to catalogEntry. Filtering on ok: true is not enough, because the sample row carries it too. Each note carries an errorCode, a short error and a details line saying what happened.

errorCodeWhat it means
BAD_INPUTA storefront this cannot read, or a startFile past the end. The note lists what is available.
NO_RESULTSNothing to deliver. Your filters matched nothing (the note lists the catalogue's dates), the storefront has no files of that type today, or a file was empty.
NOT_FOUNDThat storefront's catalogue was not there on this run.
TIME_BUDGETThe run hit its time limit before it had read every file. The rows it read are in the dataset and nothing was charged for the rest; the row names the file to start from next time. The run ends as failed only when the time limit stopped it before any row came back.
RATE_LIMITED, NETWORKA catalogue file, or the storefront's index, did not come back or stopped part way. Rows already returned stay in the dataset, and after a failed file the run moves on to the next one.
NOT_SERVEDThis request was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED.
UNEXPECTED_ERRORSomething broke. Rows already written are kept.
PROXY_INPUT_ADJUSTEDA connection setting sent through the API is not offered here and was adjusted.

💡 What people use it for

  • Keeping a list of every product id on a storefront and comparing it week to week. Ids that appear are new listings, ids that vanish are gone.
  • Pulling every listing whose title mentions a word, like cargo or linen, across a storefront.
  • Counting how often a style, material or fit turns up in product titles.
  • Collecting product links and images for a set of listings you then check by hand.

🚧 What it does not do

  • No prices. Not on any row, any setting or any storefront.
  • No stock, sizes, colours, ratings, reviews or seller data either. The catalogue says what exists, not what it costs or whether it is in stock.
  • Thirteen storefronts, mostly European. There is no US, Mexican, Brazilian, Indian, Canadian, Australian or Japanese storefront in the list, and no setting that adds one.
  • lastmod cannot tell you what changed. It is one date stamped across the whole catalogue.
  • No translation. Titles come in the storefront's own language.
  • One run is one storefront. Four storefronts means four runs.
  • An entry is not proof a product is for sale. A listing leaving the catalogue is the only sign you get that it went away.
  • It is not an official Shein tool. Dami's Studio is independent and is not affiliated with or endorsed by Shein, or by any other company named on this page.

🧭 Which fashion and retail scraper do you need?

If you wantUse
Shein product ids, titles, links and imagesThis one
Zara products with sizes, stock and pricesZara Scraper
A Shopify store's whole catalogue, variants and stockShopify Products Scraper
TikTok Shop products with prices and units soldTikTok Shop Scraper
AliExpress search results with prices and order countsAliExpress Products Scraper

❓ Questions people ask

Can I get Shein prices from this?

No. Not with a setting, a different storefront or your own servers. The catalogue carries no price.

How many products does Shein list?

Germany lists 440 files, 5,271,135 products. The UK has slightly more and Turkey the fewest, at 307 files. The 13 storefronts hold about 60 million between them.

How do I pull a whole storefront?

Run it repeatedly, moving startFile forward. The sourceSitemap on your last row tells you how far the previous run got.

How do I find what changed since last week?

Compare this week's ids with last week's. updatedSince cannot do it, for the reason above.

Do I need a Shein account or an API key?

No. The catalogue is public.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/shein-catalog-scraper. Either way the run happens on your Apify account at the same price.

It reads a catalogue Shein publishes openly, with no login. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page and send the input you used and the run ID; the note rows in the dataset usually name the file and the reason already.