# Whatnot Scraper for Listings and Live Shows (`cleanscrape/whatnot-scraper`) Actor

Scrape Whatnot listings with prices and seller stats, or live and upcoming shows with viewers, by keyword or category. Card filters (graded, PSA/CGC grade, language, set), 8 marketplaces, only-new monitoring with price drops. No login. $2 per 1,000 listings. Maintained by CleanScrape.

- **URL**: https://apify.com/cleanscrape/whatnot-scraper.md
- **Developed by:** [CleanScrape](https://apify.com/cleanscrape) (community)
- **Categories:** E-commerce, Social media, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 listings

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Whatnot Scraper for Listings and Live Shows

Collect listings and live shows from Whatnot, the live shopping marketplace for trading cards, collectibles, sneakers, fashion and more. Search by keyword, filter like on the website, and get one clean table:

- **Listings:** title, price and currency, Buy It Now or auction, quantity, category, date listed, photo and link.
- **The seller of each listing:** username, items sold on Whatnot, followers, rating and number of reviews.
- **Live and upcoming shows** by keyword or category: title, status, start time, viewers, format (Singles, Breaks, Surprise Sets), tags, ships-from country and seller. Optionally the items for sale in each show, with prices.

Card filters as on Whatnot: graded only, grading service (PSA, CGC, BECKETT, SGC), grade, language, set, condition and product type, plus price range, buy format, seller rating and ships-from country. Eight marketplaces: United States, Canada, United Kingdom, Germany, France, Belgium, Netherlands and Australia. **Only new** monitoring returns listings (or shows) that earlier runs did not save, plus price drops. No login.

**$2 per 1,000 listings or shows, $1 per 1,000 show items** (10 to 20% less on paid Apify plans). No start fee. Results skipped as saved before are not charged. Maintained by CleanScrape.

### Watch the walkthrough

Let's use PSA 10 Charizard cards as an example: 73 listings in 16 seconds with each seller's items sold and rating, what they cost, and the live Pokémon card shows with their viewers. Use your own search for another market.

https://www.youtube.com/watch?v=LdirO9TUpPI

### Quick start

1. Under **Search terms**, type what you are looking for, such as `charizard psa 10` or `vintage levis`.
2. Set filters if you like: price range, buy format, graded, grading service, grade, language…
3. Pick the **Marketplace** and click **Start**. The Listings table shows each item with its price, format and seller.

For shows, set **What to find** to **Live and upcoming shows** and type a keyword or a category, such as `Pokémon Cards`.

Input for the API or a scheduled task:

```json
{
  "searchFor": "listings",
  "searchQueries": ["charizard psa 10", "pikachu cgc 10"],
  "marketplace": "us",
  "sort": "newest",
  "minPrice": 50,
  "maxPrice": 1000,
  "gradedOnly": true,
  "maxResultsPerSearch": 200
}
```

### Choose a ready-to-run example

Each example opens with its input filled in. Change it and run.

| Example | What it does |
| --- | --- |
| [Find PSA 10 Charizard cards for sale on Whatnot](https://apify.com/cleanscrape/whatnot-scraper/examples/psa-10-charizard-cards-whatnot) | Graded PSA 10 Charizard listings on Whatnot with price, Buy It Now or auction, and the seller's items sold and rating. |
| [Get new Pokémon booster box listings on Whatnot](https://apify.com/cleanscrape/whatnot-scraper/examples/new-pokemon-booster-box-listings) | Newest Pokémon booster box listings on Whatnot. Schedule it: each run returns only listings not saved before, plus price drops. |
| [Compare Nike Dunk prices on Whatnot](https://apify.com/cleanscrape/whatnot-scraper/examples/nike-dunk-prices-whatnot) | Buy It Now Nike Dunk listings in Whatnot's Sneakers & Shoes category, lowest price first, with seller stats. |
| [Scrape vintage Levi's listings on Whatnot](https://apify.com/cleanscrape/whatnot-scraper/examples/vintage-levis-whatnot) | Vintage Levi's jeans and jackets for sale on Whatnot, newest first, with price, seller and photo. Good for resale price research. |
| [Check Funko Pop prices on Whatnot](https://apify.com/cleanscrape/whatnot-scraper/examples/funko-pop-prices-whatnot) | Funko Pop listings on Whatnot from sellers rated 4.5 and up, with Buy It Now prices and seller stats. |
| [Scrape Pokémon card listings on Whatnot UK](https://apify.com/cleanscrape/whatnot-scraper/examples/uk-pokemon-card-listings-whatnot) | Pokémon card listings from Whatnot's UK marketplace in GBP, with format, quantity and seller stats. |

### Use it from the API

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("cleanscrape/whatnot-scraper").call(run_input={
    "searchQueries": ["charizard psa 10"],
    "sort": "newest",
    "maxResultsPerSearch": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["price"], item["currency"], item["format"], item["sellerUsername"])

## Shows and show items are in their own datasets:
shows = client.dataset(run["storageIds"]["datasets"]["shows"]).list_items().items
```

### What you get

#### Listings (main table)

| Column | What it is |
| --- | --- |
| `title`, `description`, `url`, `imageUrl` | The listing. |
| `price`, `currency` | Asking price (Buy It Now) or starting price (auction), in the currency the seller lists in (usually their country's). |
| `format` | `buy_it_now`, or `auction` for items sold live in a show (bids are placed live and are not shown to logged-out visitors). |
| `quantity`, `status`, `category`, `createdAt` | Units available, listing status, Whatnot category, when it was listed. |
| `sellerUsername`, `sellerUrl` | Who sells it. |
| `sellerSoldCount`, `sellerFollowers`, `sellerRating`, `sellerReviewCount` | The seller's items sold on Whatnot, followers, rating (0–5) and reviews. |
| `searchQuery`, `filters`, `marketplace` | Which search, filters and marketplace found it. |
| `changeType`, `previousPrice` | With **Only listings or shows not saved before**: `new`, or `price_drop` with the price an earlier run saw. |
| `listingId`, `checkedAt` | Whatnot's id for the listing and when this run read it. |

#### Live shows

`title`, `status` (live or upcoming), `startTime`, `viewers` (when live), `showFormat`, `categories`, `tags`, `shipsFrom`, `sellerUsername`, `showUrl`, `thumbnailUrl`, and the search or category that found it.

#### Show items

The items for sale in a show (lots and Buy It Now): `title`, `price`, `currency`, `format`, `quantity` and the show they belong to. Paste a live-show link to get its items, or set **Items per show** when searching shows.

### Monitoring: only new listings

Turn on **Only listings or shows not saved before**, save the input as a task, and add a schedule (Schedules > Create new). Each run then looks at the first results of every search (up to **Maximum results per search**) and returns only those earlier runs did not save; it is not charged for the rest. Sort by **Newly listed** to be alerted to new listings: the first 100 results then cover the newest 100. With **Include price drops**, listings seen before at a higher price come back too, marked `price_drop` with the old price. Use **Watch name** to keep separate histories.

### What is not available

- **Sold prices and sold history.** Whatnot shows sold items only to logged-in users, and this Actor never logs in. `price` is the asking price, or the starting price for auctions. Live bids are not visible without login either.
- **More than about 1,000 listings per search.** Whatnot stops there. Split a big search into price ranges or add filters to get more.
- Card details as separate columns (grade, set, card number): Whatnot uses them as search filters only, so filter by them; the title usually contains them.

### Marketplaces

Whatnot shows different listings and sellers per country. Pick the marketplace; the Actor reads Whatnot from that country. Each listing keeps the seller's own currency, so a US search can include a few listings from Canadian or Japanese sellers in CAD or JPY. Outside the United States, Whatnot searches every country when results are sorted by newest or price, so sorted searches keep to sellers in the marketplace's country; set **Ships from** to choose other countries. United States uses a datacenter connection; the others use a residential connection in that country, included in the price.

| Marketplace | Main currency | Notes |
| --- | --- | --- |
| United States | USD | Also what Japan, New Zealand and most other countries see. |
| Canada | CAD | |
| United Kingdom | GBP | Also what Ireland, Spain and Italy see. |
| Germany | EUR | Also what Austria sees. |
| France, Belgium, Netherlands | EUR | |
| Australia | AUD | |

### Pricing

Pay per row saved. On the Free plan:

| Event | Price per 1,000 | Bronze | Silver | Gold and above |
| --- | --- | --- | --- | --- |
| Listing or show | $2.00 | $1.80 | $1.70 | $1.60 |
| Show item | $1.00 | $0.90 | $0.85 | $0.80 |

Examples measured on real runs (Free plan prices):

| Run | Rows | Cost |
| --- | --- | --- |
| 100 listings for one search (the default) | 100 listings | $0.20 |
| 1,000 listings, newest first | about 975 listings | $1.95 |
| Live and upcoming shows for a keyword and 2 categories, 10 items each | 600 shows, 465 items | $1.67 |
| Daily "only new" check of one search | only new listings | about $0.10 for 50 new |

No start fee. Listings skipped as saved before, and anything beyond your spending limit, are not charged.

### Speed and settings

About 100 listings take 7 seconds and 1,000 about 50 seconds (measured); 600 shows with their items about 30 seconds. Memory: 512 MB (the default) is plenty. The run stops cleanly before its timeout and keeps everything it saved; set **Maximum cost per run** to cap spending.

### Run report

Each run saves a readable summary (Output tab > Run summary) and the same as JSON (`SUMMARY`): every search, category and link with its outcome, results saved and notes, such as a search with no results or a link that no longer exists.

### Use it from an AI agent

This Actor works as a tool in Claude, Cursor and other AI assistants that support MCP, through Apify's MCP server. Add this server and sign in with your Apify account when asked:

```
https://mcp.apify.com?tools=cleanscrape/whatnot-scraper
```

Then ask in plain words, for example: "Find PSA 10 Charizard cards on Whatnot under $300 and list the cheapest Buy It Now offers." The price per result is the same as in Console.

### Common questions

#### Is there an official Whatnot API?

Whatnot's Seller API is for managing your own products and orders (a developer preview that is not taking new applicants). It does not search other sellers' listings or shows. This Actor reads Whatnot's public pages.

#### Why do I get fewer listings than I asked for?

Whatnot shows about 1,000 listings per search, and fewer for narrow searches and strict filters. To see more, split the search: add a price range, a category or another keyword.

#### Why do many listings cost $1?

Most Whatnot auctions start at $1 (the "$1 Starts" shows), so `price` is the starting bid, not what the item will sell for. To compare real asking prices, set **Buy format** to **Buy It Now**; to skip cheap items, set a **Minimum price**.

The other end has the opposite problem: **Highest price first** starts with placeholder listings priced at $999,999 or similar. Set a **Maximum price** to skip them.

#### Can I get sold prices from Whatnot?

No. Whatnot shows sold items only to logged-in users. The Actor saves asking prices and auction starting prices. Scheduled runs with **Only listings or shows not saved before** and **Include price drops** show how asking prices move over time.

#### How do I get new listings every day?

Turn on **Only listings or shows not saved before**, sort by **Newly listed**, save the input as a task and add a schedule. Each run returns only new listings and price drops.

#### How do I find Whatnot shows in a category?

Set **What to find** to **Live and upcoming shows**, type the category (such as `Sports Cards`) under **Categories**, and choose live, upcoming or both. Sort by **Most viewers** to see the biggest shows first.

#### How do I export Whatnot listings to Excel or CSV?

Open the run's Output or Storage tab and click Export. Pick Excel, CSV or JSON. Shows and show items export from Storage > Dataset.

#### Is it legal to scrape Whatnot?

The Actor reads public listings and shows that anyone can open without an account, at a gentle pace. Check the rules that apply to how you use the data, and Whatnot's terms for your use case.

### More tools from CleanScrape

- [Kick Sponsor Tracker](https://apify.com/cleanscrape/kick-sponsor-tracker): which brands Kick streamers promote, with promo codes, affiliate links and broadcast hours
- [Whatnot Seller Tracker](https://apify.com/cleanscrape/whatnot-seller-tracker): top sellers per category, items sold, sales per day and followers over time
- [TikTok Shop Product Scraper](https://apify.com/cleanscrape/tiktok-shop-product-scraper): US TikTok Shop prices, sellers and ratings
- [Bilibili Scraper](https://apify.com/cleanscrape/bilibili-scraper): Bilibili videos, danmaku, comments and creators
- [App Store & Google Play Reviews Scraper](https://apify.com/cleanscrape/app-store-reviews-scraper): reviews from both app stores in one table
- [Google Trends Scraper API](https://apify.com/cleanscrape/google-trends-scraper): search interest over time, by region, related queries and trending searches
- [Map Your Show Exhibitor Scraper API](https://apify.com/cleanscrape/event-exhibitor-monitor): trade show exhibitor lists and booth changes
- [Shopify Product Reviews Scraper API](https://apify.com/cleanscrape/shopify-reviews-scraper): Judge.me and Okendo reviews from Shopify product links
- [Google News Scraper API](https://apify.com/cleanscrape/google-news-scraper): headlines from Google News and publisher feeds
- [Google Jobs Scraper](https://apify.com/cleanscrape/google-jobs-scraper): job listings with salaries and apply links
- [Pinterest Scraper API](https://apify.com/cleanscrape/pinterest-scraper): pins from searches, boards and profiles
- [Google Hotels Scraper API](https://apify.com/cleanscrape/google-hotels-scraper): hotel prices and booking offers for your dates
- [Threads Scraper API](https://apify.com/cleanscrape/threads-scraper): public Threads posts from accounts or post links
- [Likee Scraper API](https://apify.com/cleanscrape/likee-scraper): Likee videos and comments
- [Tennis Scraper API](https://apify.com/cleanscrape/tennis-match-data): tennis results, statistics, point-by-point and head-to-head

### Support

Questions, a missing field or a search that does not work as expected: open an issue on the Actor's Issues tab or write to contact.cleanscrape@gmail.com.

This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Whatnot.

# Actor input Schema

## `searchFor` (type: `string`):

Listings are items for sale with their asking price and seller. Shows are live streams, now or scheduled.

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

Keywords as you would type them on Whatnot, one per line, such as "charizard psa 10" or "vintage levis". You can also paste a Whatnot search link.

## `categories` (type: `array`):

For listings: limits every search to these categories. For shows: finds the live and upcoming shows of each category. Type a name ("Pokémon Cards", "Sneakers") or paste a category link.

## `urls` (type: `array`):

Listing links (https://www.whatnot.com/listing/…), live-show links (https://www.whatnot.com/live/…, saves the show and its items for sale), search links or category links. For listings, a category link limits every search to that category, like Categories.

## `marketplace` (type: `string`):

Whatnot shows different listings, sellers and currencies per country. Marketplaces other than the United States use a residential connection in that country.

## `maxResultsPerSearch` (type: `integer`):

Listings or shows to save per search, category or link. Whatnot shows about 1,000 listings per search.

## `sort` (type: `string`):

Order of listing results. "Newly listed" suits monitoring for new listings.

## `buyFormat` (type: `string`):

Buy It Now items have a fixed price; auctions are sold live in a show.

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

In the marketplace currency (USD, GBP, EUR, CAD or AUD).

## `maxPrice` (type: `integer`):

In the marketplace currency. Splitting a big search into price ranges also gets past Whatnot's limit of about 1,000 listings per search.

## `gradedOnly` (type: `boolean`):

Only items marked as graded (slabbed) by the seller.

## `gradingServices` (type: `array`):

Such as PSA, CGC, BECKETT, SGC or TAG.

## `grades` (type: `array`):

Such as 10, 9.5, 9 or GEM MT 10.

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

Such as English, Japanese, Korean or Traditional Chinese.

## `sets` (type: `array`):

Card sets, such as "Scarlet & Violet 151" or "Base Set", as Whatnot names them.

## `conditions` (type: `array`):

Such as New, Near Mint, Mint or Light Played.

## `productTypes` (type: `array`):

Such as Card, Booster Pack, Booster Box or Elite Trainer Box.

## `minSellerRating` (type: `string`):

Only sellers with at least this average rating.

## `premierShopOnly` (type: `boolean`):

Only sellers with Whatnot's Premier Shop status.

## `shippedFrom` (type: `array`):

Seller countries as two-letter codes: US, GB, CA, AU, DE, FR, NL, BE, AT, JP. Applies to listings and shows.

## `showStatus` (type: `string`):

Which shows to find when "What to find" is shows.

## `showFormats` (type: `array`):

Breaks, Singles, Surprise Sets, Graded or Auction.

## `showSort` (type: `string`):

Whatnot's recommended order, or the shows with the most viewers first.

## `maxItemsPerShow` (type: `integer`):

Items for sale in each show found (lots and Buy It Now), saved in the Show items table. 0 = none; a pasted live-show link always saves up to 100.

## `onlyNew` (type: `boolean`):

Each run looks at the first results of every search (up to Maximum results per search) and saves only those earlier runs with the same watch name (or the same searches) did not save; the rest are not charged. Sort by Newly listed and schedule the Actor to get alerts of new listings.

## `includePriceDrops` (type: `boolean`):

With "Only new": also saves listings seen before whose price is now lower, with the previous price.

## `watchName` (type: `string`):

Names the monitoring history, for example "PSA 10 Charizard". Leave empty to use one per set of searches.

## Actor input object example

```json
{
  "searchFor": "listings",
  "searchQueries": [
    "charizard psa 10"
  ],
  "marketplace": "us",
  "maxResultsPerSearch": 100,
  "sort": "best",
  "buyFormat": "any",
  "gradedOnly": false,
  "minSellerRating": "any",
  "premierShopOnly": false,
  "showStatus": "both",
  "showSort": "recommended",
  "maxItemsPerShow": 0,
  "onlyNew": false,
  "includePriceDrops": true
}
```

# Actor output Schema

## `listings` (type: `string`):

No description

## `sellers` (type: `string`):

No description

## `shows` (type: `string`):

No description

## `showItems` (type: `string`):

No description

## `report` (type: `string`):

No description

## `summary` (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 = {
    "searchQueries": [
        "charizard psa 10"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cleanscrape/whatnot-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 = { "searchQueries": ["charizard psa 10"] }

# Run the Actor and wait for it to finish
run = client.actor("cleanscrape/whatnot-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 '{
  "searchQueries": [
    "charizard psa 10"
  ]
}' |
apify call cleanscrape/whatnot-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cleanscrape/whatnot-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/ankBMuaHfvQeKNQjp/builds/zQhPomXpunrHVqLrB/openapi.json
