Yahoo! Fleamarket Japan Scraper (Yahoo!フリマ / PayPayフリマ) avatar

Yahoo! Fleamarket Japan Scraper (Yahoo!フリマ / PayPayフリマ)

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Yahoo! Fleamarket Japan Scraper (Yahoo!フリマ / PayPayフリマ)

Yahoo! Fleamarket Japan Scraper (Yahoo!フリマ / PayPayフリマ)

Scrape Yahoo! Fleamarket (Yahoo!フリマ, formerly PayPay フリマ) — Japan's second-largest C2C marketplace. Search by keyword, brand or category; get normalized listings (price JPY, size, condition, seller, images) with optional item details. No browser, no login. JP Data Works series.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

JP Data Works

JP Data Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Scrape Yahoo! Fleamarket (Yahoo!フリマ, formerly PayPay フリマ) — Japan's second-largest consumer-to-consumer marketplace, run by LY Corporation on the Yahoo! Auctions platform — by keyword, brand and category, and get clean JSON / CSV: price in JPY (shipping always included), normalized size, listing time, seller id and images. Optionally open each item page for condition (商品の状態), colour, gender, seller rating, likes, shipping and the full gallery. No browser, no login, no proxy needed. Part of the JP Data Works series of Japanese marketplace scrapers (Mercari, Trefac, KOMEHYO …) that share one output shape so results can be merged.

Keywords: Yahoo フリマ スクレイピング · PayPay フリマ scraper · Yahoo! Fleamarket Japan API · Japanese C2C marketplace data · used clothing, sneakers, trading cards, figures, cameras · resale sourcing (eBay, Grailed, Depop) · price monitoring · new-listing alerts.

What you get

One row per listing:

  • itemId, url, title, brand, brandId, categoryId, categoryPath
  • priceJpy (shipping included — on Yahoo! Fleamarket the seller always pays shipping), status
  • sizeRaw / sizeNorm / size (W32, L, JP3, 26.5cm, FREE — from the item page, or guessed from the title on list-only runs)
  • sellerId, listedAt, endsAt, labels, imageUrl / imageUrls (full size), fetchedAt, keyword, search

With Enrich with item pages each item additionally has conditionRank 6 (新品、未使用) … 1 (全体的に状態が悪い) and conditionLabel, color, gender, the full categoryPath / categoryIds, sellerName, sellerRatingCount, sellerVerified, sellerBadges, likes, shippingMethod / shippingDuration / shippingFromArea, description, every photo and status: "sold" for sold-out items.

Example item (enriched)

{
"source": "yahoo-fleamarket",
"itemId": "z716028686",
"url": "https://paypayfleamarket.yahoo.co.jp/item/z716028686",
"title": "KAPITAL キャピタル 12oz デニム CACTUS カバーオール メモリアル刺繍 限定モデル XL ワークジャケット",
"brand": "KAPITAL",
"brandId": "106095",
"priceJpy": 77000,
"status": "on_sale",
"sizeRaw": "LL(XL)",
"sizeNorm": { "kind": "alpha", "value": "XL" },
"size": "XL",
"conditionRank": 6,
"conditionLabel": "未使用",
"categoryId": "36588",
"categoryPath": "ファッション > メンズファッション > ジャケット > カバーオール",
"gender": "メンズ / レディース",
"color": "ブルー系",
"sellerId": "p6125728",
"sellerName": "KEI",
"sellerRatingCount": 1543,
"sellerVerified": true,
"sellerBadges": ["安心発送", "取引実績50+"],
"shippingMethod": "おてがる配送(日本郵便)",
"shippingDuration": "2〜3日で発送",
"shippingFromArea": "大阪府",
"shippingPayer": "seller",
"likes": 0,
"imageUrl": "https://auctions.c.yimg.jp/images.auctions.yahoo.co.jp/image/dr000/auc0211/users/…/i-img1200x1200-….jpg",
"listedAt": "2026-11-01T14:40:00.000Z",
"fetchedAt": "2026-11-02T02:08:20.000Z",
"detailFetchedAt": "2026-11-02T02:08:23.115Z",
"keyword": "デニム",
"search": { "label": "デニム brand:KAPITAL#106095 メンズファッション>ジャケット ¥–50000", "mode": "search", "brandId": "106095", "categoryId": "36583", "url": "https://paypayfleamarket.yahoo.co.jp/search/%E3%83%87%E3%83%8B%E3%83%A0?brandIds=106095&categoryIds=36583" }
}

