OrbTop

Rakuma Fril Japan Listings Scraper

ECOMMERCE

Rakuma Fril Japan Listings Scraper

Scrape listings from Rakuma (旧フリル / fril.jp) — Rakuten's C2C flea-market app, a top-3 Japanese resale surface behind Mercari. One schema unifies keyword search with item-detail enrichment (condition, seller, shipping payer, price-drop flag), replacing what three separate shallow single-purpose scripts do on Apify today.

What it does

  • Searches Rakuma by keyword (Japanese search terms, e.g. 腕時計 for watches)
  • Extracts ~40 listing cards per search results page from server-rendered HTML
  • Follows every listing's detail page to enrich each record with condition, shipping payer, seller id/rating, and full category breadcrumb
  • Paginates automatically until maxItems is reached

Input

Field Type Required Description Default
query string Yes Japanese search keyword (e.g. 腕時計) — free text, Rakuma's search accepts any term 腕時計
maxItems integer Yes Maximum number of listings to return 10

Output

Each record contains:

Field Description
item_id 32-hex item id from the item.fril.jp/<id> detail URL
title Listing title
sub_name Brand or variant sub-name line shown under the title (often blank)
price_jpy Listing price in Japanese yen
item_status on-sale or sold
is_reduced true if the listing shows a price-drop/reduction badge
category_path Breadcrumb category path, e.g. メンズ > 時計 > 腕時計(アナログ)
condition Item condition grade from the detail page (Japanese text, e.g. 目立った傷や汚れなし)
seller_id Seller shop/user slug from the detail page
seller_rating Percent positive seller reviews (good / (good+neutral+bad) * 100)
shipping_payer Shipping-cost label from the detail page (e.g. 送料込)
item_url Canonical item detail URL
image_urls Gallery image URLs from the item detail page
posted_at Listing post date, when exposed by the source (not present on most items — best-effort)
region Fixed JP

Notes

  • Listing and detail pages are both server-rendered static HTML — no browser automation required
  • Runs through a DataImpulse residential proxy (Japan exit) to sustain deeper multi-page sweeps reliably
  • Sustained/deep crawling can trigger a rate-limit slide-puzzle challenge on Rakuma; a challenge page is detected and skipped rather than saved as a record
  • posted_at is not exposed on the detail page for most listings (official-shop and many individual listings alike) — left null when absent rather than guessed

Resuming a large crawl

Every run accepts an optional resumeCursor input. If a previous run was stopped partway (manually, or by an Apify timeout), copy resumeCursor from that run's output into the next run's input to continue from where it left off — already-collected listings are not re-fetched or re-charged.

Example

Input:

{
  "query": "腕時計",
  "maxItems": 10
}

Output (excerpt):

{
  "item_id": "ad0ea2effd2b8402bfd35a535a68d03d",
  "title": "★自動巻き腕時計★",
  "sub_name": "",
  "price_jpy": 30000,
  "item_status": "on-sale",
  "is_reduced": false,
  "category_path": "メンズ > 時計 > 腕時計(アナログ)",
  "condition": "やや傷や汚れあり",
  "seller_id": "826c317fd579fddd3265c9d9b2722c42",
  "seller_rating": 100,
  "shipping_payer": "送料込",
  "item_url": "https://item.fril.jp/ad0ea2effd2b8402bfd35a535a68d03d",
  "image_urls": ["https://img.fril.jp/img/841313910/l/2900239709.jpg?1783218852"],
  "posted_at": null,
  "region": "JP"
}