
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Scrape Fanatics Collect (formerly PWCC) lots from the Weekly and Premier auctions, the Buy Now marketplace and the sold archive: prices, bids, grader and grade, certification numbers, watchers, images and sale dates.
Scrape lots from Fanatics Collect (formerly PWCC Marketplace): the live Weekly Auction, the Premier Auction, the Buy Now fixed-price marketplace and the sold archive of past auctions. Every lot comes with its current bid, bid count, final sale price, buyer's premium, grader and grade, certification number, watchers, images and auction dates. No login, no browser, and you pay only for the lots you save.
lot_id is identical across runs, so you can track the same lot from listing to sale.Charizard 201/165 or Shohei Ohtani rookie) and set Filters such as subcategory, grader or minimum grade.| Field | What it does |
|---|---|
mode | weekly_auction, premier_auction, fixed_price (Buy Now), past_auctions (sold archive) or lot |
keyword | Free-text search; if the exact wording finds nothing, the closest shorter search is used |
lotUrls | Links to single lots (weekly, premier or buy-now pages); when given, exactly these lots are scraped |
maxItems | How many lots to save (default 20, 0 = all) |
sortBy | Recommended, Recently added, Lot number, Best deals, Best value, price, card year or sale date |
categories / subcategories | e.g. Trading Card Games / Pokemon, One Piece, Basketball |
graders, minGrade, maxGrade | e.g. PSA, BGS, Ungraded; grade 9 to 10 |
minPrice, maxPrice | Current bid, hammer price or Buy Now price, in USD |
minYear, maxYear | Card or item year |
soldFrom, soldTo | Past auctions only: 2026-01-01 or a relative period like 30 days |
Example: the latest 500 PSA 10 Pokémon sales of the last 30 days.
{
"mode": "past_auctions",
"subcategories": ["Pokemon"],
"graders": ["PSA"],
"minGrade": 10,
"soldFrom": "30 days",
"sortBy": "sold_newest",
"maxItems": 500
}
One row per lot. The main fields:
| Field | Description |
|---|---|
lot_id, lot_number, lot_url | Stable lot ID, display lot number, link |
auction_type, auction_name, auction_start_date, auction_end_date | WEEKLY, PREMIER or FIXED, and the auction it belongs to |
title, player_or_subject, year, card_number | What the lot is |
grader, grade, grade_numeric, certification_number | Grading details |
current_bid, bid_count, opening_bid, watchers_count | Live auction activity |
final_sale_price, final_price_with_premium, buyers_premium_pct, sold_at | Sale result (sold lots) |
buy_now_price, allows_offers, seller_name | Buy Now listings |
estimated_value | The site's estimated market value |
category, subcategory, sport, teams | Classification |
serial_number, print_run, autograph, memorabilia | Read from the title (e.g. 12/99, AUTO, patch) |
image_url, image_urls | Lot images |
matched_keyword | The keyword actually searched |
A sold lot from a test run (image links shortened):
{
"lot_id": "9c5d3e7e-bd11-11f1-89fc-0afff7de9785",
"lot_number": "20363",
"lot_url": "https://www.fanaticscollect.com/weekly/9c5d3e7e-bd11-11f1-89fc-0afff7de9785/2016-pokemon-xy-generations-radiant-collection-holo-charizard-rc5-psa-10-gem-mint",
"auction_type": "WEEKLY",
"auction_name": "Weekly Sunday Auction #248",
"auction_end_date": "2026-10-19T02:00:00.000Z",
"title": "2016 Pokemon XY Generations Radiant Collection Holo Charizard #RC5 PSA 10 GEM MINT",
"player_or_subject": "Charizard",
"year": 2016,
"card_number": "RC5",
"grader": "PSA",
"grade": "10",
"grade_numeric": 10,
"certification_number": "63426726",
"listing_status": "sold",
"current_bid": 1900,
"bid_count": 37,
"opening_bid": 5,
"final_sale_price": 2280,
"estimated_value": 2500,
"currency": "USD",
"sold_at": "2026-10-19T03:37:09.000Z",
"watchers_count": 35,
"image_url": "https://dilxwvfkfup17.cloudfront.net/...",
"category": "Trading Card Games",
"subcategory": "Pokémon",
"consignor_id": "dc961d16-a87e-11ef-9f4e-0a58a9feac02",
"matched_keyword": "Charizard",
"buyers_premium_pct": 20.0,
"final_price_with_premium": 2280,
"premium_source": "derived_purchasePrice_vs_currentBid"
}
The run summary (matching lots, saved lots, the keyword used, lots not found) is saved in the key-value store as OUTPUT.
You pay $1.50 per 1,000 lots saved ($0.0015 per lot), with no start fee. Platform usage (compute and proxy) comes on top and is very small for this actor, because it reads compact search results without a browser.
Set a maximum charge for the run and the scraper stops cleanly when it is reached, keeping every lot paid for.
Is it legal to scrape Fanatics Collect? The scraper reads public lot pages and search results that anyone can see without an account. Check the site's terms and your local rules for how you use the data.
Do I need a login or proxy? No login. The default datacenter proxy works well; you can switch to your own proxies in the Proxy section.
How many lots can I get? As many as match. Max lots 0 saves every match: the live Weekly Auction alone holds tens of thousands of lots, and the sold archive millions, so use filters for the archive.
Why is a field empty? Fields are filled when the site has them. Buy Now listings have no bids or auction dates, raw cards have no grader or certificate, and the buyer's premium is only known for sold auction lots.
Can I track one lot over time?
Yes. Put its link in Lot URLs and schedule the run, or join runs on lot_id.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start them through the API and read the dataset as JSON, CSV or Excel.
serial_number, print_run, autograph and memorabilia are read from the lot title, so they depend on how the seller wrote it.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
modeenumOptionaldefault "weekly_auction"What to scrape
Which Fanatics Collect lots to scrape: the live Weekly Auction, the live Premier Auction, the Buy Now (fixed-price) marketplace, the sold archive of past auctions, or single lots from their links (Lot URLs).
keywordstringOptionalKeyword
Optional free-text search, typed the way you would describe the card, e.g. "Charizard 201/165" or "Shohei Ohtani rookie". If the exact wording finds nothing, the closest shorter search is used and shown in matched_keyword.
lotUrlsarrayOptionalLot URLs
Links to single Fanatics Collect lots, one per line (weekly, premier or buy-now lot pages, e.g. https://www.fanaticscollect.com/weekly//). When you add links, exactly those lots are scraped and the mode is ignored.
maxItemsintegerOptionaldefault 20Max lots
How many lots to save. 0 = every lot that matches your search (the live Weekly Auction holds about 60,000 lots; the sold archive millions, so narrow it with filters).
sortByenumOptionaldefault "auto"Sort by
Order of the results, using the site's own sort options. Auto = Recommended for live lots and Latest sale for past auctions.
Narrow the lots. Filters are applied by the site's own search, so only matching lots are fetched and charged.
categoriesarrayOptionalCategories
Top-level categories. Leave empty for all.
subcategoriesarrayOptionalSubcategories
Subcategories such as Pokemon, One Piece, Magic The Gathering, Yu-gi-oh!, Basketball, Baseball, Football, Soccer, Hockey, Wax or Marvel. Case- and accent-insensitive; "Pokemon" matches English, Japanese and other-language Pokémon. An unknown value stops the run and lists the closest matches.
gradersarrayOptionalGraders
Grading companies. Leave empty for all, graded or not.
minGradenumberOptionalMin grade
Only lots graded at or above this grade (e.g. 9).
maxGradenumberOptionalMax grade
Only lots graded at or below this grade.
minPricenumberOptionalMin price (USD)
Only lots at or above this price: the current bid for live auctions, the hammer price for sold lots, the asking price for Buy Now.
maxPricenumberOptionalMax price (USD)
Only lots at or below this price (same price as Min price).
minYearintegerOptionalMin card year
Only cards and items from this year or later.
maxYearintegerOptionalMax card year
Only cards and items from this year or earlier.
soldFromstringOptionalSold from
Past auctions only: lots sold on or after this date. Use a date like 2026-01-31 or a relative period like 30 days.
soldTostringOptionalSold to
Past auctions only: lots sold on or before this date (e.g. 2026-03-31 or 7 days).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxies used to reach the site. Datacenter proxies work well here.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| lot_id | string | Stable lot identifier (the site's listing UUID), identical across runs: use it to join and dedupe. |
| lot_number | string | null | Display lot number from the auction badge (e.g. 13439). Repeats across auctions. |
| lot_url | string | null | Link to the lot page. |
| lot_slug | string | null | URL slug of the lot title. |
| auction_id | string | null | Auction the lot belongs to (empty for Buy Now). |
| auction_type | string | null | WEEKLY, PREMIER or FIXED (Buy Now). |
| auction_name | string | null | e.g. Weekly Sunday Auction #249. |
| auction_start_date | string | null | Auction start time (ISO 8601, UTC). |
| auction_end_date | string | null | Auction end time (ISO 8601, UTC). |
| title | string | null | Lot title. |
| subtitle | string | null | Lot subtitle (eye appeal, certification notes). |
| player_or_subject | string | null | Player, character or subject. |
| year | number | null | Card or item year. |
| card_number | string | null | Card number in its set. |
| serial_number | string | null | Serial numbering from the title (e.g. 12/99). |
| print_run | number | null | Print run from the serial numbering (e.g. 99). |
| grader | string | null | Grading company (PSA, BGS, SGC, CGC, ...). |
| grade | string | null | Grade as shown (e.g. 9, 9.5). |
| grade_numeric | number | null | Grade as a number. |
| certification_number | string | null | Grading certificate number. |
| eye_appeal | string | null | Fanatics Collect eye appeal grade, when given. |
| autograph | boolean | null | True when the title mentions an autograph. |
| memorabilia | boolean | null | True for patch, relic, jersey and other memorabilia lots. |
| listing_status | string | null | active or sold. |
| current_bid | number | null | Current bid; the hammer price on sold auction lots. |
| bid_count | number | null | Number of bids. |
| opening_bid | number | null | Starting bid. |
| final_sale_price | number | null | Price the lot sold for, as shown on the listing. |
| buy_now_price | number | null | Asking price of a Buy Now listing. |
| estimated_value | number | null | The site's estimated market value for the item. |
| currency | string | null | Price currency (USD). |
| sold_at | string | null | Sale time (ISO 8601, UTC). |
| watchers_count | number | null | How many users watch (favorited) the lot. |
| allows_offers | boolean | null | Buy Now listings: the seller accepts offers. |
| ships_internationally | boolean | null | Buy Now listings: international shipping offered. |
| image_url | string | null | Main image. |
| image_urls | string | null | All image links, comma-separated. |
| category | string | null | Top-level category. |
| subcategory | string | null | Subcategory (sport or game). |
| subcategories | array | null | All subcategories of the lot. |
| sport | string | null | Sport, for sports cards. |
| teams | array | null | Teams linked to the card. |
| consignor_id | string | null | Seller (consignor) identifier. |
| seller_name | string | null | Certified seller name (Buy Now listings). |
| matched_keyword | string | null | The keyword actually searched (yours, or the closest shorter search). |
| buyers_premium_pct | number | null | Buyer's premium on sold auction lots, from the hammer price and the price paid. |
| final_price_with_premium | number | null | What the buyer paid including the premium (sold auction lots). |
| premium_source | string | null | How the premium fields were obtained. |
| scraped_at | string | When the lot was scraped (UTC). |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Lot | One Fanatics Collect lot (weekly, premier, Buy Now or sold) saved to the dataset. | $0.0015 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/fanatics-collect-scraper').call({
"mode": "weekly_auction",
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/fanatics-collect-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/fanatics-collect-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.