Without enrichment the detail fields are null / [], so the dataset always has the same columns.

Output modes — listings or a market summary

outputMode chooses what the dataset contains:

  • items (default) — one row per listing, as above.
  • summary — one market-summary row per search instead of the listings. The Actor still walks the search pages (up to maxItemsPerSearch listings, with enrichDetail if set), but stores only the aggregate — so a run that answers "what does X go for on Yahoo! Fleamarket?" costs one summary event per search rather than hundreds of result events.
  • both — the listings plus the summary row.

A summary row (recordType: "summary") has the same shape in every JP Data Works Actor, so you can put several sites side by side:

{
"recordType": "summary",
"source": "yahoo-fleamarket",
"search": { "label": "…", "url": "…", "…": "the resolved search parameters" },
"fetchedAt": "2026-11-02T03:00:00.000Z",
"sampleSize": 180, "totalOnSite": 1243, "scanned": 190, "filteredOut": 10, "withDetail": 0,
"status": { "on_sale": 180, "sold": 0, "unknown": 0 },
"price": { "count": 180, "min": 3300, "p25": 9800, "median": 16500, "mean": 19840, "p75": 25300, "max": 128000, "stddev": 15210 },
"priceOnSale": { "…": "same statistics for on-sale listings" }, "priceSold": { "…": "and for sold ones (sites that list them)" },
"priceHistogram": { "bucketJpy": 10000, "buckets": [ { "fromJpy": 0, "toJpy": 10000, "count": 46 }, "…" ] },
"conditionRank": { "6": 12, "5": 40, "4": 71, "3": 30, "unknown": 27 }, "conditionLabels": { "…": "the site's own labels" },
"sizes": { "M": 48, "L": 41, "W32": 12, "…": 0 }, "sizeKinds": { "alpha": 120, "waist": 30, "numeric": 20, "unknown": 10 },
"brands": { "KAPITAL": 180 }, "categories": { "メンズ > ジャケット/アウター": 95, "…": 0 }, "gender": { "mens": 170, "unknown": 10 },
"listed": { "last24h": 9, "last7d": 41, "last30d": 120 }, "sold": null,
"cheapest": [ { "itemId": "…", "title": "…", "url": "…", "priceJpy": 3300, "conditionRank": 4, "size": "M", "status": "on_sale" }, "…" ],
"cheapestGoodCondition": [ "… cheapest with condition rank ≥ 4 …" ],
"newest": [ "… most recently listed (sites that expose listing times) …" ]
}

Yahoo! Fleamarket cards carry the listing time, so listed (last 24 h / 7 d / 30 d) and newest are filled — a cheap way to measure how fast a brand is being listed. Sold listings are not searchable (robots.txt), so priceSold is empty.

Input

  • keywords — one search per keyword.
  • searches — structured: objects with any of keyword, brand / brandId, categoryPath / categoryId, priceMinJpy, priceMaxJpy, conditionMin, listedAfter, excludeWords, sellerId.

Top-level priceMinJpy, priceMaxJpy, conditionMin, listedAfter, excludeWords are defaults for every keyword and search.

FieldTypeDefaultNotes
keywordsstring[]—One search per keyword.
outputModeitems | summary | bothitemsListings, one market-summary row per search, or both (see "Output modes").
searchesobject[]—Structured searches (table below).
priceMinJpy / priceMaxJpyintegernoneClient-side (see "Why some filters are client-side").
conditionMin1–6none6 新品、未使用, 5 未使用に近い, 4 目立った傷や汚れなし, 3 やや傷や汚れあり, 2 傷や汚れあり. Needs the item page → turns enrichDetail on.
listedAfterISO date / epochnoneFrom the card's listing time; brand / category pages are newest-first, so the walk stops early.
excludeWordsstring[][]Client-side title filter.
maxItemsPerSearchinteger100100 cards per page.
maxTotalItemsintegernoneHard cap per run.
dedupeAcrossSearchesbooleantrue
enrichDetailbooleanfalseOne extra request + one detail-page event per item.
maxDetailPagesinteger100Cap on item-page requests per run.
requestDelayMsinteger2000Minimum pause between requests.
proxyConfigurationobjectnoneOptional.
outputFieldsstring[]allKeep only these fields (itemId, url always kept).

Fields of one searches entry:

