Whatnot Scraper icon

Whatnot Scraper

Scrape Whatnot live and upcoming shows, queued items and lots, and seller profiles. Search by keyword or URL, then filter by category, format, seller…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Whatnot Scraper at a glance

Whatnot Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes type, image, title, show status and starts / started, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Ecommerce
Pricing
$2.00 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
33 options

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.

What Whatnot Scraper can do

  • 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.

Choose what to collect

These inputs let you configure Whatnot Scraper - Live Shows, Lots & Sellers. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredChoose 'search' for keyword search across live shows, items or sellers, 'url' to scrape pasted links, 'seller' to read sellers by username (profile, scheduled shows and shop items), 'categories' to list the site's categories with their live audience, or 'leaderboard' to rank sellers inside a category.

Choices: search, url, seller, categories, leaderboard

resultTypestringWhat each search returns. 'Live shows' returns shows playing now and shows scheduled for later, with seller, category, tags, start time and audience size. 'Items and lots' returns the individual items sellers have listed, including the ones queued into an upcoming show. 'Sellers' returns seller profiles. 'Mixed' uses the platform's own blended ranking and returns all three kinds in one feed. In URL mode this only decides what a pasted SEARCH link returns; a pasted show, item or seller link always returns its own kind.

Choices: shows, lots, sellers, mixed

