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

Scrape Mercari Japan listings by keyword, category, brand, price, condition and status (on sale or sold), or from search, item, seller and shop URLs: price, condition, brand, shipping, seller, photos, auctions. Optional details add description, likes and seller rating.
Scrape listings from Mercari Japan (メルカリ), Japan's biggest flea-market app, by keyword, category, brand, price, condition and status, or straight from search, item, seller and shop URLs. Every listing comes with its yen price, on-sale or sold status, condition, brand, category, shipping terms, seller, photos and auction data. Turn on item details to add the description, likes, comments, shipping method and origin, and the seller's rating. No login and no Mercari account: hundreds of listings in a few seconds.
sold_out to see what items really sold for, not only asking prices.| Field | What it does |
|---|---|
searchKeywords | Search terms, one per line (nintendo switch, ポケモンカード). |
startUrls | Mercari Japan search, item, Mercari Shops product, seller profile or shop profile URLs. |
maxResults | Max listings per keyword / URL (0 = no limit). |
status | on_sale, sold_out, trading. Empty = all. |
priceMin / priceMax | Price range in yen. |
condition | new, like_new, good, fair, poor, bad. |
categoryIds / brandIds | Mercari category and brand IDs (the category_id / brand_id in search URLs). |
excludeKeyword | Words to leave out. |
shippingPayer | seller (shipping included) or buyer. |
itemTypes | mercari (individual sellers) and/or shops (Mercari Shops). |
sort / order | score, created_time, price, num_likes, and desc / asc. |
includeDetails | Open each listing for description, likes, seller rating and more. |
proxyConfiguration | Datacenter by default. Switches to Japanese residential exits by itself if Mercari refuses requests. |
{
"searchKeywords": ["nintendo switch"],
"startUrls": [
"https://jp.mercari.com/search?keyword=ポケモンカード&status=sold_out%7Ctrading",
"https://jp.mercari.com/item/m12345678901",
"https://jp.mercari.com/user/profile/123456789"
],
"maxResults": 100,
"status": ["on_sale"],
"priceMin": 3000,
"priceMax": 30000,
"condition": ["new", "like_new"],
"sort": "created_time",
"order": "desc",
"includeDetails": true
}
One row per listing.
| Field | Description |
|---|---|
id, url, itemType | Listing ID (m… for individual sellers), item page and mercari / shops |
name, price, currency | Title and price in yen |
status, isSold | on_sale, sold_out or trading |
conditionId, condition, conditionEn | Condition in Japanese and English |
brandId, brandName, brandNameEn, categoryId | Brand and category |
shippingPayer, shippingMethodId | Who pays shipping (seller = included) |
sellerId, sellerUrl, shopId, shopUrl | Seller profile or Mercari Shops store |
thumbnail, photos, sizes | Images and sizes |
isAuction, auctionBidDeadline, auctionBidCount, auctionHighestBid, auctionInitialPrice | Auction listings |
createdAt, updatedAt | Listed and last updated (UTC) |
source, keyword, searchUrl, position | Where the listing was found |
With details: description, likes, comments, conditionDescription, categoryName, categoryPath, size, colors, shippingMethod, shippingFromArea, shippingDuration, shippingFee, attributes, hashtags | Listing page data |
With details: sellerName, sellerRatingGood, sellerRatingNormal, sellerRatingBad, sellerRatingCount, sellerStarRating, sellerListingCount, sellerQuickShipper, sellerJoinedAt | Seller profile |
With details (Mercari Shops): shopName, shopRating, shopReviewCount, variants, stock | Store data |
Example (shortened, sample values):
[
{
"type": "listing",
"id": "m12345678901",
"url": "https://jp.mercari.com/item/m12345678901",
"name": "Nintendo Switch あつまれ どうぶつの森",
"price": 3200,
"currency": "JPY",
"status": "on_sale",
"isSold": false,
"itemType": "mercari",
"conditionId": "3",
"condition": "目立った傷や汚れなし",
"conditionEn": "No noticeable scratches or stains",
"brandName": "任天堂",
"brandNameEn": "Nintendo",
"categoryId": "702",
"shippingPayer": "seller",
"sellerId": "123456789",
"sellerUrl": "https://jp.mercari.com/user/profile/123456789",
"thumbnail": "https://static.mercdn.net/thumb/item/webp/m12345678901_1.jpg",
"isAuction": false,
"createdAt": "2026-10-15T16:36:38Z",
"keyword": "nintendo switch",
"position": 1,
"description": "動作確認済みです。ゲームカードとパッケージのセットです。",
"likes": 11,
"comments": 0,
"categoryPath": ["ゲーム・おもちゃ・グッズ", "テレビゲーム", "Nintendo Switch", "ソフト(パッケージ版)"],
"shippingMethod": "らくらくメルカリ便",
"shippingFromArea": "千葉県",
"shippingDuration": "2~3日で発送",
"sellerName": "サンプル出品者",
"sellerRatingGood": 15,
"sellerRatingBad": 0,
"sellerStarRating": 5,
"detailsScraped": true,
"scrapedAt": "2026-10-16T03:00:00.000Z"
}
]
$3.50 per 1,000 listings ($0.0035 per listing), with or without item details. Platform usage (compute and proxy traffic) is charged on top and is tiny: well under a cent per 1,000 listings from searches, and about a cent per 1,000 with item details.
Example: 1,000 sold listings for a keyword cost about $3.50. You can cap any run with the maximum total charge setting, and the run stops cleanly when the cap is reached.
Is it legal to scrape Mercari? The scraper only reads public listings that anyone can see without logging in. Make sure your use of the data follows Mercari's terms and the law where you live, especially for seller names.
Do I need a Mercari account or my own proxy? No. There is no login. The run uses the platform's datacenter proxies by default and moves to Japanese residential proxies by itself if needed.
How many listings can I get? As many as Mercari shows. Mercari serves about 10,000 results per search, so for bigger pulls the scraper repeats the search in other sort orders and skips duplicates. Price ranges or categories split a search further.
Why is a field empty? Some fields only exist for some listings (auction fields, sizes, brand), and the description, likes and seller rating need Include item details. Mercari Shops listings have a shop instead of a seller.
Can I translate titles to English? Titles and descriptions stay in the original Japanese. Condition comes in both Japanese and English, and brands come with their English name where Mercari has one.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start them and read the dataset through the API.
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.
searchKeywordsarrayOptionalSearch keywords
Search terms for Mercari Japan (メルカリ), one per line, in Japanese or English (for example "nintendo switch" or "ポケモンカード"). Each keyword is a separate search. The filters below apply to every keyword.
startUrlsarrayOptionalMercari URLs
Any mix of jp.mercari.com URLs: search pages (jp.mercari.com/search?keyword=...&status=on_sale, with all their filters), item pages (jp.mercari.com/item/m12345678901), Mercari Shops products (jp.mercari.com/shops/product/...), seller profiles (jp.mercari.com/user/profile/123456789, all of the seller's listings) and shop profiles (jp.mercari.com/shops/profile/...). The /en/ versions work too.
maxResultsintegerOptionaldefault 20Max listings per search
Maximum number of listings to save for each keyword, search URL, seller or shop. 0 means no limit (Mercari serves about 10,000 results per search; the scraper then repeats the search in other sort orders to collect more).
statusarrayOptionalStatus
Only listings with these statuses. Leave empty for all. Use sold_out (and trading) to research sold prices.
priceMinintegerOptionalMin price (¥)
Only listings priced at or above this amount in yen.
priceMaxintegerOptionalMax price (¥)
Only listings priced at or below this amount in yen.
conditionarrayOptionalCondition
Only listings in these conditions. Leave empty for all.
categoryIdsarrayOptionalCategory IDs
Mercari category IDs, for example 702 (Nintendo Switch software). The ID is the category_id in a Mercari search URL. With no keywords and no URLs, the scraper browses these categories.
brandIdsarrayOptionalBrand IDs
Mercari brand IDs, for example 15487 (Nintendo). The ID is the brand_id in a Mercari search URL. With no keywords, no URLs and no categories, the scraper browses these brands.
excludeKeywordstringOptionalExclude words
Leave out listings that contain these words (space separated).
shippingPayerenumOptionalShipping
Only listings where the seller pays shipping (送料込み) or where the buyer pays (着払い).
itemTypesarrayOptionalSeller type
Only individual sellers (mercari) or only Mercari Shops businesses (shops). Leave empty for both.
sortenumOptionalSort by
Order of the search results.
orderenumOptionalOrder
Sort direction. Price with ascending order gives the cheapest listings first.
includeDetailsbooleanOptionaldefault falseInclude item details
Open every listing to add the description, all full-size photos, likes and comments, condition text, category path, shipping method, origin and dispatch time, item attributes, and the seller's name, rating (good / normal / bad), star score and listing count. Mercari Shops listings add shop name, shop rating, variants and stock. Same price per listing.
maxConcurrencyintegerOptionaldefault 8Max concurrency
How many requests run in parallel.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy for the Mercari API. Datacenter works well. Residential exits are pinned to Japan unless you choose a country.
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 |
|---|---|---|
| thumbnail | any | Image |
| name | any | Title |
| url | any | URL |
| price | any | Price (¥) |
| status | any | Status |
| condition | any | Condition |
| brandName | any | Brand |
| categoryId | any | Category ID |
| shippingPayer | any | Shipping paid by |
| itemType | any | Seller type |
| sellerUrl | any | Seller |
| isAuction | any | Auction |
| createdAt | any | Listed |
| updatedAt | any | Updated |
| keyword | 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 |
|---|---|---|
| Listing | One Mercari Japan listing saved to the dataset (with or without item details) | $0.0035 |
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/mercari-japan-scraper').call({
"searchKeywords": [
"nintendo switch"
],
"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/mercari-japan-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/mercari-japan-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 item details.
Status, price and condition filters plus seller profile URLs.
Listings from Mercari user and shop profile URLs.
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.