Tony Wang6 min readHow to Scrape Mercari in 2026 (API & Python)
Scrape Mercari in 2026 — search, item detail, and taxonomy via DIY Python, no-code tools, or a structured API — plus what Mercari's ToS allows.
Mercari doesn't run a public developer portal for reading its catalog, so the fastest reliable path in 2026 is a structured scraping API that returns normalized JSON for search results, item detail, and taxonomy — instead of parsing Mercari's listing pages yourself. Mercari sits in the same resale genre as StockX and Poshmark, but with a wrinkle those don't have: Mercari US and Mercari Japan are two different marketplaces under one brand, with separate apps, separate item catalogs, and separate currencies — this guide covers the US site.
Why scrape Mercari data?
- Resale-price research — track what an item, brand, or category actually sells for on a large peer-to-peer marketplace, as a comp against retail or other resale sites.
- Cross-market arbitrage research — compare US listing prices against another marketplace's asking prices for the same brand or item type (note: Mercari Japan is a separate catalog, not the same inventory).
- Brand and category trend tracking — pull listing counts and pricing for a brand or category to see what's circulating and at what price band.
- Market research — use the category/brand/size taxonomy to size how many active listings exist in a given niche without guessing spellings.
- AI pipelines and agents — feed normalized listing and item data into a pricing or sourcing agent instead of screen-scraping HTML.
Is it legal to scrape Mercari?
Option 1: DIY in Python (and why it breaks)
A naive scraper fetches a search results page and tries to pull listing cards out of the rendered markup:
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.mercari.com/search/?keyword=nike+jacket",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Listing cards render from client-side state (React/Next.js), so a plain
# HTML parse mostly returns an empty shell — you end up reverse-engineering
# the app's internal JSON endpoints instead
It demos once, then breaks:
- The Prohibited Conduct policy is explicit. It names robots, spiders, crawlers, and scrapers directly as a violation, separate from any technical block.
- Anti-bot defenses. Mercari fronts its site with bot detection; datacenter IPs and headless requests get rate-limited or blocked quickly, especially on search.
- Client-rendered markup. Search results and item pages render from JavaScript state, not stable server HTML — a layout change silently breaks CSS-selector scraping.
- No sanctioned alternative. Unlike eBay, Mercari doesn't run a developer portal at all, so there's no official-but-gated API to fall back on for catalog reads.
Option 2: No-code / ready-made tools
Browser extensions and point-and-click scrapers can export a single search page or item snapshot, but tracking a brand's resale prices or a category's listing volume over time means re-pulling the same pages on a schedule — a job for a stable endpoint with stored history, not a one-off export.
Option 3: A structured Mercari API
For a repeatable workflow, a Mercari scraping API returns normalized JSON for search, item detail, the home feed, autocomplete, and taxonomy — no page parsing, no app that doesn't exist. Search by keyword:
curl "https://api.crawlora.net/api/v1/mercari/search?query=nike+jacket" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "nike jacket",
"total_results": 21523,
"items": [
{
"id": "m31455228584",
"url": "https://www.mercari.com/us/item/m31455228584",
"title": "Nike varsity jacket. New with tags!",
"thumbnail_url": "https://u-mercari-images.mercdn.net/photos/m31455228584_1.jpg?1784911712",
"price_cents": 4873,
"original_price_cents": 5400,
"num_likes": 1931,
"seller_id": "794269920",
"created_at_unix": 1774057908,
"updated_at_unix": 1784911712
}
]
}
}
query is required. Pull full item detail, autocomplete suggestions, or the taxonomy:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/mercari"
hits = requests.get(f"{base}/search", headers=h, params={"query": "nike jacket"}).json()["data"]["items"]
item_id = hits[0]["id"]
item = requests.get(f"{base}/item/{item_id}", headers=h).json()["data"]
suggestions = requests.get(f"{base}/autocomplete", headers=h, params={"query": "nik"}).json()["data"]
taxonomy = requests.get(f"{base}/master", headers=h).json()["data"]
Item detail carries the full photo set, price, and a similar_items list Mercari itself surfaces (real fields — check the docs):
{
"code": 200,
"msg": "OK",
"data": {
"id": "m38581776856",
"url": "https://www.mercari.com/us/item/m38581776856",
"title": "Women's NIKE WNBA Nike Mesh Jacket Size NEW MSRP 120",
"description": "Women's NIKE WNBA Nike Mesh Jacket Size NEW MSRP 120",
"photos": [
"https://u-mercari-images.mercdn.net/photos/m38581776856_1.jpg?1777492193",
"https://u-mercari-images.mercdn.net/photos/m38581776856_2.jpg?1777492193"
],
"price_cents": 4578,
"condition_code": 1,
"category_code": 6,
"shipping_from_state": "New Jersey",
"similar_items": [
{
"id": "m34982910331",
"url": "https://www.mercari.com/us/item/m34982910331",
"title": "Lululemon Every Moment Pant *26\" Black Size 6",
"thumbnail_url": "https://u-mercari-images.mercdn.net/photos/m34982910331_1.jpg?1783333561",
"price_cents": 4000,
"num_likes": 1967,
"seller_id": "790985424",
"created_at_unix": 1783333561
}
]
}
}
/mercari/home returns the same normalized shape as search but for Mercari's curated home feed, /mercari/autocomplete turns a partial query into suggested search terms, and /mercari/master returns the full category tree, brand list, and size list in one call so you can enrich category_code and condition_code values instead of guessing at Mercari's internal mapping.
What you can collect
- Search and home feed results: id, title, thumbnail, price in cents, original price when discounted, like count, seller id, and created/updated timestamps
- Item detail: full description, photo array, price, condition and category codes, shipping-from state, and a
similar_itemslist - Autocomplete: suggested search terms for a partial keyword, mirroring Mercari's own search-box suggestions
- Taxonomy: full category tree (with parent/child ids), brand list, and size list (with short names and codes)
Limitations
- No official API exists. Mercari doesn't run a developer portal at all — there's no gated-but-sanctioned alternative to fall back on, unlike eBay.
- The Prohibited Conduct policy is explicit. It names robots, spiders, and scrapers directly as a violation, independent of any technical block.
- US and Japan are separate marketplaces. These endpoints cover Mercari US (
mercari.com) — item ids, categories, and prices don't map to Mercari Japan's (jp.mercari.com) separate catalog and yen pricing. - Prices and like counts are a snapshot. Mercari items get repriced, liked, bundled, or marked sold constantly — timestamp what you store.
- Public data only. This covers public search, item, and taxonomy data — not private messages, offers, or a way to place an order on a buyer's behalf.
Where this gets used
- Resale and sourcing research — compare a brand's Mercari asking prices against retail or another resale marketplace.
- Brand and category sizing — measure listing volume and price bands for a brand or category using the taxonomy plus search.
- Pricing and sourcing pipelines — feed normalized item data into an agent that flags underpriced listings or tracks a watchlist.
Sources
Start collecting
Try it first, free: run any public URL through the Free Web Scraper, or check whether a site blocks bots with the Anti-Bot Checker — no signup.
Test the search, item, home, autocomplete, and master endpoints in the Playground, check the request and response schema in the API docs, and review credit costs on the pricing page. Mercari is a general secondhand marketplace, closer in shape to Poshmark's social-selling listings and Vinted's peer-to-peer fashion resale than to StockX's order-book pricing — pair how to scrape StockX alongside this guide for a fuller resale-market picture. See also is web scraping legal.
Part of our how-to-scrape guide series — every platform we cover, in one index.
Frequently asked questions
Does Mercari have a public developer API?
No. Mercari does not publish a public developer API or portal for third-party read access to its catalog. A structured scraping API is the practical way to get normalized search, item detail, and taxonomy data instead of parsing pages yourself.
Is it legal to scrape Mercari?
Mercari's Prohibited Conduct policy explicitly bars using any robot, spambot, spider, crawler, scraper, or other automated means to access the service or extract data. Public listing facts aren't copyrightable and accessing public data isn't a CFAA violation per hiQ Labs v. LinkedIn, but scraping still runs against Mercari's own terms — this is not legal advice, and you should review the policy yourself.
What does Mercari's robots.txt disallow?
Mercari's robots.txt doesn't blanket-disallow search or item pages, but it does disallow account, transaction, and selling paths (like /mypage/, /transaction/, /sell/, /us/selling/) for every crawler, and blocks PetalBot and YandexBot outright.
Are Mercari US and Mercari Japan the same catalog?
No. Mercari US (mercari.com) and Mercari Japan (jp.mercari.com) are separate marketplaces with separate apps, item catalogs, and currencies. A US item id, price in cents, and taxonomy do not map to Mercari Japan's listings.
How are Mercari prices returned by the API?
Prices come back as price_cents, an integer in cents rather than dollars — a $40.00 listing is 4000. Item detail can also carry a separate original_price_cents field when the item has been marked down.
What does the Mercari taxonomy endpoint return?
The /mercari/master endpoint returns Mercari's full category tree (with parent/child ids), the complete brand list, and the size list with short names and codes, in a single call.
How fresh is Mercari listing data from a scraping API?
Treat prices, like counts, and listing status as a snapshot at the time of the call. Mercari listings get repriced, liked, bundled, or marked sold constantly, so timestamp anything you store rather than treating it as current indefinitely.