Whatnot Scraper - Live Shows, Lots & Sellers avatar

Whatnot Scraper - Live Shows, Lots & Sellers

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Whatnot Scraper - Live Shows, Lots & Sellers

Whatnot Scraper - Live Shows, Lots & Sellers

Scrape Whatnot live and upcoming shows, queued items and lots, and seller profiles. Search by keyword or URL, then filter by category, format, seller rating, and country. Extract ratings, followers, sold counts, and more.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(1)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

2

Bookmarked

3

Total users

2

Monthly active users

13 hours ago

Last modified

Categories

Share

Whatnot Scraper: Live Shows, Items & Seller Data

Whatnot is the largest live-shopping marketplace for collectibles: trading cards, sports cards, sneakers, comics, coins and toys, sold by sellers running scheduled live shows. This actor turns that into structured data: live shows playing now and scheduled for later, the items and lots sellers have listed (including the ones queued into an upcoming show), and seller profiles with ratings, followers and sold counts. Search by keyword or paste links, filter by category, format and seller quality, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Two ways in. Search by keyword, or paste a show, item, seller, category or search link and it is routed automatically to the right walk.
  • Pre-sale detail on every item. Price, buying format, stock, condition and, for items queued into an upcoming show, the start time of that show, so you know what is coming before it sells.
  • Seller quality on every row. Username, rating, review count, followers, sold count, verified and Premier Shop flags travel with every show and item, not just seller profiles, so you can rank by seller quality without an extra read.
  • The site's own filters, all in one run. Category, show status and format, buying format, condition, graded and autographed only, minimum seller rating, Premier Shop only, seller country and a price range.
  • Filters that actually work. Category handles are checked against the site's live category list before the run starts, and the price range is enforced here because the site's own price filter silently returns items below the floor anyway.
  • Built for monitoring. Incremental mode returns only new and changed results on a recurring schedule, and Resume continues one interrupted run without paying for what it already collected.
  • Honest about a real limit. Realised (sold) prices for finished shows are not published anywhere on the site, so this actor does not invent them, and a run that could not read the site fails loudly instead of returning an empty dataset.

Use Cases

  • Collectors and resellers: track a category or seller for newly scheduled shows, fresh stock and price changes before a show starts.
  • Sourcing and arbitrage: watch Buy It Now listings for a card, shoe or set across many sellers, filtered by condition and price range.
  • Seller research and scouting: rank sellers by rating, followers, items sold and Premier Shop status before deciding who to watch or buy from.
  • Market monitoring: run a scheduled incremental scan of a category to see new supply and pricing show up over time, without re-downloading what you already have.
  • Community and fan tools: build a dashboard of live and upcoming shows in a category with viewer counts, start times and seller info.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
recordType"show" (also "lot", "seller")
title"Sample vintage card break night"
urlWhatnot link to the show, item or seller
status"PLAYING" (also "CREATED")
startTime / endTimeshow start and end time, UTC ISO 8601
activeViewers / watchlistUserslive viewer count and watchlist size (shows)
price / currencylisted price and its currency, in major units (items)
transactionType"BUY_IT_NOW" (also "LIVESTREAM_AUCTION")
currentBid / currentBidCountlive auction state (items)
listingStatus"ACTIVE" (items)
categories / categoryLabelcategory names on a show or item
tagsshow tags, for example "Vintage", "Graded Cards"
scheduledShowStartTimethe start time of the show a lot is queued into
sellerUsername / sellerUrlthe seller behind every show, item and profile
sellerRating / sellerReviewCountseller rating out of 5 and review count
sellerFollowerCount / sellerSoldCountseller audience size and lifetime sales
sellerIsVerified / sellerIsPremierShopverified and Premier Shop flags
changeType / changedFieldsNEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED (incremental mode)
firstSeenAt / lastSeenAtfirst and most recent time this result was seen (incremental mode)
scrapedAtwhen this row was read, UTC ISO 8601

