{
  "openapi": "3.0.1",
  "info": {
    "title": "Mercari Japan Scraper: Listings, Prices, Sold",
    "description": "Scrape Mercari Japan listings by keyword, category, search link, seller or brand, no login. Get price in yen, status (on sale, sold), condition, brand, size, photos and shipping in English labels, plus sold price summaries, translation and a monitor of new and changed listings. JSON, CSV.",
    "version": "0.1",
    "x-build-id": "KrDTtJzyzcuAFHagV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~mercari-japan-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-mercari-japan-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/automation_craft~mercari-japan-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-mercari-japan-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/automation_craft~mercari-japan-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-mercari-japan-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Search words as you would type them on Mercari Japan, for example ポケモンカード, pokemon card, nike or nintendo switch. Up to 100 keywords of up to 100 characters each.",
            "items": {
              "type": "string"
            }
          },
          "japanCategoryIds": {
            "title": "Category ids",
            "type": "array",
            "description": "Mercari Japan category ids, the number after category_id= in a jp.mercari.com search link (for example 7002 for Nintendo Switch). Checked against Mercari Japan's own category list, which this Actor carries; an unknown id is a free row.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Search links",
            "type": "array",
            "description": "Mercari Japan search links copied from the site (https://jp.mercari.com/search?keyword=...), each read as its own search with every filter on it applied as the site applies it: keyword, excluded word, category, brand, size, seller, price, condition, shipping payer, prefecture, shipping method, colour, status, order, Mercari Shops or personal, attribute filters. The filters below apply to keyword searches; the filters applied by this Actor apply to links too. Up to 100 links.",
            "items": {
              "type": "string"
            }
          },
          "sellerUrls": {
            "title": "Sellers and shops",
            "type": "array",
            "description": "Seller profile links (https://jp.mercari.com/user/profile/123456789), bare seller ids, or Mercari Shops shop links (https://jp.mercari.com/shops/profile/...): the listings of each seller or shop, filtered by the settings below (with keywords: each keyword within each seller). Up to 100.",
            "items": {
              "type": "string"
            }
          },
          "listingUrls": {
            "title": "Listing links",
            "type": "array",
            "description": "Mercari Japan listing links: https://jp.mercari.com/item/m... or https://jp.mercari.com/shops/product/... (a bare id such as m12345678901 works too). Each link is read with its details and delivered as given; the search filters do not apply to links. A listing that no longer exists is a free row. Up to 5,000.",
            "items": {
              "type": "string"
            }
          },
          "similarToListings": {
            "title": "Similar listings of",
            "type": "array",
            "description": "Mercari Japan listing links (https://jp.mercari.com/item/m...) whose similar listings, as Mercari shows them on the listing page, are delivered (30 a page). Their rows carry title, price, status and type; other filters are checked on each listing's detail when Include details is on, and without it only filters on those fields can pass. Up to 100.",
            "items": {
              "type": "string"
            }
          },
          "searchAllListings": {
            "title": "Search every listing",
            "type": "boolean",
            "description": "Search all of Mercari Japan without a keyword, with the filters below (for example every listing of a brand, size or price band, newest first). Not together with keywords, category ids, sellers or brands.",
            "default": false
          },
          "useJapaneseAliases": {
            "title": "Retry keywords in Japanese",
            "type": "boolean",
            "description": "When a keyword finds no listing at all and it is a franchise name written in Chinese or English that this Actor's table knows (for example 宝可梦 or one piece), search the Japanese term sellers use (ポケモン, ワンピース) once instead. Rows say which term found them (keywordUsed, keywordMapped). Off: the search's coverage row names the term.",
            "default": false
          },
          "statuses": {
            "title": "Status",
            "type": "array",
            "description": "on_sale (listed), sold (sold comparables) and trading (sold, the trade not yet finished). Pick one or more; left empty: on_sale.",
            "items": {
              "type": "string",
              "enum": [
                "on_sale",
                "sold",
                "trading"
              ],
              "enumTitles": [
                "On sale",
                "Sold",
                "In trade (sold, not yet completed)"
              ]
            }
          },
          "sort": {
            "title": "Order",
            "enum": [
              "newest",
              "best_match",
              "price_low",
              "price_high",
              "most_liked"
            ],
            "type": "string",
            "description": "newest is Mercari's newest first order (the default, and the only order a monitor reads; Mercari moves a listing up it when the seller edits it). best_match is Mercari's relevance order, most_liked the most liked first. Mercari Japan serves no oldest first order."
          },
          "minPriceJpy": {
            "title": "Minimum price in yen",
            "minimum": 0,
            "maximum": 9999999,
            "type": "integer",
            "description": "Whole yen."
          },
          "maxPriceJpy": {
            "title": "Maximum price in yen",
            "minimum": 0,
            "maximum": 9999999,
            "type": "integer",
            "description": "Whole yen."
          },
          "conditions": {
            "title": "Condition",
            "type": "array",
            "description": "new, like_new, good, fair, poor: Mercari Japan's six grades, with fair covering its two middle grades (some scratches, and scratches or marks). The row carries Mercari's own English label and its grade id.",
            "items": {
              "type": "string",
              "enum": [
                "new",
                "like_new",
                "good",
                "fair",
                "poor"
              ],
              "enumTitles": [
                "New",
                "Like new",
                "Good",
                "Fair",
                "Poor"
              ]
            }
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Brand names as Mercari Japan lists them (NIKE, ナイキ, Supreme, ルイ・ヴィトン) or brand ids (the number after brand_id= in a search link). A name is looked up at Mercari once per run and used only when exactly one brand carries it; otherwise a free row lists the candidates. With no keyword, the brands alone are searched. Up to 20 names.",
            "items": {
              "type": "string"
            }
          },
          "sizeIds": {
            "title": "Size ids",
            "type": "array",
            "description": "Mercari Japan size ids, the number after size_id= in a search link (for example 3 for clothing size M, 10 for men's shoes 26.5 cm). Checked against Mercari Japan's size list, which this Actor carries.",
            "items": {
              "type": "string"
            }
          },
          "colors": {
            "title": "Colour",
            "type": "array",
            "description": "Mercari Japan's colour filter: white, black, gray, brown, beige, green, blue, purple, yellow, pink, red, orange.",
            "items": {
              "type": "string",
              "enum": [
                "white",
                "black",
                "gray",
                "brown",
                "beige",
                "green",
                "blue",
                "purple",
                "yellow",
                "pink",
                "red",
                "orange"
              ],
              "enumTitles": [
                "White",
                "Black",
                "Gray",
                "Brown",
                "Beige",
                "Green",
                "Blue",
                "Purple",
                "Yellow",
                "Pink",
                "Red",
                "Orange"
              ]
            }
          },
          "shippingPayer": {
            "title": "Shipping paid by",
            "enum": [
              "seller",
              "buyer"
            ],
            "type": "string",
            "description": "seller: shipping included in the price (送料込み); buyer: the buyer pays on delivery (着払い)."
          },
          "shippingMethods": {
            "title": "Shipping method",
            "type": "array",
            "description": "anonymous: anonymous shipping (Mercari's own delivery services); japan_post: Japan Post; no_option: methods without either.",
            "items": {
              "type": "string",
              "enum": [
                "anonymous",
                "japan_post",
                "no_option"
              ],
              "enumTitles": [
                "Anonymous shipping",
                "Japan Post",
                "Other methods"
              ]
            }
          },
          "shippingFromPrefectures": {
            "title": "Ships from prefecture",
            "type": "array",
            "description": "Prefectures the item ships from: ids from 1 (Hokkaido) to 47 (Okinawa), or English names such as Tokyo, Osaka or Hokkaido.",
            "items": {
              "type": "string"
            }
          },
          "personalListingsOnly": {
            "title": "Personal listings only",
            "type": "boolean",
            "description": "Leave out Mercari Shops products, so sold comparables are sales between people (a sold search is otherwise mostly shop products).",
            "default": false
          },
          "shopListingsOnly": {
            "title": "Mercari Shops listings only",
            "type": "boolean",
            "description": "Only Mercari Shops products (shops' listings), no personal listings.",
            "default": false
          },
          "excludeKeywords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Listings whose title holds one of these words (a word of the title that starts with one, as for the title match: \"lego\" also leaves out \"LEGOスターウォーズ\"; any letter case, full width letters read as plain ones) are left out, free. For example junk, broken or ジャンク.",
            "items": {
              "type": "string"
            }
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only listings created within this many days before the run started. Mercari Japan's newest first order is by last update, not creation, so older rows are left out for free and the walk goes on to the page limit."
          },
          "onlyTitleMatches": {
            "title": "Only titles with every keyword word",
            "type": "boolean",
            "description": "Leave out listings whose title does not hold every word of the keyword (Mercari also returns related listings). Every row carries titleMatchesKeyword either way. Japanese titles often write a brand in katakana: switch this on with Japanese keywords.",
            "default": false
          },
          "includeDetails": {
            "title": "Include details",
            "type": "boolean",
            "description": "Read each delivered listing's detail and add it to the row: description, likes, comment count, hashtags, attributes, colours, shipping fee, method, prefecture and days, auction, offers, anonymous shipping and authentication, and the seller's rating (with its good, normal and bad counts) and listing count; a personal seller's public id, display name and profile link only with Include personal data. A Mercari Shops product carries its shop's name, score, review count and stock by variant. Billed as Listing detail on top of Listing.",
            "default": false
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "With Include details on (also for listing links, which are always read with their details): the listing's comments as texts with their time and whether the seller wrote them, exactly as written; with Include personal data on, also each commenter's public id and display name (userId, userName). No extra charge: they come with the detail.",
            "default": false
          },
          "includePersonalData": {
            "title": "Include personal data",
            "type": "boolean",
            "description": "Off (the default): a personal seller's public id, display name and profile link (sellerId, sellerName, sellerUrl, rows with details) are empty. On: they are delivered as Mercari shows them to visitors who are not signed in. Titles, descriptions, hashtags, comment texts and Mercari's translations are never masked: they come exactly as Mercari serves them, switch on or off, contact details a seller wrote included. A Mercari Shops shop's id, name and link are always delivered. Nothing behind a Mercari login is read. With it on you can also turn on Seller profiles and Seller reviews, and comments name their commenter (public id and display name). You are responsible for a lawful use of personal data, GDPR included. No extra charge.",
            "default": false
          },
          "includeSellerProfiles": {
            "title": "Seller profiles",
            "type": "boolean",
            "description": "With Include personal data on: one profile row for each private seller of the listings this run delivers (type seller): the seller's public id, display name and link, followers and following, introduction as written, the badges Mercari shows (English names), rating with its count, number of listings and the date they joined. With the good, normal and bad rating counts and whether the phone number is verified. Billed as one Seller profile per row. A Mercari Shops shop gets none (a business; its id and name are on its listings). Not with a monitor name. Refused without Include personal data.",
            "default": false
          },
          "includeSellerReviews": {
            "title": "Seller reviews",
            "type": "boolean",
            "description": "With Include personal data on: the reviews of each private seller of the listings this run delivers (type review), newest first, up to Reviews per seller: the rating as Mercari words it (good, normal or bad), the text as written, the role the seller had in that sale (seller or buyer), the date, and the reviewer's public id, name and link. Billed as one Seller review per row. Not with a monitor name. Refused without Include personal data.",
            "default": false
          },
          "maxReviewsPerSeller": {
            "title": "Reviews per seller",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "With Seller reviews: the most review rows per seller, newest first (20 when left out). A seller with fewer reviews gives what it has."
          },
          "translateTo": {
            "title": "Translate to",
            "enum": [
              "en",
              "zh-TW"
            ],
            "type": "string",
            "description": "Mercari Japan's own machine translation of each delivered listing's title and description (Mercari makes it on request; it may contain errors). Billed as Translation per translated row."
          },
          "currency": {
            "title": "Second currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "AUD",
              "CNY",
              "TWD",
              "HKD",
              "KRW"
            ],
            "type": "string",
            "description": "Add each price in this currency at the exchange rate Mercari Japan shows (read once per run; Mercari updates it daily). No extra charge."
          },
          "shipsToCountry": {
            "title": "Check buyable from country",
            "type": "string",
            "description": "A two letter country code (US, GB, TW, KR ...): each delivered listing says whether Mercari Japan lets a buyer in that country buy it (through its cross border partner), as Mercari answers on the listing page. Billed as Country check per answered row."
          },
          "priceSummary": {
            "title": "Price summary per search",
            "type": "boolean",
            "description": "One extra row per search with the count, lowest, highest, average and median price, the quartiles, the share sold, the median days to sell (approximate) and ten listings across the price range, from the listings the search delivered. Use status sold for sold comparables. Billed as Price summary per search.",
            "default": false
          },
          "onlyBelowSoldMedian": {
            "title": "Only listings under the sold median",
            "type": "boolean",
            "description": "For each search, read up to 3 pages of its SOLD listings first, then deliver only listings on sale priced under their median price (with a Price summary row per search). Status must be on_sale.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum listings",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Listing rows this run's searches and links deliver at most. With several searches each gets an equal share first, then the rest goes to the searches that have more. A change monitor's re-checks (Check listings the searches no longer show) are bounded by Maximum listing checks instead."
          },
          "maxItemsPerSearch": {
            "title": "Maximum listings per search",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Listing rows one search (a keyword, a link, a seller) delivers at most, within Maximum listings."
          },
          "maxPagesPerSearch": {
            "title": "Maximum pages per search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Results pages read per search (about 120 listings a page, 30 for similar listings). Left empty: 10. One Mercari Japan search serves about 10,000 listings."
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "A short name of your own, such as pokemon-cards-jp (letters, digits, spaces and . _ , - : # ( ), up to 60 characters). Every run reads the newest pages of each search up to the page limit and pays a Results page per page read; listings the monitor delivered before are free unless they changed (with Changes too), you ask for them again (Unchanged ones too) or a re-check finds them sold, changed or removed (Check listings), each then billed as a Listing. One name belongs to one set of settings."
          },
          "monitorChanges": {
            "title": "Changes too",
            "type": "boolean",
            "description": "With a monitor name: also deliver listings the monitor delivered before whose price or status changed since (sold, in trade, price cut or rise), with the previous price and status, the change, and when the monitor first and last saw them. Billed as Listing again for a changed listing.",
            "default": false
          },
          "monitorDeliverUnchanged": {
            "title": "Unchanged ones too",
            "type": "boolean",
            "description": "With Changes: deliver the unchanged listings the monitor already knows as well (monitorState unchanged); each one delivered is billed as a Listing (and a Listing detail with details).",
            "default": false
          },
          "checkRemovedListings": {
            "title": "Check listings the searches no longer show",
            "type": "boolean",
            "description": "With Changes: re-read the remembered listings on sale or in trade that no page of this run showed (the longest unseen first; a Listing check per answered read), to learn whether they sold, changed price or were removed. Each one that sold, changed or was removed is delivered as a row (monitorState changed or removed) and billed as a Listing (plus a Listing detail with details for a changed one). Bounded by Maximum listing checks, not by Maximum listings.",
            "default": false
          },
          "maxListingChecks": {
            "title": "Maximum listing checks",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Remembered listings re-read per run at most (with Check listings), the longest unseen first. Left empty: 100. These re-checks and the rows they deliver do not count toward Maximum listings."
          },
          "resumeFromDatasetId": {
            "title": "Resume from dataset",
            "type": "string",
            "description": "The id of a dataset of an earlier run of this Actor (its Storage tab): the listings in it are not delivered or charged again, so an interrupted run can be continued. A dataset that cannot be read stops the run before anything is read. A dataset of up to 200,000 rows; a larger one refuses the run, free."
          },
          "useResidentialProxy": {
            "title": "Use residential proxy",
            "type": "boolean",
            "description": "Read Mercari Japan through Apify residential exits in Japan instead of the datacenter group (the default, which answers every call in our tests). No extra charge.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}