How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
USin Country stores. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Pick SHEIN country stores and get the products from each store's home feed, with sale price, discount, local currency and USD price, with no login and no API key. Compare prices for the same product across 26 countries.
Good for
- You follow fashion prices and want to see what SHEIN shows on its home feed today.
- You sell online and want to compare one SHEIN product across countries.
- You want local prices and USD prices in one table.
- You run the same check on a schedule and keep your own price history.
Who uses it
Fashion price watchers
See what SHEIN shows on its home feed today.
Online sellers
Compare one SHEIN product across countries.
Analysts
Keep your own price history with a daily run.
Price
Prices will be shown after release.
Questions
Can I search SHEIN by keyword?
No. The tool reads only the home feed. It has no search and no product links.
How many products do I get per store?
A store usually gives 8 to 50 different products at one time.
Does it give ratings or reviews?
No. The home feed does not have ratings, reviews, sizes, colors or stock.
Do I need a SHEIN account or an API key?
No. The Actor reads public pages. You need only an Apify account.
Can I search SHEIN for a word?
No. titleFilter only keeps matching products from the home feed. It does not ask SHEIN to find them.
Can I get one product from its link?
No. The Actor reads home feeds only.
Why do I get different products in each run?
SHEIN chooses and changes the feed. Each row shows the time in fetchedAt.
How do I compare prices by country?
Read several stores in one run and group the rows by goodsId. Compare salePriceUsd, or salePrice with currency. Not every product is in every store, so some products have one row.
Why can the discount differ from a figure on the SHEIN page?
discountPercent is worked out from price and salePrice in the same row, so it fits the two prices you see.
How fresh is the data?
The Actor reads the source during the run. fetchedAt shows the time. Prices can change after that.
Details
Step by step on Apify
- On the input form, keep United States in Country stores or add other stores (box 1 in the picture).
- Keep
10in Maximum products for a first run (box 2). - Click Start.
- Open the Output tab and choose the Products view. Check
salePriceandsalePriceUsd(box 4). - Click Export to get JSON, CSV or Excel (box 5).
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Compare one product across countries | countries with several stores | Product row per store | goodsId, country, salePrice, salePriceUsd | Spreadsheet, group by goodsId |
| See what a store promotes today | countries with one store | Product | title, salePrice, discountPercent, url | Daily schedule and Google Sheets |
| Follow one product type | titleFilter, such as dress | Product | title, matchedKeywords, salePrice | Slack or Notion summary |
| Keep a price history | Same input on a schedule | Product | goodsId, salePrice, currency, fetchedAt | Your own database |
Tips for better results
- Start with the United States store and 10 products.
- Use the title filter to keep products with a word in the title.
- Run it on a schedule and save the rows to build a price history.
Limits and good to know
- Source: only the home feed of 26 SHEIN country stores. No search, no product page by link, no account data and no ROMWE
- Fields: no ratings, reviews, sizes, colors, stock or category names, because the feed does not have them
- Size: a store usually gives 8 to 50 different products. In two tests with all 26 stores, each store gave 6 to 52 rows, and the runs saved 369 and 393 rows.
maxItemsallows 1000, but a run ends when the feeds give no new products - Time: the default timeout is 900 seconds. Real runs took under 10 seconds for 10 products, under a minute for 100 products and about 5.5 minutes for all 26 stores. A shorter timeout saves what it has: in two tests with all 26 stores, a 40-second timeout gave 114 and 128 rows from 11 and 12 stores, with
status: partialandDEADLINE - Memory: 256 to 1024 MB. Outside this range the run stops at the start with
UNSUPPORTED_MEMORY - Duplicates: a product shown twice in one store gives one row. The same product in two stores gives two rows. Stores share few products: in one test with all 26 stores, 25 of 338 different products appeared in more than one store
- Title filter: titles are often in English, sometimes in the local language. A word in another language can match nothing, for example
Kleidin the Japan store
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"goodsId": "145308515",
"title": "Winter Knee High Boots Mid-Calf Pull-On Faux Fur Boots Furry Fluffy Round Toe Fashion Boots For Women Suede Plush Warm Knee High Boots Flat Shoes",
"price": 43.2,
"salePrice": 27.59,
"currency": "USD",
"priceText": "$43.20",
"salePriceText": "$27.59",
"priceUsd": 43.2,
"salePriceUsd": 27.59,
"discountPercent": 36,
"categoryId": "8507",
"images": [
"https://img.ltwebstatic.com/v4/p/spmp/2026/07/13/b1/1783935933ee693dfa6a12e4749c3ef4b38bf126da_thumbnail_405x552.png"
],
"url": "https://m.shein.com/us/Winter-Knee-High-Boots-Mid-Calf-Pull-On-Faux-Fur-Boots-Furry-Fluffy-Round-Toe-Fashion-Boots-For-Women-Suede-Plush-Warm-K-p-145308515.html",
"country": "US",
"matchedKeywords": [],
"source": "shein",
"sourceRoute": "home_feed_html",
"fetchedAt": "2026-11-07T08:58:27.021Z"
}Data fields (18)
| Field | Type | Meaning |
|---|---|---|
goodsId | string | SHEIN product ID. Use it to match one product across stores. |
title | string | Product name as shown in the store. The language can follow the store. |
salePrice | number | Current price in the store currency. Null if SHEIN did not report it. |
price | number | Price before discount in the store currency. Null if SHEIN did not report it. |
currency | string | Store currency code, such as USD or EUR. |
discountPercent | number | Discount reported by SHEIN, or worked out from the two prices. Null if neither is available. |
salePriceUsd | number | SHEIN conversion of the sale price to USD. |
priceUsd | number | SHEIN conversion of the regular price to USD. |
salePriceText | string | Sale price as shown in the store. |
priceText | string | Regular price as shown in the store. |
country | string | Country store this price came from. |
categoryId | string | SHEIN category ID. The feed has no category name. |
images | array | Product image links. |
url | string | Product page link built from the title and ID. |
matchedKeywords | array | Entries of your filter found in the title. Empty without a filter. |
source | string | Always shein. |
sourceRoute | string | Always home_feed_html. |
fetchedAt | string | Time of the read, UTC. |
Input settings (6)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Country stores | countries | array | ["US"] |
| Maximum products | maxItems | integer | 10 |
| Keep titles with these keywords (optional) | titleFilter | array | [] |
| Proxy (optional) | proxyConfiguration | object | {"useApifyProxy": true} |
| Send results to (optional) | deliveryConnector | string | |
| Notion page or channel (optional) | deliveryTarget | string |
