{
  "openapi": "3.0.1",
  "info": {
    "title": "Mercari JP $0.8💰 Listings | URLs | Reviews Scraper",
    "description": "From $0.8/1K. Scrape items, sellers, and reviews from Mercari Japan (jp.mercari.com) at scale. Pull listing names, prices, conditions, all photos, shipping details, full seller descriptions, and rich seller profiles. Two input modes: keyword search with nine filters, or pass URLs directly.",
    "version": "1.0",
    "x-build-id": "B7a2WArF8WgUzPLTV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~mercari-jp-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-mercari-jp-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/abotapi~mercari-jp-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-mercari-jp-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/abotapi~mercari-jp-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-mercari-jp-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Search Mode",
            "enum": [
              "search",
              "url",
              "reviews"
            ],
            "type": "string",
            "description": "How to find data to scrape. 'search' and 'url' return items; 'reviews' returns one row per review left for the listed seller IDs.",
            "default": "search"
          },
          "queries": {
            "title": "Search Keywords",
            "type": "array",
            "description": "Keywords to search for (Search mode only). Multi-keyword supported. Japanese and English both work. Each keyword runs its own paginated search; results are combined.",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "title": "Item Status",
            "enum": [
              "any",
              "on_sale",
              "sold_out",
              "trading"
            ],
            "type": "string",
            "description": "Listing availability status (Search mode only).",
            "default": "on_sale"
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "score-desc",
              "created-desc",
              "created-asc",
              "price-asc",
              "price-desc",
              "num-likes-desc"
            ],
            "type": "string",
            "description": "Result ordering (Search mode only). Default = relevance score.",
            "default": "score-desc"
          },
          "minPrice": {
            "title": "Min Price (¥)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in JPY. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Max Price (¥)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in JPY. Leave empty for no maximum."
          },
          "itemCondition": {
            "title": "Item Condition",
            "type": "array",
            "description": "Filter by condition (Search mode only). Multiple selectable. 1=New, 2=Like new, 3=No noticeable scratches, 4=Some scratches, 5=Damaged, 6=Poor condition.",
            "items": {
              "type": "string"
            }
          },
          "shippingPayer": {
            "title": "Shipping Paid By",
            "enum": [
              "any",
              "seller",
              "buyer"
            ],
            "type": "string",
            "description": "Who pays shipping (Search mode only).",
            "default": "any"
          },
          "categoryIds": {
            "title": "Category IDs",
            "type": "array",
            "description": "Numeric category IDs (Search mode only). Find IDs by inspecting any Mercari category URL — e.g. category_id=859 = iPhone. Leave empty for all categories.",
            "items": {
              "type": "string"
            }
          },
          "brandIds": {
            "title": "Brand IDs",
            "type": "array",
            "description": "Numeric brand IDs (Search mode only). Found in Mercari URL params as brand_id=...",
            "items": {
              "type": "string"
            }
          },
          "excludeKeyword": {
            "title": "Exclude Keyword",
            "type": "string",
            "description": "Items matching this keyword are filtered out by the upstream search (Search mode only)."
          },
          "urls": {
            "title": "Marketplace URLs",
            "type": "array",
            "description": "Direct Mercari Japan search or category URLs (URL mode only). Multi-URL supported. Filter-mode fields above are ignored. Pagination starts from the URL's page_token and walks forward. /user/profile/<id> and /user/reviews/<id> URLs are also accepted: the actor surfaces every review for that seller.",
            "items": {
              "type": "string"
            }
          },
          "sellerIds": {
            "title": "Seller IDs",
            "type": "array",
            "description": "Numeric seller IDs (Reviews mode only). Multi-seller supported; each seller's reviews are surfaced as separate rows. Find an ID at the end of any /user/profile/<id> or /user/reviews/<id> URL.",
            "items": {
              "type": "string"
            }
          },
          "reviewSubject": {
            "title": "Review Subject",
            "enum": [
              "seller",
              "buyer",
              "both"
            ],
            "type": "string",
            "description": "Whether to fetch reviews left for the user as seller, as buyer, or both (Reviews mode only).",
            "default": "seller"
          },
          "reviewFame": {
            "title": "Review Rating Filter",
            "type": "array",
            "description": "Rating buckets to include (Reviews mode only). 'good' = positive, 'normal' = neutral, 'bad' = negative. Default = all three.",
            "items": {
              "type": "string"
            }
          },
          "maxPages": {
            "title": "Max Pages Per Search",
            "minimum": 0,
            "type": "integer",
            "description": "Optional bound on pages walked per keyword / URL / seller. ~20 listings per page in Search/URL mode; up to 100 reviews per page in Reviews mode. Leave empty to walk every result page."
          },
          "maxListings": {
            "title": "Max Listings (Total)",
            "minimum": 0,
            "type": "integer",
            "description": "Cap across all keywords/URLs/sellers combined. Set 0 for unlimited (capped only by maxPages).",
            "default": 20
          },
          "resumeFromRunId": {
            "title": "Resume from run ID",
            "type": "string",
            "description": "Optional: paste a previous run ID (or dataset ID) from this actor. Rows already collected there are skipped, so this run only returns new ones. Leave empty for a normal run. For recurring daily monitoring of the same search, use Incremental mode below instead."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for daily or recurring monitoring of the same search/URLs. The first run returns all matching items as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED items. Turn on \"Emit unchanged\" or \"Emit expired\" only when you also want those items returned (and billed). State is kept separately per search/URL and filter setup; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from run ID above.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/URL and filter settings — different searches then never mix state with each other."
          },
          "emitUnchanged": {
            "title": "Emit unchanged items (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return items that have not changed since the last run, marked UNCHANGED. This returns — and bills — extra rows you already have, so leave it off unless you specifically want the full snapshot every run.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired items (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return items that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search — not when Max listings/Max pages capped it or when Resume was used. This returns — and bills — extra synthetic rows, so leave it off unless you need expiry tracking.",
            "default": false
          },
          "fetchDetails": {
            "title": "Fetch Item Details",
            "type": "boolean",
            "description": "If true (Search/URL mode only), the actor visits each listing's detail page to enrich the record with full description, all photos, comment count, like count, and seller rating breakdown (good/normal/bad). Adds one request per listing.",
            "default": false
          },
          "proxy": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Apify Proxy default group is sufficient — Mercari Japan accepts requests from any geo. Country pin is optional."
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}