FieldExampleHow it is applied
keyword"デニム"/search/<keyword> (site relevance order).
brand"KAPITAL"Resolved to the site's brand id by opening the first hit of a search for the name (2 requests, once per run). If the first hit is another brand, the name is searched as a keyword and titles are filtered client-side.
brandId106095The site's brand id (from /brand/<id> links). With a keyword → brandIds=; alone → the brand page /brand/<id> (newest first).
categoryPath"mens", "mens > jackets > coverall", "メンズファッション > ジャケット > Gジャン、デニム", "ladies > dresses"Resolved against the built-in fashion category tree (レディース / メンズ / 腕時計、アクセサリー, 3 levels; English aliases for the common ones). With a keyword → categoryIds=; alone → the category page (newest first). Unknown paths are used as an extra keyword.
categoryId"36588" or "13457/2495/36583/36588"The site's category id.
priceMinJpy / priceMaxJpy5000 / 50000Client-side.
conditionMin4Client-side after the item page.
listedAfter"2026-11-01"Client-side (card listing time).
excludeWords["レプリカ"]Client-side.
sellerId"p6125728"Keep only one seller's items.

Why some filters are client-side

The site's robots.txt disallows the URL parameters for sorting, price range, condition and sold-out filtering (sort= order= minPrice= maxPrice= conditions= sold= open= …). This Actor only requests the URL forms that are allowed — /search/<keyword> with page=, brandIds= and categoryIds=, /brand/<id>, /category/<path> and /item/<id> — and applies the remaining filters itself. The trade-off is that a tight price filter may need more pages; maxItemsPerSearch counts kept items, and brand / category pages (newest first) stop as soon as listedAfter is passed.

Examples

New arrivals of one brand in men's jackets under ¥50,000 (schedule it and set listedAfter to the previous run time):

{
"searches": [{ "brand": "KAPITAL", "categoryPath": "mens > jackets", "priceMaxJpy": 50000, "listedAfter": "2026-11-01" }],
"maxItemsPerSearch": 100
}

Keyword within a category, good condition only, with details:

{
"searches": [{ "keyword": "visvim FBT", "categoryPath": "mens > シューズ", "conditionMin": 4 }],
"maxItemsPerSearch": 50,
"maxDetailPages": 100
}

Everything one seller currently lists:

{ "searches": [{ "keyword": "KAPITAL", "sellerId": "p6125728" }], "maxItemsPerSearch": 500 }

Requests are sequential: 100 listings ≈ 1 listing page ≈ 2 seconds; with enrichDetail ≈ 101 requests ≈ 3.5 minutes at the default delay.

FAQ

What is Yahoo! Fleamarket? Yahoo!フリマ (until 2023 "PayPay フリマ") is LY Corporation's flat-price C2C marketplace, sharing listings with Yahoo! Auctions' fixed-price items. Shipping is always included and anonymous, payment is escrowed. It is the main alternative to Mercari for used clothing, sneakers, trading cards, figures and electronics in Japan.

Do I need a proxy or a browser? No. The listing and item pages are server-rendered and served to Apify's datacenter IPs at the default 2-second delay.

Can I get sold items / price history? Not from this Actor: the site's sold-item filter is disallowed by its robots.txt. Items that sell after you collect them come back with status: "sold" when re-fetched with enrichDetail (the item page stays online). For sold-price comps across Japanese marketplaces use our Mercari scraper, which returns sold listings.

How do I find brand and category ids? Open any item of that brand / category on the site: the 商品の情報 table links to /brand/<id> and /category/<ids>. Or just pass the brand name / a category path and let the Actor resolve it.

How are sizes and conditions normalized? sizeRaw keeps the site text (or a size token found in the title on list-only runs); sizeNorm interprets it (waist inches for W32, alpha for S/M/L/LL→XL, numeric for JP sizes, cm for shoes, free). conditionRank uses 6 = best … 1 = worst — the same scale as our Mercari, Trefac and KOMEHYO scrapers.

Is this legal? The Actor collects public listing data only, uses only robots.txt-allowed URLs, identifies no user and throttles requests. How you use the data is your responsibility; respect the site's terms of use, keep runs small and scheduled, and do not republish photos or descriptions as your own.

