{
  "openapi": "3.0.1",
  "info": {
    "title": "Diskunion Scraper – Japanese Vinyl, CDs & City Pop",
    "description": "Scrape Japanese vinyl and CDs from Diskunion, Japan's largest specialist record store. Get JPY prices, vinyl condition grades (盤質 S/A/B+/B), formats, catalog numbers and stock for city pop, Japanese jazz and rare pressings. Search by artist in English or Japanese.",
    "version": "0.0",
    "x-build-id": "VI6e9HT7n0wML0dhz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datalab-jp~diskunion-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datalab-jp-diskunion-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/datalab-jp~diskunion-scraper/runs": {
      "post": {
        "operationId": "runs-sync-datalab-jp-diskunion-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/datalab-jp~diskunion-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-datalab-jp-diskunion-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": [
              "artist",
              "genre-new-arrivals"
            ],
            "type": "string",
            "description": "What to crawl: 'artist' looks up one performer's catalogue by name, e.g. 'Mariya Takeuchi'; 'genre-new-arrivals' walks the newest second-hand arrivals in a whole genre, e.g. every new used listing in Japanese music. Must be exactly one of the two enum values below. If omitted, defaults to 'artist'. 'genre-new-arrivals' reads `genre` and ignores `searchKeyword`, `maxArtists` and `catalog` (that feed exists only on the used storefront); 'artist' reads `searchKeyword` and ignores `genre'.",
            "default": "artist"
          },
          "searchKeyword": {
            "title": "Artist name",
            "type": "string",
            "description": "Artist name to look up on Diskunion, e.g. 'Mariya Takeuchi' or '山下達郎'. Romanized English names work as well as Japanese ones because Diskunion stores both spellings in one artist record ('MARIYA TAKEUCHI 竹内まりや'), so international buyers can search without typing Japanese. Diskunion's search matches artists rather than album titles, so pass a performer or band name here — an album title alone usually returns nothing. If omitted, defaults to 'Mariya Takeuchi'; every release found for the matched artists is returned as one row and one billable result, capped by `maxItems`.",
            "default": "Mariya Takeuchi"
          },
          "genre": {
            "title": "Genre (for genre new arrivals)",
            "enum": [
              "jp",
              "showakayou",
              "heiseijpop",
              "jazz",
              "rock",
              "metal",
              "progre",
              "punk",
              "indiealt",
              "clubh",
              "clubt",
              "black",
              "reggae",
              "latin",
              "classic",
              "avant",
              "anisong",
              "gamemusic",
              "movie",
              "bestalbum"
            ],
            "type": "string",
            "description": "Which Diskunion genre feed to walk when `mode` is 'genre-new-arrivals', e.g. 'jp' for Japanese music (city pop, J-pop, Japanese rock) or 'showakayou' for Showa-era kayokyoku. Must be one of the enum values below; anything else fails the run with the list of valid genres. If omitted, defaults to 'jp'. Ignored entirely when `mode` is 'artist'.",
            "default": "jp"
          },
          "catalog": {
            "title": "Catalogue",
            "enum": [
              "both",
              "used",
              "new"
            ],
            "type": "string",
            "description": "Which Diskunion catalogue to crawl: 'used' returns second-hand copies with a vinyl condition grade (盤質 A / B+ / B), 'new' returns the factory-new release catalogue, and 'both' crawls each in turn. Must be exactly one of the three enum values below. If omitted, defaults to 'both'. Choose 'used' for resale and arbitrage research — only used rows carry `conditionGrade` and per-copy pricing, and the same release often appears in both catalogues at very different prices.",
            "default": "both"
          },
          "inStockOnly": {
            "title": "In-stock only",
            "type": "boolean",
            "description": "Set true to drop rows the shop can no longer sell — 売切 (sold out), 廃盤 (out of print) and 新品在庫なし (new, out of stock) — leaving only listings a buyer can actually order. Set false to keep everything, which is what price-history research wants since completed listings still carry price signal. If omitted, defaults to false. Filtering runs after each page is fetched, so a page still costs the same crawl time but yields fewer billable results.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of releases to return, e.g. 50 for a quick check or 500 for a deep sweep. Diskunion serves 50 rows per page and this Actor crawls one page at a time to respect the site's rate limiting, so expect roughly 10-25 seconds per 50 rows — a 1000-item run can take several minutes. Each returned row is one billable result. If omitted, defaults to 100.",
            "default": 100
          },
          "maxArtists": {
            "title": "Max artists to crawl",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many matching artist records to crawl when the keyword is ambiguous, e.g. searching 'Tatsuro Yamashita' matches the solo artist plus collaboration credits. Artists are crawled in the order Diskunion returns them, so the most relevant match is first. If omitted, defaults to 1, which keeps runs fast and focused on the primary artist. Raise it to 3-5 to also capture compilations and split releases that credit the artist.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy used for every request to diskunion.net. Defaults to Apify Proxy with Japan-based residential IPs, e.g. {\"useApifyProxy\": true, \"apifyProxyGroups\": [\"RESIDENTIAL\"], \"apifyProxyCountry\": \"JP\"}. Diskunion is a Japan-only storefront and rate-limits repeated requests from one IP, so residential Japanese addresses give the most reliable results. You can override this with datacenter proxies to cut cost, but expect timeouts on longer runs.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "JP"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}