Outpost.be Scraper — TCG Card Prices & Stock
Pricing
from $1.80 / 1,000 products
Outpost.be Scraper — TCG Card Prices & Stock
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.
Pricing
from $1.80 / 1,000 products
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share

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
{"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:
{"catalogs": ["pokemon"],"maxCollectionsPerCatalog": 3,"languages": ["English"],"inStockOnly": true,"maxItems": 500}
Every Magic card from one set, with full card text:
{"catalogs": ["magic"],"collectionFilter": ["Edge of Eternities"],"maxCollectionsPerCatalog": 0,"fetchDetails": true,"maxItems": 0}
Search for high-value Charizard cards:
{"searchQueries": ["charizard"],"minPrice": 50,"maxItems": 100}
Scrape specific shop pages:
{"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):
{"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 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