Item and lot records also carry the subtitle, description, quantity, image URLs, break details (format, total spots, spots filled, spots sold), variants and a catalogue product match with its price range. Seller records also carry the display name, bio, following count, average shipping days, store banner, live and can-go-live flags, and, with "Read each seller's full profile" on, their most recent reviews (rating, text, the seller's reply and the date).

How to Use

  1. Pick a mode: search (by keyword) or url (paste links).
  2. In search mode, add one or more keywords and a Result type (live shows, items and lots, sellers, or the platform's mixed feed). In URL mode, paste show, item, seller, category or search links.
  3. Narrow with the filters that apply to your Result type: category, show status and format, buying format, condition, graded or autographed only, minimum seller rating, Premier Shop only, seller country, and a price range.
  4. Set Max results to control run size and cost, then click Start.

Search for items by keyword:

{
"mode": "search",
"queries": ["charizard"],
"resultType": "lots",
"maxItems": 20
}

Every live show in a category right now:

{
"mode": "search",
"resultType": "shows",
"categories": ["pokemon_cards"],
"showStatus": ["PLAYING"],
"maxItems": 20
}

Filtered Buy It Now items in a price range, from well-rated sellers:

{
"mode": "search",
"queries": ["vintage lego"],
"resultType": "lots",
"buyingFormat": ["BUY_IT_NOW"],
"minSellerRating": "4.5",
"minPrice": 10,
"maxPrice": 200,
"maxItems": 50
}

Paste links (category and search):

{
"mode": "url",
"urls": [
"https://www.whatnot.com/tag/pokemon_cards",
"https://www.whatnot.com/search?query=charizard"
]
}

A seller link (whatnot.com/user/<username>) returns that seller's profile plus their scheduled shows and their shop.

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/whatnot-scraper").call(run_input={"mode": "search", "queries": ["charizard"], "resultType": "lots"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["price"], item["currency"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/whatnot-scraper').call({ mode: 'search', queries: ['charizard'], resultType: 'lots' });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Max results and page limits

Max results (maxItems) is the run's overall cap; 0 means no limit. In search mode, each keyword gets its own share of the cap, so one popular keyword cannot swallow the whole run. Max pages per keyword or link (maxPages) bounds how many result pages (24 results each) a single keyword or link is walked before moving on; 0 means no page limit, so the run stops only at Max results or when the site runs out of results.

Resume and recurring updates

  • Resume from a previous run (resumeFromRunId) continues one interrupted run: paste its run or dataset id and this actor skips everything already collected there, so you don't pay twice.
  • Incremental mode (incrementalMode) is for scheduled monitoring of the same search. The first run returns everything as NEW. Later runs return only NEW, UPDATED and REAPPEARED by default, so you catch a newly scheduled show, a show going live, a price change or a fresh lot in a category you watch. Audience counters (viewers, watchlist, followers, sold count, reviews) are deliberately ignored when deciding what changed, because they drift constantly. stateKey names or shares the stored state; leave it empty and the actor derives one from the mode, Result type, keywords, links and filters, so two different searches never mix by default. emitUnchanged and emitExpired also return (and bill) unchanged and expired rows; EXPIRED is only produced once a run has fully scanned the tracked search, never after a capped, resumed or empty run.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

  1. Authorize a connector once under Apify โ†’ Settings โ†’ Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field (mcpConnectors). Notion gets a rich page per result and needs notionParentPageUrl set to the page items should be created under; the other connectors get a best-effort write or digest.
  3. maxNotifyListings caps how many results are written to each connector per run.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave mcpConnectors empty to skip it entirely.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (keyword search) or url (scrape pasted links).
resultTypestringshowsWhat a search (or a pasted search/category link) returns: shows, lots, sellers, or mixed. A pasted show, item or seller link always returns its own kind.
queriesarray["charizard"]Search keywords (search mode). Each keyword gets its own share of Max results.
urlsarraysampleWhatnot links to scrape (url mode): show, item, seller, category or search links.
categoriesarray(none)Only return results in these category handles (prefilled with pokemon_cards in the Console). Checked against the site's live category list at the start of the run.
showStatusarray(none)Only return shows in these states: PLAYING or CREATED. Applies to Result type shows or mixed.
showFormatarray(none)Only return shows run in these formats (auction, breaks, buy it now, graded, singles, surprise sets). Applies to Result type shows or mixed.
buyingFormatarray(none)Only return items sold this way: BUY_IT_NOW or LIVESTREAM_AUCTION. Applies to Result type lots or mixed.
conditionsarray(none)Only return items marked with these free-text conditions, for example "Near Mint" or "Graded".
gradedOnlybooleanfalseOnly return items marked as professionally graded.
autographedOnlybooleanfalseOnly return items marked as autographed.
minSellerRatingstringanyMinimum seller rating: any, 4.0, 4.5, or 5.0.
premierShopOnlybooleanfalseOnly return results from sellers marked as Premier Shops.
sellerCountriesarray(none)Only return results from sellers in these countries.
minPriceinteger(none)Only return items priced at or above this amount. Enforced by this actor on each record's own price.
maxPriceinteger(none)Only return items priced at or below this amount. Enforced by this actor on each record's own price.
sortBystring(none)Ordering asked of the site: recommended, viewers-desc, viewers-asc for shows; best-match, price-asc, price-desc, newest for items and sellers.
fetchSellerDetailsbooleanfalseRead each seller's full public profile and attach it to every result (adds a per-result surcharge; cached within a run).
maxSellerReviewsinteger20How many of each seller's most recent reviews to attach, when fetchSellerDetails is on. 0 attaches none.
maxItemsinteger20Maximum number of results returned across the whole run. 0 for unlimited.
maxPagesinteger0Maximum result pages walked per keyword or link, at 24 results a page. 0 for no page limit.
resumeFromRunIdstring(none)Continue one interrupted run from a previous run or dataset id, without re-collecting what it already gathered.
incrementalModebooleanfalseReturn only new and changed results on scheduled runs against the same search.
stateKeystring(none)Name or share an incremental-mode state. Leave empty to derive one from the search scope.
emitUnchangedbooleanfalseAlso return (and bill) results unchanged since the last run, marked UNCHANGED.
emitExpiredbooleanfalseAlso return (and bill) results no longer found after a complete scan, marked EXPIRED.
proxyobjectApify ProxyConnection settings.
mcpConnectorsarray(none)Optional: send results to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which result pages are created.
maxNotifyListingsinteger50Cap on results written to each connector per run.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"recordType": "show",
"id": "00000000-0000-0000-0000-000000000000",
"showId": "00000000-0000-0000-0000-000000000000",
"url": "https://www.whatnot.com/live/00000000-0000-0000-0000-000000000000",
"title": "Sample vintage card break night",
"description": "Mixed vintage breaks, sample spots to start.",
"status": "PLAYING",
"isLiveNow": true,
"isScheduled": false,
"startTime": "2026-01-01T18:00:00Z",
"endTime": null,
"activeViewers": 250,
"watchlistUsers": 80,
"categories": ["Sample Category"],
"categorySlugs": ["sample_category"],
"tags": ["Sample Tag"],
"isFreeShippingEnabled": true,
"buyerMaxShippingCost": 5.0,
"currency": "USD",
"thumbnailUrl": "https://images.whatnot.com/sample-thumbnail.jpg",
"sellerUsername": "example_seller",
"sellerUrl": "https://www.whatnot.com/user/example_seller",
"sellerRating": 4.8,
"sellerReviewCount": 500,
"sellerFollowerCount": 10000,
"sellerSoldCount": 8000,
"sellerIsVerified": true,
"sellerIsPremierShop": false,
"changeType": "NEW",
"changedFields": [],
"firstSeenAt": "2026-01-01T18:00:00Z",
"lastSeenAt": "2026-01-01T18:00:00Z",
"scrapedAt": "2026-01-01T18:05:00Z"
}

Plan Requirement

The default proxy setting works out of the box. If a run reports that requests were refused, or for large or frequent runs, the residential proxy group gives more headroom; pick it under Connection. Residential and the other non-default options are billed by traffic and cost more, so switch only when you need to.

FAQ

How much does it cost?

You pay per result returned, plus a start charge per run. Reading each seller's full profile is opt-in and adds a small surcharge only on the results that come back carrying those extra fields. The Pricing tab shows the current rates. Use Max results to cap the cost of any run.

This actor collects only publicly available marketplace data. You are responsible for how you use it: follow Whatnot's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution.

Can I get only new or changed results on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared results, and unchanged ones are not billed unless you turn emitUnchanged on.

Why doesn't this actor return sold or final auction prices?

Realised (sold) prices for finished shows are not published by the site: its own show-status filter has no "ended" value, a show carries no connection to what it sold, and a seller's show list returns only future shows. This actor returns the pre-sale picture instead: which shows are running and scheduled, which lots are queued into them, and at what starting price.

Why did my run fail instead of returning an empty dataset?

If the site refuses every request, the run stops with a clear message so "nothing matched" is never confused with "nothing could be read". Run it again in a few minutes, or enable Apify Proxy in the Connection section. If the site changed its data format, the run names that cause directly; no keyword, filter or proxy change will help.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

๐Ÿ”— Want more sports data?

Pair this actor with these related scrapers from the same team:

๐Ÿ‘— StockX Scraper
Scrape StockX market data by keyword, category or URL. Every row carries lowest ask...
๐Ÿท๏ธ Vinted.fr
Scrape Vinted.fr, France's C2C second-hand fashion marketplace: search with...
๐Ÿ‘— KREAM Korea Scraper
Scrape KREAM (kream.co.kr) sneaker and fashion resale data by keyword search, filters...
โšฝ Netshoes Brazil
Scrape sportswear and footwear from netshoes.com.br. Search by keyword with the store's...
โšฝ JioHotstar Scraper
Scrape the JioHotstar catalog by content type or URL. Extract shows, movies, episodes...
๐Ÿ‘— UNIQLO Scraper
Scrape UNIQLO products across 21 country storefronts in local currency. Price with pre...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support & custom scrapers

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.