{
  "openapi": "3.0.1",
  "info": {
    "title": "Mercari Japan & Yahoo Auctions Scraper – メルカリ ヤフオク Sold Prices",
    "description": "Japan resale scraper API, no login: Mercari Japan listings & sold items, Mercari Shops, Yahoo Auctions live & sold (ヤフオク落札), Yahoo Flea Market, Rakuma. Item details, seller items & profiles, sold comps (median, p25/p75, days to sell). Filters, JPY→USD, delta. $0.002/listing.",
    "version": "2.0",
    "x-build-id": "odVPaOCysvmEwn687"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/deadc0dex~mercari-yahoo-auctions-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-deadc0dex-mercari-yahoo-auctions-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/deadc0dex~mercari-yahoo-auctions-scraper/runs": {
      "post": {
        "operationId": "runs-sync-deadc0dex-mercari-yahoo-auctions-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/deadc0dex~mercari-yahoo-auctions-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-deadc0dex-mercari-yahoo-auctions-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "title": "Operation (search, market research, sold comps, item details, sellers)",
            "enum": [
              "auto",
              "search",
              "market_research",
              "sold_comps",
              "item_details",
              "seller_items",
              "seller_profiles",
              "seller_reviews",
              "capabilities"
            ],
            "type": "string",
            "description": "auto (default): keywords -> search, urls/ids -> item_details, users -> seller_items. search = listings (status on_sale/sold/all). market_research = keyword -> sold comps per market + live listings priced vs the sold median + one insight row (recommended price, best market after fees, arbitrage spread, deals). sold_comps = price stats per keyword x market. item_details, seller_items, seller_profiles, seller_reviews (Mercari). capabilities = free.",
            "default": "auto"
          },
          "keywords": {
            "title": "Search keywords (メルカリ / ヤフオク search)",
            "type": "array",
            "description": "Keywords for search and sold_comps, one per item. Japanese works best; English is searched as given AND in Japanese when expandQuery knows the term (pokemon card -> ポケモンカード, rolex -> ロレックス). Each row shows queryUsed. Example: [\"ポケモンカード\", \"nintendo switch\"].",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Item or search URLs (Mercari, Yahoo! Auctions, Yahoo! Flea Market, Rakuma)",
            "type": "array",
            "description": "Item URLs for item_details: jp.mercari.com/item/m…, jp.mercari.com/shops/product/…, auctions.yahoo.co.jp/jp/auction/…, paypayfleamarket.yahoo.co.jp/item/…, item.fril.jp/…. Marketplace search URLs (jp.mercari.com/search?keyword=…, auctions.yahoo.co.jp/closedsearch/…) run a search; seller profile URLs (Mercari, Yahoo! Auctions) run seller_items. Bad ones return an INVALID_URL error row (free).",
            "items": {
              "type": "string"
            }
          },
          "ids": {
            "title": "Item IDs",
            "type": "array",
            "description": "Bare item ids for item_details: Mercari m12345678901, Yahoo! Auctions x1234567890 / 1234567890 (a Yahoo! Flea Market id when markets is only yahoo_flea), Mercari Shops 22-char ids, Rakuma 32-hex ids. Use the itemId field of listing rows.",
            "items": {
              "type": "string"
            }
          },
          "users": {
            "title": "Sellers (Mercari / Yahoo! Auctions id or profile URL)",
            "type": "array",
            "description": "Seller ids for seller_items, seller_profiles, seller_reviews: the sellerId of a listing row. Numeric = Mercari (684797252) or https://jp.mercari.com/user/profile/<id>. Letters+digits = Yahoo! Auctions (3UC93wYwb7qvoqVWhjM1R8rtbBxgo) or https://auctions.yahoo.co.jp/seller/<id>. Yahoo! Auctions: live listings + profile; seller_reviews is Mercari-only.",
            "items": {
              "type": "string"
            }
          },
          "markets": {
            "title": "Markets",
            "type": "array",
            "description": "Which marketplaces to search: mercari (Mercari Japan, includes Mercari Shops rows), mercari_shops (Shops only), yahoo_auctions (ヤフオク live + sold), yahoo_flea (Yahoo! Flea Market / PayPayフリマ), rakuma (楽天ラクマ), or all. Default: mercari + yahoo_auctions. Example: [\"mercari\", \"yahoo_auctions\", \"yahoo_flea\", \"rakuma\"].",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "title": "Status: on sale, sold or all",
            "enum": [
              "on_sale",
              "sold",
              "all"
            ],
            "type": "string",
            "description": "on_sale (default) = active listings / live auctions. sold = sold items (Mercari sold + in trade, Yahoo! Auctions closed/落札, Flea Market and Rakuma sold out). all = both. sold_comps always uses sold items.",
            "default": "on_sale"
          },
          "maxItems": {
            "title": "Max rows (whole run)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Total billable rows for the run, 1-10000 (clamped). Default 100. A default call costs at most 100 x $0.002 = $0.20 (listings).",
            "default": 100
          },
          "maxItemsPerInput": {
            "title": "Max rows per keyword x market / seller",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Rows per keyword per market (search), per seller (seller_items, seller_reviews), or sold sample size per keyword x market (sold_comps 120, market_research 60). 1-1000 (clamped). Defaults: search 50, seller_items 50, seller_reviews 50."
          },
          "maxListingsPerKeyword": {
            "title": "market_research: live listings per keyword x market",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "market_research only: live (on-sale) listings returned per keyword per market, each annotated with soldMedianRef, vsSoldMedianPct and dealFlag (deal / below_p25 / fair / above_p75 / too_cheap_check_item). 0-200 (clamped), default 20; 0 = comps + insight only."
          },
          "fields": {
            "title": "Fields to return (projection)",
            "type": "array",
            "description": "Return only these fields (plus type), e.g. [\"title\", \"price\", \"status\", \"url\", \"soldAt\"]. Leave empty for the outputMode default. The capabilities row lists every field per row type.",
            "items": {
              "type": "string"
            }
          },
          "include": {
            "title": "Include extra data",
            "type": "array",
            "description": "details = open every listing for the full item (description, all photos, condition, shipping, seller rating; billed as item-detail $0.004 instead of listing). seller = one seller row per unique Mercari or Yahoo! Auctions seller ($0.005). evidence = sold_comps / market_research also return the sold listings behind each stat ($0.002 each). insights = sold_comps adds the computed insight row (free). comments = latest Mercari comments on item rows (free).",
            "items": {
              "type": "string"
            }
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "compact",
              "full",
              "lean",
              "table"
            ],
            "type": "string",
            "description": "compact (default) = stable flat rows. full = every field. lean = minimal rows for LLMs (listing: market, title, price, status, condition, soldAt, bids, end time; empty values dropped; url rebuilt from summary.urlPatterns + id). table = lean + one TSV table per row type in key-value record LEAN_TABLE (fewest tokens).",
            "default": "compact"
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "newest",
              "price_asc",
              "price_desc",
              "likes",
              "ending_soon",
              "relevance"
            ],
            "type": "string",
            "description": "newest (default) = newest listed (sold: newest sold on Yahoo! Auctions). price_asc / price_desc = by price. likes = most liked (Mercari, Flea Market). ending_soon = Yahoo! Auctions ending soonest. relevance = marketplace best match. Markets without a sort fall back to newest.",
            "default": "newest"
          },
          "minPrice": {
            "title": "Min price (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in yen. Applied by the marketplace where supported, then checked on every row."
          },
          "maxPrice": {
            "title": "Max price (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in yen. Applied by the marketplace where supported, then checked on every row."
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop listings whose title contains any of these words (e.g. [\"ジャンク\", \"まとめ\"]). Mercari also applies it server-side.",
            "items": {
              "type": "string"
            }
          },
          "currency": {
            "title": "Convert prices to (currency)",
            "type": "string",
            "description": "JPY (default) or any ISO code such as USD, EUR, GBP: adds priceConverted and converted comps using the day's ECB rate (api.frankfurter.dev). price always stays in JPY.",
            "default": "JPY"
          },
          "maxCostUsd": {
            "title": "Max cost (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Stop before the run's charges exceed this amount; rows so far are kept and a BUDGET_REACHED row (free) explains it. Example: 0.5."
          },
          "dryRun": {
            "title": "Dry run (free estimate)",
            "type": "boolean",
            "description": "Return one plan row per task (markets, queries, estimated rows, cost, seconds) and a summary, without fetching or billing anything.",
            "default": false
          },
          "condition": {
            "title": "Condition",
            "type": "array",
            "description": "Keep only these conditions: new (新品、未使用), like_new (未使用に近い), good (目立った傷や汚れなし), fair (やや傷や汚れあり), poor (傷や汚れあり), bad (全体的に状態が悪い). Rows whose condition is unknown (Rakuma search, most live Yahoo! Auctions rows) are dropped unless include has details.",
            "items": {
              "type": "string"
            }
          },
          "matchTerms": {
            "title": "Title must contain (all terms)",
            "type": "array",
            "description": "Keep only rows whose title contains every term (case/width-insensitive), e.g. [\"本体\", \"lite\"]. Filters after fetch: it does not reduce pages fetched or cost of comps; billed rows only include matches.",
            "items": {
              "type": "string"
            }
          },
          "titleMatch": {
            "title": "Title relevance (any / all / off)",
            "enum": [
              "any",
              "all",
              "off"
            ],
            "type": "string",
            "description": "Drop rows whose title has none (any) or not all (all) of the keyword's words (either query variant). Default any for market_research (marketplace search is fuzzy), off elsewhere. Filters after fetch."
          },
          "compsFilter": {
            "title": "Comps cleaning (off / outliers / accessories)",
            "enum": [
              "off",
              "outliers",
              "accessories"
            ],
            "type": "string",
            "description": "sold_comps / market_research: off (default) = raw stats. outliers = drop prices outside p25-1.5 IQR .. p75+1.5 IQR (>= 8 rows). accessories = also drop accessory / part / empty-box titles (case, film, charger, dock, 空箱, 部品 ...) while collecting, so the sample refills; live research listings too. Comps rows always carry cleanMedian / cleanP25 / cleanP75 / accessoryShare."
          },
          "yahooFleaCrossListings": {
            "title": "Yahoo! Auctions: Flea Market cross-listings",
            "enum": [
              "include",
              "exclude",
              "only"
            ],
            "type": "string",
            "description": "Yahoo! Auctions search now mixes in Yahoo! Flea Market fixed-price items (rows say collectionWarnings yahoo_flea_market_cross_listing). include (default) = keep, exclude = real auctions only (comps = auction prices), only = cross-listings only. Filtered after fetch; more pages are read to refill."
          },
          "dealThresholdPct": {
            "title": "market_research: deal threshold (% below sold median)",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "A live listing is a deal when its buyable price is at least this % below the sold median (1-90, default 20). Rows under 35% of the median are flagged too_cheap_check_item instead (usually a different or partial item)."
          },
          "dealsOnly": {
            "title": "market_research: return only deals",
            "type": "boolean",
            "description": "market_research: scan up to max(5 x maxListingsPerKeyword, 100) live listings per market (max 300, scanning is not billed) and return only those flagged deal or below_p25, cheapest vs the sold median first, max maxListingsPerKeyword. You pay only for returned rows. Default false.",
            "default": false
          },
          "sellerFeesPct": {
            "title": "market_research: seller fee % per market",
            "type": "object",
            "description": "Override seller fees used for net-after-fee prices, e.g. {\"rakuma\": 6}. Defaults (checked 2026-10-13): mercari 10, mercari_shops 10, yahoo_auctions 10, yahoo_flea 5, rakuma 10 (4.5-9 for high-volume sellers)."
          },
          "shippingCostJpy": {
            "title": "market_research: shipping cost to deduct (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional shipping cost subtracted from every market's net sale price in the insight row (default 0 = not included; the row then warns shipping_not_included)."
          },
          "insights": {
            "title": "market_research: insight row",
            "type": "boolean",
            "description": "market_research: add the computed insight row per keyword (free). Default true.",
            "default": true
          },
          "trackMetrics": {
            "title": "Snapshot metrics between runs (needs deltaKey)",
            "type": "boolean",
            "description": "With deltaKey: rows get snapshotAt, previousSnapshotAt and deltas vs the previous run (listings: priceDelta, likesDelta, bidCountDelta, watchCountDelta; comps: medianDelta, activeListingsDelta, soldPerDayDelta, sellThroughRateDelta). onlyChanges then defaults to false. Only compact numbers are stored.",
            "default": false
          },
          "categoryIds": {
            "title": "Category ids (market-native)",
            "type": "array",
            "description": "Native category ids: Mercari categoryId (e.g. 1289 = ポケモンカードゲーム) or one Yahoo! Auctions category id (auccat). Take them from the categoryId field of earlier rows.",
            "items": {
              "type": "string"
            }
          },
          "brandIds": {
            "title": "Mercari brand ids",
            "type": "array",
            "description": "Mercari brand ids (server-side filter).",
            "items": {
              "type": "string"
            }
          },
          "buyNowOnly": {
            "title": "Yahoo! Auctions: buy-now only",
            "type": "boolean",
            "description": "Keep only Yahoo! Auctions rows with a buy-now (即決) price or fixed price.",
            "default": false
          },
          "minBids": {
            "title": "Yahoo! Auctions: min bids",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only Yahoo! Auctions rows with at least this many bids."
          },
          "endingWithinMinutes": {
            "title": "Yahoo! Auctions: ending within (minutes)",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only live Yahoo! Auctions ending within N minutes (combine with sortBy ending_soon)."
          },
          "shippingPayer": {
            "title": "Shipping paid by",
            "enum": [
              "seller",
              "buyer"
            ],
            "type": "string",
            "description": "seller = free shipping (送料込み) only; buyer = buyer pays (着払い). Leave empty for any."
          },
          "windowDays": {
            "title": "Sold comps window (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "sold_comps: only sales from the last N days count (1-3650, default 90). Rakuma rows have no sale date and are not cut.",
            "default": 90
          },
          "deltaKey": {
            "title": "Track changes (deltaKey)",
            "type": "string",
            "description": "Name for change tracking between runs (e.g. \"switch-watch\"). Rows get changeType new / price_drop / price_up / sold / relisted / unchanged and previousPrice. State lives in a named key-value store in your account. Use status all to catch items that sold."
          },
          "onlyChanges": {
            "title": "Only changed rows (with deltaKey)",
            "type": "boolean",
            "description": "With deltaKey: skip unchanged rows (not billed). Default true (false when trackMetrics is on)."
          },
          "expandQuery": {
            "title": "English -> Japanese query expansion",
            "type": "boolean",
            "description": "Search English keywords as given AND in Japanese when the dictionary knows the term (400+ resale terms: brands, franchises, item types, condition words). Results are merged and de-duplicated. Default true.",
            "default": true
          },
          "dedupe": {
            "title": "De-duplicate rows",
            "type": "boolean",
            "description": "Drop repeated items across queries and markets (a Flea Market item also listed on Yahoo! Auctions counts once). Default true.",
            "default": true
          },
          "reviewFame": {
            "title": "Reviews: fame filter",
            "type": "array",
            "description": "seller_reviews: keep only good, normal and/or bad reviews.",
            "items": {
              "type": "string"
            }
          },
          "reviewSubject": {
            "title": "Reviews: as seller / buyer",
            "enum": [
              "seller",
              "buyer",
              "all"
            ],
            "type": "string",
            "description": "seller (default) = reviews the user got as a seller; buyer = as a buyer; all = both.",
            "default": "seller"
          },
          "commentsPerItem": {
            "title": "Comments per item (include comments)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Latest Mercari comments per item row with include comments (0-50, default 5). Commenter ids are hashed.",
            "default": 5
          },
          "maxImagesPerItem": {
            "title": "Photos per item row",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "item rows: return the first N photo URLs in imageUrls (1-50; default 3 in compact, all in full). imageCount always gives the total, so nothing is hidden."
          },
          "maxTextChars": {
            "title": "Max text length",
            "minimum": 0,
            "type": "integer",
            "description": "Cut description / introduction / review text to N characters (0 = no cut; lean default 300)."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}