{
  "openapi": "3.0.1",
  "info": {
    "title": "Mercari Japan Scraper & New Listing Monitor - Prices in JPY",
    "description": "For resellers, sourcing and price research: Mercari Japan listings by keyword or search URL, newest first, with title, price in JPY as a number, on sale or sold, condition, brand, photo, link and listing time. Search sold items to see what things sold for. Monitoring returns only new listings.",
    "version": "0.1",
    "x-build-id": "UMzl1N2td8I8odbjh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~mercari-japan-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-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/neverempty~mercari-japan-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-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/neverempty~mercari-japan-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-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": "Search keywords",
            "type": "array",
            "description": "One search per line, e.g. ポケモンカード or nintendo switch. Japanese keywords match the most listings. The filters below (status, condition, price, sort) apply to every keyword. The same keyword twice (ignoring upper/lower case and full-width characters) is searched once. If you leave both this field and Search URLs empty with monitoring off, the example keyword ポケモンカード is searched; with monitoring on, a keyword or URL is required.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Single keyword (optional)",
            "type": "string",
            "description": "One more keyword, in addition to the list above. The field has the same name as in other Mercari scrapers, so an existing input can be pasted as it is."
          },
          "startUrls": {
            "title": "Search URLs (optional)",
            "type": "array",
            "description": "Mercari Japan search result URLs, e.g. https://jp.mercari.com/search?keyword=switch&status=on_sale&price_min=3000. The filters in the URL are used (keyword, exclude_keyword, price_min, price_max, status, item_condition_id, category_id, brand_id, shipping_payer_id, sort, order) and the filters below are not applied to it. A URL with any other filter, and item, profile or category pages, come back as a free row with the reason, because ignoring a filter would return a wider search than the URL shows.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeyword": {
            "title": "Exclude words",
            "type": "string",
            "description": "Listings containing this word are left out by Mercari's own search (for example ジャンク for junk items). Applies to the keywords above."
          },
          "status": {
            "title": "Listing status",
            "uniqueItems": true,
            "type": "array",
            "description": "on_sale = still for sale, trading = bought and being completed, sold_out = sold. Leave the default to get only listings still for sale; choose sold_out to see what things sold for. An empty list returns all statuses.",
            "items": {
              "type": "string",
              "enum": [
                "on_sale",
                "sold_out",
                "trading"
              ],
              "enumTitles": [
                "On sale",
                "Sold out",
                "Trading (sold, not yet completed)"
              ]
            },
            "default": [
              "on_sale"
            ]
          },
          "condition": {
            "title": "Item condition",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only these conditions, as the seller set them. Empty = every condition.",
            "items": {
              "type": "string",
              "enum": [
                "new",
                "like_new",
                "good",
                "fair",
                "poor",
                "bad"
              ],
              "enumTitles": [
                "New, unused (新品、未使用)",
                "Like new (未使用に近い)",
                "No noticeable scratches or stains (目立った傷や汚れなし)",
                "Some scratches or stains (やや傷や汚れあり)",
                "Scratches or stains (傷や汚れあり)",
                "Poor overall condition (全体的に状態が悪い)"
              ]
            }
          },
          "priceMin": {
            "title": "Minimum price (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at or above this many yen. Empty or 0 = no minimum."
          },
          "priceMax": {
            "title": "Maximum price (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at or below this many yen. Empty or 0 = no maximum."
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "created_time",
              "score",
              "price"
            ],
            "type": "string",
            "description": "created_time is Mercari's \"newest first\" order. Mercari also moves a listing up this order when the seller updates it (for example lowers the price), so every row has both createdAt and updatedAt. Monitoring mode always uses newest first.",
            "default": "created_time"
          },
          "order": {
            "title": "Sort direction",
            "enum": [
              "desc",
              "asc"
            ],
            "type": "string",
            "description": "desc = newest or highest price first; asc = oldest or lowest price first.",
            "default": "desc"
          },
          "limit": {
            "title": "Maximum listings per search",
            "minimum": 1,
            "type": "integer",
            "description": "How many listings to return for each keyword or URL (Mercari serves 120 per results page). Up to 10,000 per search; a larger value is read as 10,000. With monitoring on, this limit applies only to the first run of a search; later runs return every new listing they find, reading at most 20 results pages (2,400 listings) per search.",
            "default": 100
          },
          "includeDescription": {
            "title": "Include item descriptions",
            "type": "boolean",
            "description": "Also read the seller's description text for the first listings returned in this run (for example to tell editions, bonus discs or missing parts apart), into the description column. Works for regular Mercari listings and Mercari Shops listings. Each description is one extra request, read one at a time with a pause in between, at no extra charge per row. Off or empty = descriptions are not read."
          },
          "maxDescriptions": {
            "title": "Maximum descriptions per run",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many listings in this run get their description read, counted across all searches, in the order the rows are returned (1 to 50). Rows after that have description null and descriptionStatus over-max-descriptions. Used only when Include item descriptions is on.",
            "default": 10
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only new listings since the last run",
            "type": "boolean",
            "description": "Off = every run returns the current results. On = the Actor remembers, for each search (keyword plus filters), when it last checked and which listings it returned. The first run of a search returns up to the limit (newest first) and remembers the other listings on the results pages it read. Later runs return only listings created since the previous check (with a 15-minute overlap) that were not returned before, reading newest first until a results page is older than that or already seen, at most 20 pages per search. Busy searches read more pages per check (on 2026-09-17, ポケモンカード with no filter changed by about one page every 1.5 minutes). Older listings that a seller edits move up Mercari's order but are not returned again. **In monitoring mode every results page read costs $0.30 per 1,000 pages, whether or not it has new listings**, plus the price of each listing row returned. Example: 5 keywords in one run every 15 minutes, one page each = 14,400 pages a month = $4.32, plus the $0.003 run start fee on each of the 2,880 runs = $8.64. Do not put the same search in two schedules that can run at the same time.",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Forget what was returned for these searches",
            "type": "boolean",
            "description": "Clears what was remembered for the searches in this input only, so this run is a first run for them again. Turn it off again after one run: left on in a schedule, every run is a first run.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}