
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape Rakuten Ichiba (楽天市場) products from keywords, genres, shops and item URLs: price, points, shipping, shop, review score and count, tags and images. Optional item details (variations, stock, description) and customer reviews.
Scrape products from Rakuten Ichiba (楽天市場), Japan's largest online marketplace, by keyword, genre, shop or item URL. Each product comes with its yen price, Rakuten points, shipping fee, shop, review score and count, tags and images. You can also add item details (every variation with its own price and stock, the description, breadcrumbs) and customer reviews. No login, no Rakuten API key, and about 500 products in under 10 seconds.
| Field | What it does |
|---|---|
keywords | Search terms, one per line (コーヒー, iphone ケース). |
startUrls | Rakuten search, category, shop, item or review URLs. |
maxResults | Max products per keyword / URL (0 = no limit). |
genreId | Limit keyword searches to one genre, such as 100227. With nothing else set, the scraper browses that genre. |
sort | standard, price_asc, price_desc, price_shipping_asc, price_shipping_desc, review_count, review_score, newest. |
minPrice / maxPrice | Price range in yen. |
includeDetails | Open each item page for variations, stock, description and more. |
includeReviews / maxReviewsPerProduct | Save customer reviews as extra rows. |
proxyConfiguration | Datacenter by default. The scraper switches to Japanese residential exits by itself if it gets blocked. |
{
"keywords": ["コーヒー", "iphone ケース"],
"startUrls": [
"https://www.rakuten.co.jp/category/560202/",
"https://www.rakuten.co.jp/example-shop/",
"https://item.rakuten.co.jp/example-shop/item-123/"
],
"maxResults": 100,
"sort": "review_count",
"minPrice": 1000,
"maxPrice": 5000,
"includeDetails": false,
"includeReviews": false
}
One row per product (type: "product"), plus one row per review (type: "review") when reviews are on.
| Field | Description |
|---|---|
name, subtitle | Product name and catch copy, in Japanese |
url, itemCode, manageNumber, itemUniqueKey | Item page and IDs (itemUniqueKey = shop:itemCode) |
price, priceMin, priceMax, currency | Price in yen, with the range when variations differ in price |
rakutenPoints, rakutenPointsMultiplier | Rakuten points earned |
shippingFee, freeShipping, deliveryEstimate | Shipping cost and delivery text |
reviewScore, reviewCount, reviewUrl | Average rating and number of reviews |
shopName, shopUrlCode, shopId, shopUrl | The selling shop |
brand, genreId, genres, genreIdPath, tags | Brand, category path and Rakuten's product tags |
imageUrl, images | Product images |
isSoldOut, isSponsored, flags, coupons, sale | Status, ads and special labels |
searchKeyword, searchUrl, sourcePage, position | Where the product was found |
With details: description, variants, variantOptions, stockQuantity, availability, breadcrumbs, videoUrl, … | Item page data |
Reviews: rating, title, body, reviewDate, orderDate, reviewerName, reviewerAge, reviewerGender, purchaseTags, variant, helpfulCount, media | One customer review |
Example (shortened, sample values):
[
{
"type": "product",
"itemUniqueKey": "example-coffee-shop:10000123",
"itemCode": "10000123",
"name": "ドリップコーヒー 100袋 スペシャルブレンド 送料無料",
"url": "https://item.rakuten.co.jp/example-coffee-shop/drip-100/",
"price": 2980,
"priceMin": 2980,
"priceMax": 5480,
"currency": "JPY",
"rakutenPoints": 27,
"shippingFee": 0,
"freeShipping": true,
"deliveryEstimate": "翌日配送",
"reviewScore": 4.62,
"reviewCount": 1534,
"shopName": "サンプル珈琲店",
"shopUrlCode": "example-coffee-shop",
"shopId": 123456,
"brand": "サンプル珈琲",
"genres": ["水・ソフトドリンク", "コーヒー", "ドリップコーヒー"],
"tags": [{"id": 1007019, "name": "ドリップバッグ", "groupId": 1000529, "groupName": "タイプ"}],
"imageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/example-coffee-shop/cabinet/drip-100.jpg",
"isSoldOut": false,
"isSponsored": false,
"searchKeyword": "コーヒー",
"position": 1,
"scrapedAt": "2026-10-15T03:00:00.000Z"
},
{
"type": "review",
"itemUniqueKey": "example-coffee-shop:10000123",
"itemName": "ドリップコーヒー 100袋 スペシャルブレンド 送料無料",
"rating": 5,
"title": "毎朝の一杯に",
"body": "香りが良くて飲みやすいです。リピートします。",
"reviewDate": "2026-10-01",
"reviewerName": "サンプルさん",
"reviewerAge": "40代",
"reviewerGender": "female",
"purchaseTags": ["実用品・普段使い", "自分用"],
"helpfulCount": 2
}
]
You pay per saved row, plus a small amount of platform usage (compute and proxy traffic, typically a few cents per thousand products):
Example: 1,000 products from a keyword search cost about $1.00 plus a cent or two of usage. With item details it is about $3.00. You can cap the spend of any run with the maximum total charge setting, and the run stops cleanly when the cap is reached.
Is it legal to scrape Rakuten? The scraper only reads public pages that anyone can open without logging in. Check that your use of the data follows Rakuten's terms and the law where you live, especially for personal data in reviews.
Do I need a Rakuten account, API key or my own proxy? No. The run uses the platform's proxies. Datacenter proxies are the default, and the scraper moves to Japanese residential proxies by itself if Rakuten blocks them.
How many products can I get? Rakuten shows up to 6,750 products (150 pages) per search. With no limit set, the scraper repeats a large search in other sort orders to collect more. To get everything in a big category, split it into narrower genres or price ranges.
Why are some fields empty?
Shops fill in different data. A product without reviews has reviewScore 0, and fields such as brand, coupons or sale are empty when the shop does not set them. Item-page fields appear only with "Include item details".
Can I schedule it or use it via API? Yes. Save a task, schedule it, and read the dataset over the API or with integrations.
Is the text translated? No. All text stays in the original Japanese, exactly as Rakuten shows it. Prices are numbers in yen.
isSponsored.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
keywordsarrayOptionalKeywords
Search terms for Rakuten Ichiba (楽天市場), one per line, in Japanese or English (for example "コーヒー" or "iphone ケース"). Each keyword is a separate search.
startUrlsarrayOptionalRakuten URLs
Any mix of Rakuten Ichiba URLs: search result pages (search.rakuten.co.jp/search/mall/...), category pages (www.rakuten.co.jp/category/100227/), shop pages (www.rakuten.co.jp// — the whole shop catalog), item pages (item.rakuten.co.jp///) and item review pages (review.rakuten.co.jp/item/1/...).
maxResultsintegerOptionaldefault 20Max products per search
Maximum number of products to save for each keyword, search URL, category or shop. 0 means no limit (Rakuten shows up to 6,750 products per search; the scraper then repeats the search in other sort orders to collect more).
genreIdstringOptionalGenre ID
Limit keyword searches to one Rakuten genre (category) ID, for example 100227 (food) or 560202 (smartphones). The ID is the number in category URLs such as www.rakuten.co.jp/category/560202/. With no keywords and no URLs, the scraper browses this genre.
sortenumOptionaldefault "standard"Sort by
Order of the search results.
minPriceintegerOptionalMin price (¥)
Only products priced at or above this amount in yen.
maxPriceintegerOptionalMax price (¥)
Only products priced at or below this amount in yen.
includeDetailsbooleanOptionaldefault falseInclude item details
Open every item page to add the full description, all images, every variation (SKU) with its own price, stock and JAN code, total stock, availability, breadcrumbs and video. One extra page per product, priced as a detailed product.
includeReviewsbooleanOptionaldefault falseInclude reviews
Also save customer reviews of each product as separate rows (type "review"): rating, title, text, date, reviewer age range and gender, purchase purpose, variation and photos.
maxReviewsPerProductintegerOptionaldefault 20Max reviews per product
Maximum number of reviews to save for each product (and for each review URL). 0 means all reviews.
maxConcurrencyintegerOptionaldefault 8Max concurrency
How many pages are loaded in parallel.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are the cheapest. If Rakuten starts blocking them, the scraper switches to Japanese residential proxies by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| imageUrl | any | Image |
| name | any | Product |
| url | any | URL |
| price | any | Price (¥) |
| priceMax | any | Max price (¥) |
| rakutenPoints | any | Points |
| shippingFee | any | Shipping (¥) |
| reviewScore | any | Rating |
| reviewCount | any | Reviews |
| shopName | any | Shop |
| shopUrl | any | Shop URL |
| brand | any | Brand |
| isSoldOut | any | Sold out |
| isSponsored | any | Sponsored |
| itemUniqueKey | any | Item key |
| searchKeyword | any | Keyword |
| position | any | Position |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Product | One Rakuten product saved to the dataset (search, genre, shop or item data) | $0.001 |
| Product with item details | One Rakuten product saved with its item page details (variations, stock, description); charged instead of Product when item details are on | $0.003 |
| Review | One Rakuten customer review saved to the dataset | $0.001 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/rakuten-scraper').call({
"keywords": [
"コーヒー"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/rakuten-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/rakuten-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Japanese keyword search with product details.
Price-filtered search sorted from cheapest.
Product details plus up to 5 reviews each.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.