# Outpost.be Scraper — TCG Card Prices & Stock (`unfenced-group/outpost-be-scraper`) Actor

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.

- **URL**: https://apify.com/unfenced-group/outpost-be-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Outpost.be Scraper — TCG Card Prices & Stock

![Outpost.be Scraper](https://api.apify.com/v2/key-value-stores/VS3DOyNFet9U7pDuP/records/banner.png)

Extract trading card, sealed product and board game listings from outpost.be, the webshop of the Belgian Outpost game centers, with the price and stock of every card condition. Covers Magic: The Gathering, Pokémon, Yu-Gi-Oh!, Riftbound, board games, accessories and roleplaying games. No API key or account required.

***

### Why this scraper?

#### 🃏 Price and stock per condition

Every card comes with its NM/M, EX/GD, SP/P, HP and PR offers: price, stock count and SKU for each, plus flat `priceNM` … `stockPR` columns for spreadsheets.

#### 🗂️ Whole sets in one go

Pick a game and the scraper reads its collections (card sets, sealed product, board game families) newest first, or narrow down with a set name such as "Black Bolt" or "Commander".

#### 🔎 Search, sets or single products

Use the shop's own search, a list of games, or paste any catalog, set, search or product URL.

#### ✨ Rich card data

Set, rarity and rarity code, language, finish (foil, holofoil, reverse holofoil …), MTG colours, Pokémon energy types, unique graded or scanned copies with front and back scan images.

#### 📖 Full product pages on request

Turn on **Fetch product pages** for card text with mana symbols, type line, artist, collector number, Yu-Gi-Oh! level, attribute and ATK/DEF, Pokémon HP and evolution stage, flavour text, release date, image gallery, and for board games the publisher, genre, player count and description.

#### 📈 Price and stock monitoring

Every row is compared with earlier runs: `NEW`, `PRICE_DROP`, `PRICE_INCREASE`, `BACK_IN_STOCK`, `SOLD_OUT`, `STOCK_CHANGE` or `UNCHANGED`, with the previous price and stock. Schedule it with **Only new or changed products** for a daily alert feed.

***

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `catalogs` | array | `[]` | Games to scrape: `magic`, `yugioh`, `pokemon`, `riftbound`, `boardgames`, `accessories`, `roleplaying`, `other`. With no catalog, search or URL, the newest Pokémon sets are used. |
| `maxCollectionsPerCatalog` | integer | `3` | Number of collections (sets) per game, newest first. Collections with no matching products are skipped (up to 4× this number are checked). `0` reads every collection. |
| `collectionFilter` | array | `[]` | Only collections whose name or group contains one of these words, e.g. `"Black Bolt"`, `"Scarlet & Violet"`, `"Booster"`. |
| `searchQueries` | array | `[]` | Terms for the shop search, e.g. `"charizard"`, `"OP12"`. |
| `startUrls` | array | `[]` | Outpost.be catalog, collection, search or product URLs. A product URL always returns the full product-page record and is billed as a product with details. |
| `inStockOnly` | boolean | `false` | Only products with at least one condition in stock. |
| `rarities` | array | `[]` | Only these rarities, by name or code, e.g. `"Mythic"`, `"SIR"`. |
| `languages` | array | `[]` | Only cards in these languages, e.g. `"English"`, `"Japanese"`. |
| `minPrice` | integer | (empty) | Minimum lowest price in EUR. |
| `maxPrice` | integer | (empty) | Maximum lowest price in EUR. |
| `fetchDetails` | boolean | `false` | Also read each product page (slower, billed as a product with details). |
| `onlyChanges` | boolean | `false` | Only return new products and products whose price or stock changed since earlier runs. |
| `maxItems` | integer | `50` | Maximum number of products. `0` means no limit. |

***

### Output schema

Every field is present on every record. Values the shop does not publish for a product are `null` (or an empty array).

#### Always present

| Field | Type | Description |
|---|---|---|
| `id` | string | Unique product key, `{refType}-{refId}` |
| `refType` | string | Product type in the shop: `magic`, `pokemon`, `ygo`, `boardgames`, `other` … |
| `refId` | string | Product number within its type |
| `url` | string | Product page URL |
| `name` | string | Product or card name |
| `productKind` | string | Listing layout: Magic: The Gathering, Pokémon, Yu-Gi-Oh!, Board game, Accessory / sealed product … |
| `game` | string | Game the card belongs to (null for accessories and other games) |
| `catalogId` | integer | Shop catalog number (null for search and product-page results) |
| `catalogName` | string | Shop catalog name, e.g. "Pokémon" |
| `collectionId` | integer | Collection (set) number |
| `collectionName` | string | Collection name, e.g. "Black Bolt" |
| `collectionGroup` | string | Heading the collection sits under, e.g. "Scarlet & Violet", "Expansions (Foil)" |
| `setName` | string | Set printed on the listing |
| `rarity` | string | Rarity name, e.g. "Mythic", "Special Illustration Rare" |
| `rarityCode` | string | Shop rarity code, e.g. `M`, `SIR` |
| `language` | string | Card language; for sealed product, the language named in the product title (null when the title names none) |
| `finish` | string | Foil, Non-foil, Normal, Holofoil, Reverse Holofoil, Cosmo Holofoil, Shatterfoil … |
| `isFoil` | boolean | True for any foil or holo finish |
| `isUnique` | boolean | True for a one-of-a-kind copy sold with its own scans |
| `colors` | array | Magic colours (White, Blue, Black, Red, Green, Colorless) |
| `energyTypes` | array | Pokémon energy types (Fire, Water …) |
| `imageUrl` | string | Listing thumbnail |
| `imageUrlLarge` | string | Full-size image |
| `extraImageUrls` | array | Additional images (e.g. card back) |
| `scanFrontUrl` | string | Original front scan (unique copies only) |
| `scanBackUrl` | string | Original back scan (unique copies only) |
| `playTime` | string | Board game duration, e.g. "30 minutes" |
| `playersMin` | integer | Board game minimum players |
| `playersMax` | integer | Board game maximum players |
| `minAge` | integer | Board game minimum age |
| `listPrice` | number | Price shown in the listing header (EUR) |
| `price` | number | Near Mint price, or the single price of a sealed product (EUR) |
| `currency` | string | Always `EUR` |
| `offers` | array | One entry per condition: `condition`, `conditionCode`, `conditionName`, `skuId`, `price`, `stock`, `inStock`, `isPreorder`, `availability` |
| `conditionsListed` | array | Conditions with a price |
| `conditionsInStock` | array | Conditions currently in stock |
| `priceNM` / `priceEX` / `priceSP` / `priceHP` / `pricePR` | number | Price per condition (null when not offered) |
| `stockNM` / `stockEX` / `stockSP` / `stockHP` / `stockPR` | integer | Stock per condition |
| `lowestPrice` | number | Lowest listed price over all conditions |
| `highestPrice` | number | Highest listed price over all conditions |
| `lowestPriceInStock` | number | Lowest price of a condition that is in stock |
| `totalStock` | integer | Units in stock over all conditions |
| `inStock` | boolean | At least one condition in stock |
| `isPreorder` | boolean | Sold as a pre-order |
| `availability` | string | `IN_STOCK`, `OUT_OF_STOCK` or `PREORDER` |
| `searchQuery` | string | Search term that found the product (search results only) |
| `sourceUrl` | string | Shop page the product was read from |
| `pageTitle` | string | Title of that page |
| `detailFetched` | boolean | True when the product page was read |
| `changeStatus` | string | `NEW`, `PRICE_DROP`, `PRICE_INCREASE`, `BACK_IN_STOCK`, `SOLD_OUT`, `STOCK_CHANGE`, `UNCHANGED` |
| `firstSeenAt` | string | When this product was first returned by the actor |
| `previousPrice` | number | Price in the previous run (null for new products) |
| `priceChange` | number | Price difference with the previous run |
| `previousTotalStock` | integer | Total stock in the previous run |
| `contentHash` | string | Stable 16-character hash of id and name |
| `source` | string | Always `outpost.be` |
| `scrapedAt` | string | ISO timestamp of extraction |

#### With `fetchDetails: true`

| Field | Type | Description |
|---|---|---|
| `cardName` | string | Name as printed on the product page |
| `typeLine` | string | Card type, e.g. "Land - Planet", "Trainer - Tool" |
| `manaCost` | string | Magic mana cost in `{2}{W}` notation |
| `rulesText` | string | Card text with symbols as `{T}`, `{W}` … |
| `rulesTextHtml` | string | Card text as published (HTML) |
| `flavorText` | string | Flavour text |
| `powerToughness` | string | Power/toughness where published |
| `hitPoints` | integer | Pokémon HP (unique Pokémon copies) |
| `evolution` | string | Pokémon evolution stage (unique Pokémon copies) |
| `level` | integer | Yu-Gi-Oh! monster level / rank |
| `monsterAttribute` | string | Yu-Gi-Oh! attribute (Light, Dark …) |
| `attackDefense` | string | Yu-Gi-Oh! ATK / DEF (or Link rating) |
| `isFirstEdition` | boolean | True for Yu-Gi-Oh! 1st Edition prints (null otherwise) |
| `artist` | string | Card artist |
| `collectorNumber` | string | Collector number |
| `specialProperties` | array | Special printing properties, e.g. "Foil" |
| `releaseDate` | string | Release date, `YYYY-MM-DD` |
| `releaseDateText` | string | Release date as published |
| `skuIds` | array | All SKUs of the product |
| `detailImageUrl` | string | Main product-page image |
| `imageGallery` | array | All product-page images |
| `publisher` | string | Board game publisher |
| `genre` | string | Board game genre |
| `demoAvailable` | boolean | Board game can be demoed in the game centers |
| `descriptionHtml` | string | Product description (HTML) |
| `descriptionText` | string | Product description (plain text) |
| `descriptionMarkdown` | string | Product description (Markdown) |
| `otherAttributes` | object | Any further attribute the product page lists |

#### Example record

```json
{
  "id": "magic-145171",
  "refType": "magic",
  "refId": "145171",
  "url": "https://www.outpost.be/website/index.php?option=com_outpostshop&view=detail&reftype=magic&refid=145171&Itemid=4",
  "name": "All-Fates Scroll",
  "productKind": "Magic: The Gathering",
  "game": "Magic: The Gathering",
  "catalogId": 1,
  "catalogName": "Magic: The Gathering",
  "collectionId": 129604589,
  "collectionName": "Edge of Eternities",
  "collectionGroup": "Expansions",
  "setName": "Edge of Eternities",
  "rarity": "Uncommon",
  "rarityCode": "U",
  "language": "English",
  "finish": "Non-foil",
  "isFoil": false,
  "isUnique": false,
  "colors": [
    "Colorless"
  ],
  "energyTypes": [],
  "imageUrl": "https://central.outpost.be/webo/media/product/product-89078_1_thumb.webp?d=1784035309",
  "imageUrlLarge": "https://central.outpost.be/webo/media/product/product-89078_1.webp?d=1784035309",
  "extraImageUrls": [],
  "scanFrontUrl": null,
  "scanBackUrl": null,
  "playTime": null,
  "playersMin": null,
  "playersMax": null,
  "minAge": null,
  "listPrice": 0.46,
  "currency": "EUR",
  "offers": [
    {
      "condition": "NM/M",
      "conditionCode": "NM",
      "conditionName": "Near Mint / Mint",
      "skuId": "1114034",
      "price": 0.39,
      "stock": 4,
      "inStock": true,
      "isPreorder": false,
      "availability": "IN_STOCK"
    },
    {
      "condition": "EX/GD",
      "conditionCode": "EX",
      "conditionName": "Excellent / Good",
      "skuId": "1114035",
      "price": 0.36,
      "stock": 0,
      "inStock": false,
      "isPreorder": false,
      "availability": "OUT_OF_STOCK"
    },
    {
      "condition": "SP/P",
      "conditionCode": "SP",
      "conditionName": "Slightly Played / Played",
      "skuId": "1114036",
      "price": 0.46,
      "stock": 0,
      "inStock": false,
      "isPreorder": false,
      "availability": "OUT_OF_STOCK"
    },
    {
      "condition": "HP",
      "conditionCode": "HP",
      "conditionName": "Heavily Played",
      "skuId": "1114037",
      "price": 0.4,
      "stock": 0,
      "inStock": false,
      "isPreorder": false,
      "availability": "OUT_OF_STOCK"
    },
    {
      "condition": "PR",
      "conditionCode": "PR",
      "conditionName": "Poor",
      "skuId": "1114038",
      "price": 0.34,
      "stock": 0,
      "inStock": false,
      "isPreorder": false,
      "availability": "OUT_OF_STOCK"
    }
  ],
  "searchQuery": null,
  "sourceUrl": "https://www.outpost.be/website/index.php?option=com_outpostshop&Itemid=4&view=productlist&catalogid=1&collectionid=129604589",
  "pageTitle": "Magic: The Gathering, Edge of Eternities",
  "conditionsListed": [
    "NM/M",
    "EX/GD",
    "SP/P",
    "HP",
    "PR"
  ],
  "conditionsInStock": [
    "NM/M"
  ],
  "totalStock": 4,
  "inStock": true,
  "isPreorder": false,
  "availability": "IN_STOCK",
  "lowestPrice": 0.34,
  "highestPrice": 0.46,
  "lowestPriceInStock": 0.39,
  "priceNM": 0.39,
  "stockNM": 4,
  "priceEX": 0.36,
  "stockEX": 0,
  "priceSP": 0.46,
  "stockSP": 0,
  "priceHP": 0.4,
  "stockHP": 0,
  "pricePR": 0.34,
  "stockPR": 0,
  "price": 0.39,
  "detailFetched": true,
  "manaCost": "{3}",
  "rulesText": "{T}: Add one mana of any color.\n{7}, {T}, Sacrifice this artifact: Draw X cards, where X is the number of differently named lands you control.",
  "rulesTextHtml": "<img src=\"images/referenceimages/icons/magic_tap.png\">: Add one mana of any color.<br> <img src=\"images/referenceimages/icons/magic_7.png\">, <img src=\"images/referenceimages/icons/magic_tap.png\">, Sacrifice this artifact: Draw X cards, where X is the number of differently named lands you control.",
  "cardName": "All-Fates Scroll",
  "typeLine": "Artifact",
  "artist": "Sam Guay",
  "flavorText": "For navigating that which was, is, and will be.",
  "releaseDateText": "1 August 2025",
  "otherAttributes": {},
  "detailImageUrl": "https://central.outpost.be/webo/media/product/product-89078_1.webp?d=1784035309",
  "imageGallery": [
    "https://central.outpost.be/webo/media/product/product-89078_1.webp?d=1784035309"
  ],
  "releaseDate": "2025-08-01",
  "skuIds": [
    "1114034",
    "1114035",
    "1114036",
    "1114037",
    "1114038"
  ],
  "specialProperties": null,
  "collectorNumber": null,
  "powerToughness": null,
  "hitPoints": null,
  "evolution": null,
  "publisher": null,
  "genre": null,
  "demoAvailable": null,
  "descriptionHtml": null,
  "descriptionText": null,
  "descriptionMarkdown": null,
  "contentHash": "9dbb256cdc7152d1",
  "source": "outpost.be",
  "scrapedAt": "2026-09-15T12:52:16.552Z",
  "firstSeenAt": "2026-09-15T12:52:16.552Z",
  "previousPrice": null,
  "priceChange": null,
  "previousTotalStock": null,
  "changeStatus": "NEW",
  "level": null,
  "monsterAttribute": null,
  "attackDefense": null,
  "isFirstEdition": null
}
```

***

### Examples

**Newest Pokémon sets, English cards in stock:**

```json
{
  "catalogs": ["pokemon"],
  "maxCollectionsPerCatalog": 3,
  "languages": ["English"],
  "inStockOnly": true,
  "maxItems": 500
}
```

**Every Magic card from one set, with full card text:**

```json
{
  "catalogs": ["magic"],
  "collectionFilter": ["Edge of Eternities"],
  "maxCollectionsPerCatalog": 0,
  "fetchDetails": true,
  "maxItems": 0
}
```

**Search for high-value Charizard cards:**

```json
{
  "searchQueries": ["charizard"],
  "minPrice": 50,
  "maxItems": 100
}
```

**Scrape specific shop pages:**

```json
{
  "startUrls": [
    { "url": "https://www.outpost.be/website/index.php?option=com_outpostshop&Itemid=4&view=productlist&catalogid=11&collectionid=132965674" },
    { "url": "https://www.outpost.be/website/index.php?option=com_outpostshop&view=detail&reftype=boardgames&refid=9217&Itemid=4" }
  ],
  "maxItems": 0
}
```

**Daily price-drop and restock feed (schedule it):**

```json
{
  "catalogs": ["pokemon", "magic"],
  "maxCollectionsPerCatalog": 10,
  "onlyChanges": true,
  "maxItems": 0
}
```

***

### 💰 Pricing

**$2.00 per 1,000 products.** You only pay for products delivered to your dataset. Failed retries are never charged.

| Products | Cost |
|---|---|
| 100 | ~$0.20 |
| 1,000 | ~$2.00 |
| 10,000 | ~$20.00 |
| 100,000 | ~$200.00 |

With **Fetch product pages** on, each product is billed at **$2.99 per 1,000**.

> Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the product rate to $1.90 (Silver) and $1.80 (Gold, Platinum and Diamond) per 1,000. Use **Max products** to control your spend exactly.

***

### Performance

| Run size | Typical time |
|---|---|
| 50 products (default) | 2–4 minutes |
| One full set (200–1,700 products) | 1–2 minutes |
| A whole game catalog (Magic: ~750 collections) | about 1–1.5 hours; raise the run timeout |
| 1,000 products with product pages | 60–100 minutes |

Whole sets load in one request each, so list-only runs are fast. Product pages are read one by one, about 10–15 per minute; raise the run timeout for large detail runs.

***

### Known limitations

- "Newest" collections are the ones most recently added to the shop, which can include announced sets that list no products yet; those are skipped automatically.
- The same collection can appear under several headings (board games are listed by genre, family and publisher); products are returned once per run.
- Collector number, artist and release date come from the product page, so they need **Fetch product pages**. Not every product page lists every attribute.
- Prices are the shop's own sell prices in EUR; the shop does not publish buy-list prices.
- The shop refuses very broad search terms (for example "dragon") and returns no list; use a more specific term, or the catalogs input with a collection filter.

***

### Technical details

- **Source:** outpost.be — webshop of the Outpost game centers in Antwerp, Ghent and Brussels
- **Coverage:** Magic: The Gathering, Pokémon, Yu-Gi-Oh!, Riftbound, board games, accessories, roleplaying and other games
- **Memory:** 1024 MB
- **Change tracking:** key-value store `outpost-be-scraper-history`, 180-day memory
- **Retry:** automatic retry on network errors with exponential backoff

***

### Rate this actor

If this scraper does its job, a short review on the **Reviews** tab helps other users find it. Something not working? Open an issue on the **Issues** tab instead — issues get fixed.

***

### Need a custom scraper?

**[Unfenced Group](https://www.unfencedgroup.nl)** builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

**Get in touch:** [www.unfencedgroup.nl](https://www.unfencedgroup.nl)

# Actor input Schema

## `catalogs` (type: `array`):

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.

## `maxCollectionsPerCatalog` (type: `integer`):

How many collections (sets) to read per catalog, newest first. Set to 0 for every collection in the catalog. Example: 3.

## `collectionFilter` (type: `array`):

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.

## `searchQueries` (type: `array`):

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.

## `startUrls` (type: `array`):

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

## `inStockOnly` (type: `boolean`):

Skip products with no condition currently in stock. Pre-orders count as not in stock.

## `rarities` (type: `array`):

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.

## `languages` (type: `array`):

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.

## `minPrice` (type: `integer`):

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` (type: `integer`):

Only return products whose lowest listed price is at most this many euros. Example: 100.

## `fetchDetails` (type: `boolean`):

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.

## `onlyChanges` (type: `boolean`):

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.

## `maxItems` (type: `integer`):

Maximum number of products to return. Set to 0 for no limit. Example: 50.

## Actor input object example

```json
{
  "catalogs": [
    "pokemon"
  ],
  "maxCollectionsPerCatalog": 3,
  "collectionFilter": [],
  "searchQueries": [],
  "startUrls": [],
  "inStockOnly": false,
  "rarities": [],
  "languages": [
    "English"
  ],
  "fetchDetails": false,
  "onlyChanges": false,
  "maxItems": 50
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "catalogs": [
        "pokemon"
    ],
    "maxCollectionsPerCatalog": 3,
    "inStockOnly": false,
    "languages": [
        "English"
    ],
    "fetchDetails": false,
    "onlyChanges": false,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/outpost-be-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "catalogs": ["pokemon"],
    "maxCollectionsPerCatalog": 3,
    "inStockOnly": False,
    "languages": ["English"],
    "fetchDetails": False,
    "onlyChanges": False,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/outpost-be-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "catalogs": [
    "pokemon"
  ],
  "maxCollectionsPerCatalog": 3,
  "inStockOnly": false,
  "languages": [
    "English"
  ],
  "fetchDetails": false,
  "onlyChanges": false,
  "maxItems": 50
}' |
apify call unfenced-group/outpost-be-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,unfenced-group/outpost-be-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1GLAk2PgV0paAd5RU/builds/PQpKvTI29N13Yv0Kh/openapi.json