queriesarrayOne or more keywords. Examples: 'charizard', 'psa 10 rookie', 'vintage lego', 'jordan 1'. Each keyword gets its own share of Max results, so one popular keyword cannot swallow the whole run.
urlsarrayMix freely: show links (whatnot.com/live/), item links (whatnot.com/listing/), seller links (whatnot.com/user/, which returns the seller plus their scheduled shows and their shop), seller shop links (/user//shop, shop lots only), seller reviews links (/user//reviews, the seller row with reviews attached), category links (whatnot.com/tag/ or the older /category/) or search links (whatnot.com/search?query=..., where type=shows|items|sellers is applied). A locale prefix such as /en-GB/ and the bare whatnot.com host are accepted. Left untouched, this field scrapes one example of each of these link shapes; Max results is shared fairly across the links so each shape is reached.
sellersarrayUsed in 'seller' mode. Whatnot usernames (a leading @ or a pasted profile link is accepted). Each seller returns the profile row, their scheduled shows and their shop items. At least one valid username is required, otherwise the run stops before reading anything; an invalid entry is skipped with a warning.
shopQuerystringUsed with seller links and 'seller' mode. Narrows each seller's shop items to titles matching this text. Leave empty for the whole shop.
categoryViewstringUsed when mode is 'categories'. 'List' returns the site's top-level categories in the site's own order. 'Trending' returns every category that has viewers right now, ranked by live viewer count (Max results caps the rows, 50 when unset). Sub-category trees are not published to anonymous visitors, so only top-level lists and the flat tag ranking are available.

Choices: list, trending

Show 26 more inputs
More input fields
InputWhat it controls
categoriesarrayOnly return results in these categories, given as a category name (for example 'Pokemon Cards') or as the handle in its address, for example 'pokemon_cards' from whatnot.com/tag/pokemon_cards. Try 'sports_cards', 'sneakers_streetwear', 'comics', 'coins_and_money', 'toys' or 'video_games_and_movies'. The list is checked against the site's own category list at the start of the run, so a handle that does not exist stops the run and names the closest matches instead of quietly returning everything.
showStatusarrayOnly return shows in these states. 'Playing now' is a show streaming at this moment; 'Scheduled' is a show announced for later. Applies when Result type is 'Live shows' or 'Mixed'. Note that ENDED shows are not published by the site at all and cannot be returned by any value here.
showFormatarrayOnly return shows the seller runs in these formats. Applies when Result type is 'Live shows' or 'Mixed'.
buyingFormatarrayOnly return items sold this way. 'Buy It Now' is a fixed price; 'Live auction' is a lot that will be auctioned during a show. Applies when Result type is 'Items and lots' or 'Mixed'.
conditionsarrayOnly return items the seller marked with these conditions, for example 'Near Mint', 'Graded', 'Brand New', 'Used' or 'Light Played'. The site publishes a long, category-specific condition vocabulary, so this is free text rather than a fixed list. A value the site does not use returns no results rather than everything.
gradedOnlybooleanOnly return items the seller has marked as professionally graded. Applies when Result type is 'Items and lots' or 'Mixed'.
autographedOnlybooleanOnly return items the seller has marked as autographed. Applies when Result type is 'Items and lots' or 'Mixed'.
minSellerRatingstringOnly return results from sellers rated at or above this score out of 5.

Choices: any, 4.0, 4.5, 5.0

premierShopOnlybooleanOnly return results from sellers the platform has marked as Premier Shops.
sellerCountriesarrayOnly return results from sellers in these countries.
minPriceintegerOnly return items priced at or above this amount, in the currency the item is listed in. Applied by this actor to each record's own reported price, not sent upstream: the site accepts a price filter and then returns items below the floor anyway (measured, in every encoding its own field name suggests), so the bound is kept here where it can actually be honoured. Records with no price of their own, such as seller profiles, are never dropped by a price bound.
maxPriceintegerOnly return items priced at or below this amount, in the currency the item is listed in. Applied by this actor to each record's own reported price, for the same reason as the minimum above.
sortBystringOrdering asked of the site. The valid values differ by Result type, because the site offers different orderings for shows and for items: shows accept 'recommended', 'viewers-desc' and 'viewers-asc'; items and sellers accept 'best-match', 'price-asc', 'price-desc' and 'newest'. A value that does not belong to the current Result type stops the run rather than silently returning the default order.

Choices: recommended, viewers-desc, viewers-asc, best-match, price-asc, price-desc, newest

fetchSellerDetailsbooleanAdds the seller's display name, bio, following count, average shipping days, store banner and, optionally, their recent reviews to every result. Off by default because every result already carries the seller's username, rating, review count, follower count, sold count, verified flag and Premier Shop flag. Profiles are cached within a run, so ten shows from one seller cost one extra request.
maxSellerReviewsintegerHow many of each seller's most recent reviews to attach, when 'Read each seller's full profile' is on. Set 0 to attach none and skip the extra request; this also applies to a pasted /user//reviews link, which then returns the seller row without reviews. Reviews carry the rating, the text, the seller's reply and the date.
maxItemsintegerMaximum number of results returned across the whole run. This is the run's cap. Use 0 for unlimited.
maxPagesintegerMaximum result pages walked per keyword or link, at 24 results a page. 0 means no page limit: the run then stops only at Max results, or when the site runs out of results.
resumeFromRunIdstringPaste a previous run id or dataset id to continue a large crawl without returning, or charging for, results already collected there. Use this after an interrupted run. For recurring daily monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns everything matching as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED results. A result counts as UPDATED when any of its fields changes, for example a show going live or being rescheduled (status, startTime), a price, a listing status, a current bid or bid count, a title or stock quantity. These are deliberately NOT compared, because they drift constantly and would mark every result as changed on every run: viewers watching (including the live viewers and show counts of a category and the viewers of a ranked seller's current show), watchlist counts, the position (rank) of category and leaderboard rows, and the seller's follower, sold, review count and rating figures (they stay in the output). The scrape timestamp is never compared either. Use Ignore fields below to exclude more. State is kept separately for each mode, result type, keyword set, seller list and filter setup, so two different searches never mix; changing Ignore fields keeps your saved state.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key from the mode, result type, keywords, links and filters.
emitUnchangedbooleanOff by default. Turn on to also return results that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return results that were present in a previous run but are no longer found, marked EXPIRED, which is how a show finishing or a lot selling shows up. Only produced once a run has fully scanned the tracked search, never when Max results capped it or Resume was used. This returns, and bills, extra rows.
ignoreFieldsForChangesarrayOptional. Field names to leave out when deciding whether a result changed, in addition to the built-in handling (viewers, watchlist, category audience counts, ranking positions and the seller counters never trigger UPDATED). Use a top-level name such as thumbnailUrl, or a nested path such as sellerReviews[].text or variants.quantity. Ignored fields still appear in the output; they just never make a result UPDATED or show up in changedFields.
mcpConnectorsarrayOptionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API and Integrations, then select it here. Notion gets a rich page per item; other connectors get a best-effort write or digest. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

recordTypeType
thumbnailUrlImage (image)
titleTitle
statusShow status
startTimeStarts / started (datetime)
pricePrice
currencyCurrency
transactionTypeBuying format
activeViewersViewers now
watchlistUsersOn watchlists
categoryLabelCategory
categoriesCategories (array)
Show 70 more fields
tagsTags (array)
sellerUsernameSeller
sellerRatingSeller rating
sellerReviewCountSeller reviews
sellerFollowerCountFollowers
sellerSoldCountItems sold
sellerIsVerifiedVerified (boolean)
sellerIsPremierShopPremier shop (boolean)
sellerUrlSeller link (link)
urlLink (link)
changeTypeChange type (incremental mode)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (datetime)
lastSeenAtLast seen (incremental mode) (datetime)
scrapedAtScraped at (datetime)
showIdShow id
descriptionDescription
isLiveNowLive now (boolean)
isScheduledScheduled (boolean)
endTimeEnded (datetime)
categorySlugsCategory handles (array)
isFreeShippingEnabledFree shipping (boolean)
buyerMaxShippingCostMax shipping paid by buyer
trailerUrlTrailer (link)
isHiddenBySellerHidden by seller (boolean)
lotIdItem id
imageUrlsPhotos (array)
subtitleSubtitle
isAuctionAuction (boolean)
currentBidCurrent bid
currentBidCountBids
listingStatusStatus
quantityQuantity
scheduledShowStartTimeShow starts (datetime)
isLiveSelling now (boolean)
categorySlugCategory handle
productNameCatalogue product
productPriceMinProduct price low
productPriceMaxProduct price high
isBreakBreak (boolean)
breakTitleBreak title
breakFormatBreak format
breakTotalSpotsBreak spots
breakFilledSpotsSpots filled
breakSoldSpotsSpots sold
variantsVariants (array)
shippingDetailsShipping
createdAtListed at (datetime)
updatedAtUpdated at (datetime)
sellerIdSeller id
sellerProfileImageUrlAvatar (image)
sellerDisplayNameDisplay name
sellerBioBio
sellerFollowingCountFollowing
sellerAverageShipDaysAvg ship days
sellerIsLiveLive now (boolean)
sellerCanGoLiveCan go live (boolean)
sellerStoreImageUrlStore banner (image)
sellerReviewsReviews (array)
sellerReviewsReturnedReviews returned
rankRank
categoryViewView
imageUrlImage (image)
labelCategory
categoryNameHandle
viewerCountLive viewers
livestreamCountLive shows
deeplinkSite path
intervalInterval
currentActiveLivestreamStreaming now (object)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "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,
  "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"
}

Ways to use this data

  • 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.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Whatnot Scraper return?

The documented output for Whatnot Scraper includes type, image, title, show status, starts / started, price, currency and buying format. Availability of each field depends on the source page and the selected mode.

How much does Whatnot Scraper cost?

It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

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.

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.

Ready to collect with Whatnot Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.