{
  "openapi": "3.0.1",
  "info": {
    "title": "Mercari Japan Scraper - Sold Prices & Image Search",
    "description": "Scrape Mercari Japan (メルカリ) listings and sold prices by keyword, search link or image. On-sale or sold items with price, condition, category, brand and shipping filters, auctions flagged, full item pages. Only-new listings mode for schedules. Your item limit is respected. No login. Errors are free.",
    "version": "0.1",
    "x-build-id": "ubO4vjbV6mK5eOyJa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~mercari-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-mercari-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/scrapewise~mercari-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-mercari-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/scrapewise~mercari-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-mercari-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "item",
              "url"
            ],
            "type": "string",
            "description": "Search listings (default): runs each search term and search or category link and returns one row per listing, with price, status, condition, photos and seller type. Full item pages from links: reads each item link and adds the description, category path, shipping method and days, likes and colors. 'Search links' behaves the same as Search listings. Every mode is charged per item delivered at the same price.",
            "default": "search"
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search on Mercari Japan, one per line. Japanese and English both work (for example ポケモンカード, nintendo switch, supreme); Japanese terms usually return more listings. Each term is a separate search with its own limit and every row keeps its term. Leave empty and add links below, or leave everything empty to run the example 'nintendo switch'. Also accepts 'keyword', 'keywords' or 'queries' from other Mercari scrapers.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Mercari links",
            "type": "array",
            "description": "Mercari Japan links, one per line: search or category pages with their filters (for example https://jp.mercari.com/search?keyword=pokemon&status=sold_out) or item pages (https://jp.mercari.com/item/m12345678901). Plain item ids such as m12345678901 work too, and Mercari Shops item links are accepted. Filters in a search link are kept. In 'Full item pages' mode put the item links here. Invalid links return a free INVALID_URL row. Also accepts 'itemUrls', 'urls' or 'itemIds'.",
            "items": {
              "type": "string"
            }
          },
          "imageUrls": {
            "title": "Image links (search by image)",
            "type": "array",
            "description": "Find Mercari Japan listings that look like a photo, one image link per line: any public JPG, PNG or WebP (a product photo from another store, your own photo, or a Mercari image). You can also paste a jp.mercari.com item link or id such as m12345678901: its first photo is used and the item itself is left out, so you get the same or similar items from other sellers. Results come most similar first, with the same fields as a keyword search plus 'sourceImage' (the image or link the row came from), 'position' (rank for that image) and 'suggestedCategories'. Status, price, condition, category, brand, shipping and format filters apply to images too; choose Sold under Status to see what the item sold for. Sort is always by similarity. Also accepts 'imageUrl' and 'images'.",
            "items": {
              "type": "string"
            }
          },
          "imageFile": {
            "title": "Or upload one image",
            "type": "string",
            "description": "Upload a product photo (JPG, PNG or WebP, up to 15 MB) from your computer instead of pasting a link. It is searched exactly like an image link and its rows carry the uploaded file's link in 'sourceImage'. Leave empty when you use links."
          },
          "maxResultsPerImage": {
            "title": "Max items per image",
            "minimum": 0,
            "type": "integer",
            "description": "Listings returned for each image or item link, for example 30 (the default, one Mercari page) or 120. Mercari shows up to about 800 similar listings per photo; 0 means all of them. You pay per listing delivered, so this caps the cost of each image. 'maxItemsPerImage' also works.",
            "default": 30
          },
          "maxItemsPerSearch": {
            "title": "Max items per search",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each search (each term or search link) after this many listings (default 120, one Mercari page). Mercari serves 120 listings per page and about 12,000 per search; 0 means as many as Mercari shows. You pay per listing delivered, so this is the main cost control. Also accepts 'limit', 'maxItemsPerTerm' or 'maxItems'.",
            "default": 120
          },
          "maxTotalItems": {
            "title": "Max items in the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap for the whole run, across all searches and item links together (for example 500). Leave empty or 0 for no run cap, so only the per-search limit applies. Useful with many search terms when you want a fixed budget per run. Also accepts 'maxResults' or 'maxListings'."
          },
          "onlyNewListings": {
            "title": "Only new listings since the last run",
            "type": "boolean",
            "description": "For scheduled runs (searches only). Remembers which listings each search with its filters already returned, in a named key-value store in your account ('mercari-scraper-only-new'), and delivers only listings not seen before: new ones, or older ones the seller bumped back to the top. Seen listings are not delivered, not charged and do not count toward 'Max items per search'. Forces the Newest order. A run with nothing new ends with a status message and costs nothing. Delete the store to start over. Also accepts 'onlyNew'.",
            "default": false
          },
          "status": {
            "title": "Status",
            "enum": [
              "onSale",
              "sold",
              "all",
              "on_sale",
              "sold_out",
              "trading",
              "any"
            ],
            "type": "string",
            "description": "On sale (default) returns listings you can still buy. Sold returns sold and in-transaction listings, the source for real selling prices in price research. All returns both. Every row has a status column. The extra options (on_sale, sold_out, trading, any) are the same values written the way other Mercari scrapers send them.",
            "default": "onSale"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "bestMatch",
              "newest",
              "priceLowToHigh",
              "priceHighToLow",
              "mostLiked",
              "score-desc",
              "created-desc",
              "created-asc",
              "price-asc",
              "price-desc",
              "num-likes-desc"
            ],
            "type": "string",
            "description": "Mercari's own order: Best match (default), Newest, Price low to high, Price high to low or Most liked. With a per-search limit it also decides which listings you get, for example Newest with 120 returns the 120 most recent listings. The options in parentheses are the same orders under the names other Mercari scrapers use. 'Only new listings' forces Newest. Also accepts 'sort' and 'order'.",
            "default": "bestMatch"
          },
          "minPrice": {
            "title": "Minimum price (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at or above this amount in Japanese yen (for example 3000). Uses Mercari's own price filter. Leave empty for no minimum. Also accepts 'priceMin'."
          },
          "maxPrice": {
            "title": "Maximum price (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at or below this amount in Japanese yen (for example 50000). Must be higher than the minimum price. Leave empty for no maximum. Also accepts 'priceMax'."
          },
          "itemCondition": {
            "title": "Condition",
            "type": "array",
            "description": "Only listings in these conditions, as Mercari grades them: New (unused), Like new, No noticeable scratches or stains, Some scratches or stains, Scratches or stains, Poor. Pick one or more; empty means any condition. The numbered options (1 to 6) are Mercari's own condition ids. Also accepts 'condition' or 'itemConditionId'.",
            "items": {
              "type": "string",
              "enum": [
                "new",
                "likeNew",
                "noNoticeableWear",
                "someWear",
                "visibleWear",
                "poor",
                "1",
                "2",
                "3",
                "4",
                "5",
                "6"
              ],
              "enumTitles": [
                "New, unused",
                "Like new",
                "No noticeable scratches or stains",
                "Some scratches or stains",
                "Scratches or stains",
                "Poor overall condition",
                "New, unused (1)",
                "Like new (2)",
                "No noticeable scratches or stains (3)",
                "Some scratches or stains (4)",
                "Scratches or stains (5)",
                "Poor overall condition (6)"
              ]
            }
          },
          "categoryIds": {
            "title": "Category ids",
            "type": "array",
            "description": "Numeric Mercari category ids, one per line, as they appear in a Mercari search link (for example 701 from category_id=701). Open a category on jp.mercari.com and copy the number from the address bar. Empty means every category. Also accepts 'categoryId'.",
            "items": {
              "type": "string"
            }
          },
          "brandIds": {
            "title": "Brand ids",
            "type": "array",
            "description": "Numeric Mercari brand ids, one per line, as they appear in a Mercari search link (for example 15487 from brand_id=15487). Empty means every brand. Also accepts 'brandId'.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeyword": {
            "title": "Exclude keyword",
            "type": "string",
            "description": "Mercari leaves out listings whose title or description match this word, for example ジャンク to skip junk items or 'case' to skip accessories. One word or phrase. Leave empty to keep everything."
          },
          "shippingPaidBy": {
            "title": "Shipping paid by",
            "enum": [
              "any",
              "seller",
              "buyer"
            ],
            "type": "string",
            "description": "Any (default), Seller (shipping included in the price, 送料込み) or Buyer (shipping paid on delivery, 着払い). Useful to compare prices on the same basis. Also accepts 'shippingPayer'.",
            "default": "any"
          },
          "includeDetails": {
            "title": "Full item pages in search",
            "type": "boolean",
            "description": "In search mode, also opens each listing's own page and adds the description, category path, shipping method and days, likes and colors. Same price per item, but the run is slower (one extra request per listing), so use it on smaller searches. Off by default. Also accepts 'fetchDetails'.",
            "default": false
          },
          "includeShopItems": {
            "title": "Include Mercari Shops",
            "type": "boolean",
            "description": "On by default: keeps listings from Mercari Shops (business sellers) that appear in the search; each row says which kind of seller it is. Turn off to keep only listings from regular Mercari users.",
            "default": true
          },
          "listingFormat": {
            "title": "Listing format",
            "enum": [
              "any",
              "fixedPrice",
              "auction"
            ],
            "type": "string",
            "description": "Mercari also runs auctions (normal and 3-hour flash). Any (default) keeps both. Fixed price only keeps price data clean for research. Auctions only is for watching auctions ending soon. Every row says isAuction; listings outside the chosen format are skipped and not charged.",
            "default": "any"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy, on by default with the datacenter group, which Mercari accepts. Keep the default; residential proxy is not needed.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}