Olive Young Product Scraper: Ingredients & Prices
Pricing
from $0.84 / 1,000 checked rows
Olive Young Product Scraper: Ingredients & Prices
Scrape Olive Young prices, stock and full ingredient lists with this Olive Young product scraper: search by keyword, category, product URL or best-seller page; each row carries discount, rating, size, maker and distributor at one price. Optional review statistics. No login.
Pricing
from $0.84 / 1,000 checked rows
Rating
0.0
(0)
Developer
Pradio Actors
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
What does Olive Young Product Scraper do?
Olive Young Product Scraper returns one row per product, with price, stock, rating and the store's flags: trending, selling fast, on sale. It reads Olive Young Global, the international store, on its public pages. No login, no browser.
Include product info and each row carries the ingredients, size, maker and country when the store prints them, and names the fields left empty. You give it a word, a link or a product number. Each product is billed as a Checked row. $4.00 per 1,000 checked rows on the Free plan, down to $0.84 per 1,000 on Gold, Platinum and Diamond. A search that matches nothing comes back uncharged.
{"keyword": "laneige","maxItems": 50}
The sample shows two of the inputs: Search terms, links or product numbers, and Maximum items.
Who uses Olive Young Product Scraper
| Buyer | What they run it for |
|---|---|
| K-beauty importers | Price, discount and stock checks before buying |
| Brand and category analysts | Ratings, review counts and promotions by brand |
| Trend researchers | What the store flags as best, trending or new |
| Sourcing and compliance teams | Whole categories with ingredients, maker and country |
Features
- Ingredients in the price. The ingredient list, the panel's text, size, maker and country arrive with the row, and the extra read is inside the row price.
- Search like a shopper. Your words go to the store's own search, so the rows are what a shopper sees.
- Search inside a category. Type cream, pick Skincare, and you get the creams in Skincare.
- Best sellers with their rank. The store's ranked list, store-wide or in one category, in its own order.
- Price per 100 ml or 100 g. Pack sizes compared without doing the sums.
- Price watch. Each row carries the last price and stock beside today's.
- Review statistics on request. The rating and count come on every row; the average over all reviews is optional.
- Filters and sorting. Brands by name or store id, a price range, a minimum rating, words in the name, seven orders.
- Variants and flags. Every option gets its own price, stock, barcode and an image link where the store prints one.
What you can count on
- You pay only for rows with an answer; anything it cannot answer comes back as a row naming what you gave it and why.
- Every row is charged after it lands in your dataset, so no row is billed before you can see it.
- A run that finds nothing returns one row saying so, never an empty dataset.
- A spending limit stops the run cleanly, with a last row saying how many rows came back and how many did not.
- Every run saves a summary of what it read, returned and charged, so a short run is easy to tell from a broken one.
- If the store refuses the product list or answers with an error, the run stops and says so in the log rather than returning empty rows. A panel that only fails leaves that row standing, with its status field saying so.
- No value is invented: a field the store leaves out is left empty, and the row names it.
Why this one
| Olive Young Product Scraper | The other scraper on the Store | |
|---|---|---|
| Price per 1,000 products | $4.00 | $7.80 |
| Ingredients, size and maker | Included in the row price | Billed separately at $32.40 per 1,000 |
The other scraper on the Store ran on 29 September; ours ran on 24 October, with the same search words both sides. Its run stopped early, so its 24 rows are a floor and the row counts were never compared. On a test list of 14 store pages outside our own reads, 10 returned products and 4 returned nothing.
What data does Olive Young Product Scraper return?
One real product from a "laneige" search, cut to the fields buyers check first, with the ingredient list shortened to three entries. The price is the store's own on 24 October 2026, and the store moves its prices, so read it as that day's price.
{"product_title": "LANEIGE Cream Skin 170mL (+50mL)","brand": "LANEIGE","price": 31.20,"inStock": true,"displayed_rating": 4.8,"size": "170ml (+50ml)","ingredients": ["Water", "Butylene Glycol", "Glycerine"],"manufacturer_and_distributor": "Amorepacific Corporation","country_of_manufacture": "South Korea","url": "https://global.oliveyoung.com/product/detail?prdtNo=GA240925584","status": "ok"}
Every field the dataset declares, in order. Seven are read from the product's own page: gtin, options, subtitle, selling_fast, is_trending, promo_label and thumbnailImage, each one empty where the store prints none. The picture is the product page's own, one link per product.
| Field | What it holds |
|---|---|
thumbnailImage | The product's picture |
url | The store page |
brand | Brand name |
price | Selling price |
currency | Price currency |
inStock | Purchasable now |
category | The category |
product_id | The product number |
product_title | Display title |
input | Search line answered |
status | ok, or the miss name |
reason | Why it went unanswered |
brand_id | Brand identifier |
original_price | List price when discounted |
discount_rate | Percentage off |
on_promotion | Promotion flag |
option_price_min | Lowest option price |
option_price_max | Highest option price |
displayed_rating | Star rating shown |
review_count | Reviews reported |
stock_qty | Units in stock |
sold_out | Sold-out flag |
is_new | New-product flag |
is_best | Best-seller flag |
category_path | Category breadcrumb |
category_id | Category identifier |
attributes | Attribute labels |
specs | Grouped spec values |
images | Every product image |
image_count | Images on the row |
product_details | Extra store facts |
position | Place in the list |
rank_source | Which list it is from: read: and live: for a ranking, :category- with the store's number, which does not name the shelf, a brand part, filtered by that brand |
category_scanned | 1 on the first ranked row |
not_stated | Fields the store left empty |
gtin | Barcode |
options | Every variant |
subtitle | Subtitle line |
selling_fast | Selling-fast flag |
is_trending | Trending flag |
promo_label | Promotion label |
size | Panel's size |
size_ml | Own size in millilitres |
size_g | Own size in grams |
price_per_100ml | Price per 100 ml |
price_per_100g | Price per 100 g |
prev_price | Last run's price |
prev_in_stock | In stock last run |
row_state | New, changed or unchanged |
suitable_for | Skin types the panel names |
shelf_life | Shelf life the panel states |
manufacturer_and_distributor | Maker and distributor |
country_of_manufacture | Country of manufacture |
ingredients | Ingredient names |
ingredients_text | Panel's own ingredient text |
functional_cosmetic | Whether the panel flags it a functional cosmetic |
product_info_status | Panel read: read, no_panel, read_failed or off |
detail_status | Detail page read: read or read_failed |
review_status | Figures read: read, read_failed or no_summary |
rating_avg | Average rating |
rating_distribution | Star counts |
latest_review_date | Newest review date |
skin_type_distribution | Reviewer skin types |
reviews_covered | Reviews read |
row_type | ROW, ITEM_STATUS, NO_MATCHING_ITEMS, STOPPED_EARLY or PROGRESS |
rowsFetched | Rows handed over |
rowsReturned | Rows that reached you |
rowsRemaining | Fetched rows not returned |
The two ingredient fields differ on purpose: ingredients is one name per entry with the shade labels taken out, and ingredients_text is the panel's own block.
How much does it cost?
$4.00 per 1,000 checked rows on the Free plan, and less on paid plans. Bronze $1.25, Silver $1.00, and $0.84 per 1,000 on Gold, Platinum and Diamond. Each product is billed as Checked row, and the charge lands after it reaches your dataset.
| Plan | Per checked row | Per 1,000 checked rows |
|---|---|---|
| Free | $0.004 | $4.00 |
| Bronze | $0.00125 | $1.25 |
| Silver | $0.001 | $1.00 |
| Gold, Platinum, Diamond | $0.00084 | $0.84 |
Starting a run is charged $0.00005, once, on the 256 MB it runs with.
A row that names a miss is not charged. You pay for product rows, not for the progress or stop rows.
Ranking a whole category by rating
A whole category with Sort set to Highest rated is charged one extra event, and it is Category scanned, at $0.0110 on the Free plan.
The store's own order does not rank by rating, so a true rating ranking has to see every product in the category. The category is read as cards, and every product tied with the top rating is then read live. On one run 2,446 products were read and 359 of them read live, about 6 minutes for three rows. The rank is rating first and review count second. The review count that breaks a tie is the store's own: 358 of Moisturizers' 2,446 products sit at the 5.0 maximum, so a read cannot stop at the first page.
Each category you rank is billed once, whatever rows you keep, and the charge comes after the first ranked row has landed in your dataset.
A keyword search by rating is charged this when you pick a category to search inside.
The store has no search that filters by category, so the category is read to find your words there. Leave the category empty and no category scan is charged: it reads the store's search list.
What a run costs on the Free plan, before the start:
| Products returned | Cost |
|---|---|
| 100 | $0.40 |
| 1,000 | $4.00 |
| 10,000 | $40.00 |
How do I use Olive Young Product Scraper?
- Open the Actor and press Start.
- Type your words, links or product numbers in the box at the top, or pick a category. Set What to read to Best sellers or A whole category if you want one of those.
- Products reach the dataset as they are read, so a long run fills while you watch. Export as JSON or CSV, or pull the rows over the API.
Worked examples
Use it to compare two brands with review statistics:
{"keyword": "laneige, cosrx","maxItems": 100,"includeReviews": true}
Use it to read a whole category of skincare:
{"mode": "category","category": "1000000008","maxItems": 200}
Use it to follow prices on a schedule and get only what moved:
{"keyword": "medicube","onlyChanged": true,"maxItems": 100}
Input
| Input | Default | What it does |
|---|---|---|
Search terms (keyword) | none | One per line: a word, a link or a product number |
What to read (mode) | Search | Search, Best sellers or A whole category |
Category (category) | The whole store | The category to search inside, or the whole store |
Include product info (includeProductInfo) | on | Adds the panel: ingredients, size, maker, country |
Include review statistics (includeReviews) | off | Adds review averages and counts |
Minimum price in USD (minPrice) | none | Keeps products at or above this price; empty keeps them all |
Maximum price in USD (maxPrice) | none | Keeps products at or below this price; empty keeps them all |
Minimum rating (minRating) | none | Keeps products rated at least this, 0 to 5 |
Brands (brands) | none | Brand names as the store shows them, or store ids |
Product name contains (titleContains) | none | Keeps names containing these words |
Sort (sort) | Store order | Seven orders, from newest listed to rating of the rows found |
Maximum items (maxItems) | 50 | Most products one run returns, up to 1,000 |
Maximum products per line (maxItemsPerSeed) | none | Most products for each search line |
Only new or changed products (onlyChanged) | off | Leaves unchanged products out |
Search terms take one entry per line, or separated by commas. An entry is a search word, a category or product link, or the store's own product number: GA for one product, GS for a set.
What to read has its own section, because the run reads what you ask for without it. Type a word and the store is searched. Type a product number or paste a product link and that product is read. Pick a category and leave the search box empty and that whole category is read. Set it to Best sellers for the store's own ranked list. Set it to A whole category to read every product of the category you picked in Category, just below. The rows name the list they came from.
Category, just below the mode, narrows a search. With words, you get that category's products whose names carry the word. With none, the whole category. Under Best sellers it picks that category's ranking, and with none picked the ranking is the store's own. The box opens on the whole store, so pick a category to narrow it.
Sort accepts Store order, Newest listed, both price orders, Most reviewed, Highest rated and Rating (of the rows found). Best sellers keeps the store's own ranking, so your order goes unused there. Rating (of the rows found) ranks only the products this run read, by their rating. On a search it is the same as Highest rated, with no extra charge. Highest rated reads the matches again, one by one, for the rating the store shows now. Pick a category and it reads that whole category instead, charged once as Category scanned. See How much does it cost?.
Maximum items caps the whole run at 1,000. Three lines with a limit of 60 give each about 20. Set Maximum products per line, just below it, for a cap per line.
Only new or changed products is for a price watch on a schedule. Each row shows the last price and stock beside today's, and whether the product is new, changed or unchanged. Your first run has nothing to compare with, so every product comes back as new; after that, only what moved is returned. Prices and stock are remembered for 31 days.
Output
Every search line that returns nothing gets its own row, naming the line and the reason.
| The row's word | What it means |
|---|---|
| ok | A product row |
| not_found | The store had no product |
| no_more | The store had no more for that line |
| bad_url | Not a link to this store |
| bad_input | The entry was not read as typed |
| not_reached | The run stopped at your maximum |
| not_used | Your mode does not read it |
| blocked | The store refused the read |
| fetch_failed | One part failed; the rest stands |
| duplicate | An earlier line returned them |
| unchanged | A price watch found nothing moved |
| aborted | The run stopped before this line |
| error | The run failed; the rows delivered stand |
When a spending limit ends the run, the products already read stay in the dataset, and the last row, STOPPED_EARLY, names the lines it never reached. A Max total charge set on the platform is a different limit. The platform ends the run itself, and a run it cuts shows where it got to in the progress rows. At 256 MB a run costs about $0.06 an hour.
What can you do with the data?
Track what a brand is doing. The store's flags, ratings, review counts and discounts show a launch, a restock and a promotion.
Build an ingredient index. The parsed list gives one ingredient per row-product, so you can filter it for actives and allergens.
Use Olive Young Product Scraper with AI agents
$claude mcp add --transport http apify "https://mcp.apify.com?tools=Pradio/olive-young-product-scraper"
That line adds the Actor to an agent that speaks MCP.
Personal data
Every row holds public product facts from Olive Young Global's own storefront pages, read while logged out. Reviews are read as statistics: the rating, the count, the star breakdown and the newest date. No row carries review text, a reviewer handle or a reviewer identifier. The maker and distributor field carries the company the store prints there, with the role labels taken off. 'Cosmetics Manufacturer - Amorepacific Corporation' arrives as the company alone.
The read stays yours and stays bounded. The run reads only the words, categories and links you name, and returns 50 products by default and 1,000 at most. The price and stock history for a watch list stays your own. A refusal is never retried, and a rate limit with a wait time is honoured once.
This Actor is published and run by Pradio, from the UK. An issue on the Issues tab reaches us, and a person or company named in a row can ask to be removed through it. The removal goes through at once, and the Actor does not read that site again.
The store sets out its own handling in its Terms and its Legal Notices. They point to a Privacy Policy for the data the store itself collects.
Limits
- A run returns at most 1,000 products, read one at a time. A run of 100 products takes a few minutes. A full 1,000 takes the best part of an hour.
- A broad word like cream brings whatever Olive Young's own search returns for it, and most of those are other products: serums, mists, sunscreens, blushes. Pick a Category to search inside it, or add a word under Product name contains.
- On a very large category, a filter can stop before the last matches. Raise Maximum items to look further.
- Prices and best-seller lists are the ones a shopper in the United States sees, in US dollars.
- A size total in millilitres or grams needs a volume or a weight from the panel, and so does the price per 100 ml or 100 g. A set, shades, a count such as 30 patches or an unreadable size leaves them empty.
- The total is the product's own size: the parts the notice panel prints, less a figure the store marks as free beside it. Everything inside the title's
(...)bracket is an extra and is never added, whatever it names. So medicube's Collagen Night Wrapping Mask is 75 ml, where its panel's75ml + 5mlwould total 80. - An option's own brackets name the variant you picked, not what comes free. They are read the older way: a set's panel total is the size the row carries, and a bonus is left out.
- A pack multiplier counts, whether the panel or the title writes it. A panel printing the count itself, such as
80mlX3, is read as the total it prints. The multiplier is applied once, never twice, so the row carries 240 ml rather than 80 or 720. - The ingredient list is what the store's panel prints. Some panels point to the details page instead, and those products carry no list.
Troubleshooting
I got fewer rows than my maximum. The store's results ran out, or your filters turned the rest away. The row for that line says how many were read and which filter dropped them.
I got no products at all. One row says why: nothing matched, the link is from another store, or your price range is empty.
The same link appears twice in my run. The second entry gets a row saying the first one already returned those products, and they are billed once.
A product page came back half empty. You still have the product. The status field for the part that failed says so, so you can tell a missing value from a broken read.
FAQ
Can I use integrations with Olive Young Product Scraper? Yes. The rows are a normal Apify dataset. Zapier, Make, webhooks and schedules read them as they land.
Can I use it with the Apify API? Yes. Every run has an API call you make from your own code, taking the same inputs the form takes. The results come back in JSON or CSV.
Is it legal to scrape Olive Young? It reads public storefront pages while logged out. Olive Young's terms restrict commercial reuse of the store's content, so use the rows for your own buying, pricing and research rather than republishing them. You are responsible for the right to read the pages you give it, and for what you do with the rows.
Do I pay for a product it cannot find? No. That row costs nothing. It names what you gave it and why.
Global store or the Korean one? Olive Young Global, at global.oliveyoung.com, with English names and US dollar prices. A Korean store link gets a row saying so.
What if the site owner objects? Open an issue on the Issues tab and the site is removed from the Actor the same day.
Release notes
- 2026-10-25 A set of two different products has no size at all: THE SAEM's toner and emulsion read none, where it read 322 ml and 16.77 a 100 ml.
- 2026-10-24 A set's size now leaves out the extra its own title brackets as a free gift. A line that came up short of the maximum gets a row saying so. The CNP set reads 60 ml and 56.48 a 100 ml, where it read 75 ml and 45.19. A product the store sells at its full price now carries the store's own list price beside it. A product the store says has no options carries none. A colour label is now relayed exactly as the store spells it: the store prints "white" in lower case, and the row said "White".
- 2026-10-23 A brand name is now the store's own filter. The name is resolved to the store's brand id and sent as the store's filter, so a brand whose products sit deep in a shelf is no longer lost. A name beside another brand is still matched on the row, and the store's own id beside a name is still left alone. Ranking a whole category by rating now reads the card below the cut live before the walk stops. A product the store rates higher than the answer cannot then be left out unseen. The price bounds, the orders and every field are unchanged.
- 2026-10-20 A ranked category is now charged at the $0.011 quoted from 2026-10-19. A product on Gold, Platinum or Diamond costs $0.00084 (it was $0.00065). The Free, Bronze and Silver prices are unchanged.
- 2026-10-19 Ranking a whole category by rating now reads every product tied with the top rating live before the answer is placed. Category scanned is now $0.011 (it was $0.006).
- 2026-10-16 Ranking a whole category by rating is charged once as Category scanned ($0.006).
Feedback
Found a bug, or a field you need? Open an issue on the Issues tab and we answer within two days. If the Actor saved you time, a review on the Store helps other buyers find it.
Not affiliated
This Actor is independent. It is not affiliated with or endorsed by Olive Young, Olive Young Global or CJ.