{
  "openapi": "3.0.1",
  "info": {
    "title": "Outpost.be Scraper — TCG Card Prices & Stock",
    "description": "Scrape outpost.be, the Belgian game-center webshop: Magic, Pokémon, Yu-Gi-Oh! and Riftbound singles with price and stock per condition, plus sealed product and board games. Whole sets, search or URLs, optional card details and price-change tracking.",
    "version": "0.0",
    "x-build-id": "PQpKvTI29N13Yv0Kh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unfenced-group~outpost-be-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unfenced-group-outpost-be-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/unfenced-group~outpost-be-scraper/runs": {
      "post": {
        "operationId": "runs-sync-unfenced-group-outpost-be-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/unfenced-group~outpost-be-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-unfenced-group-outpost-be-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": {
          "catalogs": {
            "title": "Games / catalogs",
            "type": "array",
            "description": "Which Outpost webshop catalogs to scrape. Each catalog is scraped collection by collection (one collection is usually one card set), newest first. Example: [\"pokemon\"]. Leave empty when you only use searches or Start URLs.",
            "items": {
              "type": "string",
              "enum": [
                "magic",
                "yugioh",
                "pokemon",
                "riftbound",
                "boardgames",
                "accessories",
                "roleplaying",
                "other"
              ],
              "enumTitles": [
                "Magic: The Gathering",
                "Yu-Gi-Oh!",
                "Pokémon",
                "Riftbound",
                "Board games",
                "Accessories",
                "Roleplaying games",
                "Other games (One Piece, Lorcana, Dragon Ball, Warhammer…)"
              ]
            },
            "default": []
          },
          "maxCollectionsPerCatalog": {
            "title": "Max collections per catalog",
            "minimum": 0,
            "type": "integer",
            "description": "How many collections (sets) to read per catalog, newest first. Set to 0 for every collection in the catalog. Example: 3.",
            "default": 3
          },
          "collectionFilter": {
            "title": "Collection name contains",
            "type": "array",
            "description": "Only read collections whose name or group heading contains one of these words (case-insensitive), for example \"Black Bolt\", \"Scarlet & Violet\", \"Commander\" or \"Booster\". Applied before the collection cap. Leave empty for all collections.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Search terms for the shop's own search box, for example card names (\"Charizard\"), set codes (\"OP12\") or product names (\"Booster Display\"). Each query returns every matching product across all games.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Outpost.be shop pages to scrape directly: a catalog page, a collection (set) page, a search results page or a single product page. Example: https://www.outpost.be/website/index.php?option=com_outpostshop&view=catalog&catalogid=11&Itemid=4",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "inStockOnly": {
            "title": "Only products in stock",
            "type": "boolean",
            "description": "Skip products with no condition currently in stock. Pre-orders count as not in stock.",
            "default": false
          },
          "rarities": {
            "title": "Rarities",
            "type": "array",
            "description": "Only return products with one of these rarities, matched on the full name or the site's code (case-insensitive). Examples: \"Mythic\", \"Rare\", \"Special Illustration Rare\", \"SIR\", \"Secret Rare\". Leave empty for all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "languages": {
            "title": "Card languages",
            "type": "array",
            "description": "Only return cards in these languages, for example \"English\", \"Japanese\", \"French\". Products without a language (board games, accessories) are dropped when this is set. Leave empty for all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return products whose lowest listed price (lowest in-stock price when 'Only products in stock' is on) is at least this many euros. Example: 5."
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return products whose lowest listed price is at most this many euros. Example: 100."
          },
          "fetchDetails": {
            "title": "Fetch product pages",
            "type": "boolean",
            "description": "Also read every product page for card text, mana cost, type line, artist, collector number, release date, full-size image gallery, and for board games the publisher, genre and description. Slower, and billed as a product with details.",
            "default": false
          },
          "onlyChanges": {
            "title": "Only new or changed products",
            "type": "boolean",
            "description": "Return only products that are new since your previous runs, or whose price or stock changed (price drop, price increase, back in stock, sold out). Useful for scheduled monitoring.",
            "default": false
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of products to return. Set to 0 for no limit. Example: 50.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}