{
  "openapi": "3.0.1",
  "info": {
    "title": "Cardmarket Repricer - Find Every Mispriced Card You Sell",
    "description": "Your Cardmarket prices were right the day you listed them, and the market has moved since. Feed in your stock export and get back only the cards whose price is now out of line: what you charge, what it is worth today, what to charge, and which rule decided. Reads the official and community exports.",
    "version": "0.1",
    "x-build-id": "hhseLTTIqHWQrsJdC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lowlanddata~cardmarket-repricer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lowlanddata-cardmarket-repricer",
        "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/lowlanddata~cardmarket-repricer/runs": {
      "post": {
        "operationId": "runs-sync-lowlanddata-cardmarket-repricer",
        "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/lowlanddata~cardmarket-repricer/run-sync": {
      "post": {
        "operationId": "run-sync-lowlanddata-cardmarket-repricer",
        "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": {
          "stockCsv": {
            "title": "Your stock file",
            "type": "string",
            "description": "Your stock, exported from Cardmarket. Paste it here: the API's JSON export, or a CSV from a stock exporter. It must carry the idProduct column, which is what each card is priced against."
          },
          "stockUrl": {
            "title": "...or a link to it",
            "type": "string",
            "description": "A direct link to the same file, if you would rather not paste it. Must be reachable without a login."
          },
          "game": {
            "title": "Game",
            "enum": [
              "pokemon",
              "magic",
              "yugioh",
              "lorcana",
              "onepiece",
              "digimon",
              "fleshandblood",
              "starwarsunlimited",
              "dragonballsuper",
              "finalfantasy",
              "weissschwarz",
              "cardfightvanguard",
              "battlespiritssaga",
              "riftbound",
              "forceofwill",
              "starwarsdestiny",
              "mylittlepony",
              "worldofwarcraft",
              "thespoils",
              "dragoborne",
              "cyberpunk"
            ],
            "type": "string",
            "description": "Which game your stock is in. The price guide for it is loaded once per run.",
            "default": "pokemon"
          },
          "reference": {
            "title": "Price to aim at",
            "enum": [
              "trend",
              "avg7",
              "avg30",
              "low"
            ],
            "type": "string",
            "description": "Cardmarket's own figure your prices are set against.",
            "default": "trend"
          },
          "undercutPct": {
            "title": "Undercut by (%)",
            "minimum": 0,
            "maximum": 90,
            "type": "integer",
            "description": "Sit this far below the reference price.",
            "default": 5
          },
          "undercutCents": {
            "title": "...and by (cents)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "A flat amount taken off as well, if you price that way.",
            "default": 0
          },
          "floorPct": {
            "title": "Never below (% of reference)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "A hard floor. A thin market or an odd guide entry cannot drag a card below this.",
            "default": 60
          },
          "minPriceEur": {
            "title": "Never below (EUR)",
            "type": "string",
            "description": "Absolute minimum price for any card.",
            "default": "0.02"
          },
          "maxChangePct": {
            "title": "Never move more than (%) in one run",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Caps how far a single run can move any price. 0 turns the cap off.",
            "default": 25
          },
          "roundToCents": {
            "title": "Round to (cents)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "1 for exact cents, 5 to land on 0.05, 10 on 0.10.",
            "default": 1
          },
          "conditionMultipliers": {
            "title": "Condition ladder",
            "type": "object",
            "description": "Cardmarket publishes one price per card, not one per condition, so the ladder is yours. Defaults: MT 1.05, NM 1, EX 0.9, GD 0.8, LP 0.7, PL 0.6, PO 0.5."
          },
          "onlyChanged": {
            "title": "Only return cards whose price should move",
            "type": "boolean",
            "description": "On by default, so you pay for decisions rather than for a copy of your stock.",
            "default": true
          },
          "maxItems": {
            "title": "Max rows",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Stop after this many rows.",
            "default": 5000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}