How do I call it from code or from an AI agent?

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("tokyo-select-jp/yahoo-fleamarket-search-scraper").call({
searches: [{ brand: "KAPITAL", categoryPath: "mens > jackets", priceMaxJpy: 50000 }],
maxItemsPerSearch: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
POST https://api.apify.com/v2/acts/tokyo-select-jp~yahoo-fleamarket-search-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN
Content-Type: application/json
{ "keywords": ["visvim FBT"], "maxItemsPerSearch": 50 }

The Actor is also exposed through Apify's MCP server (https://mcp.apify.com), so Claude, ChatGPT, Cursor and other MCP-capable assistants can search Yahoo! Fleamarket by calling this Actor as a tool.

Pricing (pay per event)

EventCharged whenPrice
Result (apify-default-dataset-item, charged automatically by Apify)one listing is saved to the dataset$0.002
Item page (detail-page)that listing was enriched from its item page$0.005 (in addition to the result)
Market summary (summary)one summary row is saved (outputMode summary / both)$0.03 per search
Actor start (apify-actor-start)each run starts$0.00005

Example: 100 listings without detail = $0.20; with detail = $0.70. A summary-only run over 3 searches ≈ 3 × $0.03 = $0.09, whatever the number of listings sampled. Set Max total charge on the run to cap spending.

Roadmap — JP Data Works

Scrapers for Japanese secondhand marketplaces with one normalized shape (priceJpy, sizeNorm, conditionRank, imageUrls):

  • Mercari (メルカリ) — published, incl. sold prices
  • Trefac (トレファク) — published
  • KOMEHYO (コメ兵) — published
  • Yahoo! Fleamarket — this Actor
  • Vector Park, Rakuma — coming; a cross-site aggregator with market summaries (median / p25 / p75 by site, size and condition) is next.

日本語

Yahoo!フリマ(旧 PayPay フリマ)をキーワード・ブランド・カテゴリで検索し、構造化された商品データを返す Actor です。 価格(送料込み)、サイズ正規化、出品日時、出品者 ID、画像を返し、オプションで商品ページから 商品の状態・色・性別・出品者評価・いいね数・配送・説明文・全画像 を付加します。ブラウザ・ログイン・プロキシ不要。

robots.txt で禁止されている URL パラメータ(並び順・価格帯・状態・売り切れ)は使いません。 許可されている /search/<キーワード>(page= brandIds= categoryIds=)、/brand/<id>、/category/<path>、/item/<id> だけを使い、価格帯・出品日・状態・除外語はクライアント側で適用します。

出力(1 商品 = 1 行)

  • itemId / url / title / brand / brandId / categoryId / categoryPath
  • priceJpy(送料込み)、status(on_sale / 詳細取得後に sold)
  • sizeRaw と sizeNorm / size(商品ページ、または一覧のみのときはタイトルから推定)
  • sellerId、listedAt(出品日時)、endsAt、imageUrl / imageUrls、fetchedAt、keyword、search
  • 詳細: conditionRank(6 新品、未使用 … 1)、conditionLabel、color、gender、sellerName / sellerRatingCount / sellerVerified / sellerBadges、likes、shippingMethod / shippingDuration / shippingFromArea、description、全画像

入力

項目既定説明
keywords—検索キーワード(1 行 1 件)
searches—構造化検索: keyword / brand(ブランド名 → ID に解決)/ brandId(106095 = KAPITAL)/ categoryPath(mens、mens > jackets > coverall、メンズファッション > ジャケット > Gジャン、デニム、ladies > dresses)/ categoryId / priceMinJpy / priceMaxJpy / conditionMin(商品ページが必要)/ listedAfter / excludeWords / sellerId
priceMinJpy / priceMaxJpyなし価格帯(クライアント側)
conditionMinなし状態の下限 1〜6(商品ページを開くので enrichDetail が ON になる)
listedAfterなしこの日時以降の出品だけ。ブランド / カテゴリページは新着順なので途中で打ち切り
maxItemsPerSearch100検索ごとの最大件数(1 ページ 100 件)
enrichDetailfalse商品ページを開いて補完
maxDetailPages100商品ページ取得の上限
requestDelayMs2000リクエスト間隔

入力例

{
"searches": [{ "brand": "KAPITAL", "categoryPath": "mens > jackets", "priceMaxJpy": 50000, "listedAfter": "2026-11-01" }],
"maxItemsPerSearch": 100
}

料金(Pay per event)

結果 1 件 $0.002 / 商品ページ 1 件 $0.005 / 起動 $0.00005。100 件(詳細なし)≈ $0.20、詳細あり ≈ $0.70。「Max total charge」で上限設定可。

利用上の注意

  • 公開されている商品情報のみ、robots.txt が許可する URL のみ、既定 2 秒間隔で取得します。ログイン・購入・メッセージは一切行いません。
  • 売り切れ検索は robots.txt で禁止されているため提供しません(sold 相場は Mercari Actor を)。
  • データの利用はご自身の責任で、サイトの利用規約を守り、画像・文章の無断転載はお控えください。