# Whatnot Scraper - Listings, Live Shows, Sellers & Reviews (`kalilfagundes.w/whatnot-scraper`) Actor

\[Limited Launch Offer $2.50/1K] Whatnot API for listings and auctions (prices, current bid, bids), live shows with viewers, seller profiles, shops and buyer reviews. Search or paste links. No login.

- **URL**: https://apify.com/kalilfagundes.w/whatnot-scraper.md
- **Developed by:** [Scrape With Me](https://apify.com/kalilfagundes.w) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.13 / 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 - Listings, Live Shows, Sellers & Reviews

Scrape **Whatnot** (whatnot.com), the live shopping marketplace for trading cards, collectibles, sneakers and more. Search **listings** (auction and buy it now: price, current bid, bid count, quantity, seller rating), find **live shows** (live now and upcoming, with viewer counts, categories and tags), and pull **seller profiles** (followers, items sold, rating breakdown), their **shops** and **buyer reviews**, or the items in any live show. Search by keyword, by seller, or paste whatnot.com links. No login, no browser, no API key.

### Whatnot listings and auction prices (current bid, bids, buy it now)

- **Listings search**: any keyword ("charizard", "funko pop", "jordan 1"), filtered by auction / buy it now, price range, sorted by best match, newest or price.

### Whatnot live shows: live now and upcoming, with viewers

- **Live shows**: shows matching a keyword, or every live and upcoming show of a category link (e.g. Pokemon cards), with viewers and saves.

### Whatnot sellers, shops and buyer reviews

- **Sellers**: profile, followers, items sold, overall / shipping / packaging / accuracy rating, review count, upcoming shows; plus their shop listings, buyer reviews and shows.
- **Links**: listing, live show (the show plus the auctions and items in its shop), seller and category links.

### Use cases

- Price research for trading cards and collectibles: what sellers ask and what auctions start at
- Seller and competitor research: who sells what, how big they are, how buyers rate them
- Live shopping analytics: which categories and shows draw viewers
- Lead lists of Whatnot sellers in a niche

### Input example

```json
{
  "searchQueries": ["charizard", "funko pop"],
  "searchType": "both",
  "buyingFormat": "auction",
  "minPrice": 10,
  "sellers": ["https://www.whatnot.com/user/legacy_auction_house"],
  "includeSellerReviews": true,
  "maxItemsPerSource": 100
}
```

### Output example

Real rows from test runs (one per type: listing, live show, seller, review). Every row has `type`, `url`, `source` and `scrapedAt`:

```json
[
  {
    "type": "listing",
    "listingId": "2412264738",
    "title": "Charizard V swsh260 promo",
    "subtitle": "Near Mint ∙ Card",
    "description": "Charizard V swsh260 promo nm",
    "status": "active",
    "buyingFormat": "buy_it_now",
    "price": 45,
    "compareAtPrice": null,
    "priceRange": null,
    "currency": "USD",
    "currentBid": null,
    "bidCount": null,
    "quantity": 1,
    "bookmarkCount": null,
    "image": "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZ...",
    "isLive": false,
    "isPendingPayment": false,
    "shippingDetails": null,
    "labels": [],
    "variants": [],
    "sale": null,
    "upcomingSale": null,
    "break": null,
    "createdAt": "2026-10-09T02:22:53Z",
    "updatedAt": "2026-10-09T02:22:54Z",
    "images": [
      "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZ..."
    ],
    "sellerUsername": "piff7",
    "sellerRating": 5,
    "sellerReviewCount": 918,
    "sellerUrl": "https://www.whatnot.com/user/piff7",
    "livestreamId": null,
    "livestreamUrl": null,
    "url": "https://www.whatnot.com/listing/TGlzdGluZ05vZGU6MjQxMjI2NDczOA==",
    "source": "search listings: charizard",
    "scrapedAt": "2026-10-13T21:53:40Z"
  },
  {
    "type": "livestream",
    "livestreamId": "402bd8d8-c31c-42e1-aafd-0566e733365c",
    "title": "Pokémon Singles + Sealed Lots — Surprise Set",
    "status": "live",
    "isLive": true,
    "viewerCount": 1,
    "savedCount": 0,
    "thumbnail": "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZ...",
    "trailer": null,
    "trailerThumbnail": null,
    "language": {
      "code": "en",
      "name": "English"
    },
    "shipsFromCountry": "US",
    "hasFreeShipping": null,
    "maxShippingCost": null,
    "isExplicit": false,
    "isHidden": false,
    "labels": [],
    "categories": [
      "Pokémon Cards"
    ],
    "productCategories": [
      {
        "id": 2,
        "slug": "pokemon_cards",
        "name": "Pokémon Cards",
        "link": "https://www.whatnot.com/tag/pokemon_cards"
      }
    ],
    "tags": [
      "Slabs",
      "Charizard",
      "Pikachu"
    ],
    "startsAt": "2026-10-13T19:12:03Z",
    "endedAt": null,
    "sellerUsername": "thesimplemerchant",
    "sellerRating": 4.9,
    "sellerUrl": "https://www.whatnot.com/user/thesimplemerchant",
    "url": "https://www.whatnot.com/live/402bd8d8-c31c-42e1-aafd-0566e733365c",
    "source": "search shows: charizard",
    "scrapedAt": "2026-10-13T21:53:40Z"
  },
  {
    "type": "seller",
    "sellerId": "4467180",
    "username": "legacy_auction_house",
    "displayName": "Legacy Auction House",
    "bio": "The Legacy Auction House Brand specializes in selling over 75,000 slabs a month along with an incredible selection of se...",
    "profileImage": "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZ...",
    "storeImage": "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZ...",
    "shipsFromCountry": "US",
    "averageShipDays": 0,
    "followerCount": 440993,
    "followingCount": 5,
    "soldCount": 1024221,
    "livestreamCount": 203,
    "clipCount": null,
    "isLive": true,
    "isVerified": false,
    "isPremierShop": false,
    "isOnVacation": false,
    "canGoLive": true,
    "badges": [],
    "joinedAt": "2022-11-21T19:56:32Z",
    "rating": 4.9,
    "shippingRating": 4.9,
    "packagingRating": 4.9,
    "accuracyRating": 4.9,
    "reviewCount": 148015,
    "upcomingShows": [
      "https://www.whatnot.com/live/227d3be9-8796-44da-885d-ad8913d43ba1",
      "https://www.whatnot.com/live/d7a37adf-7ef3-42a6-9c8a-14ba45194098"
    ],
    "url": "https://www.whatnot.com/user/legacy_auction_house",
    "source": "seller: legacy_auction_house",
    "scrapedAt": "2026-10-13T21:54:51Z"
  },
  {
    "type": "review",
    "reviewId": "501280858",
    "sellerUsername": "legacy_auction_house",
    "rating": 5.0,
    "text": "Thank you everything’s perfect and the king real fast",
    "sellerResponse": null,
    "shippingRating": 5,
    "packagingRating": 5,
    "accuracyRating": 5,
    "shippingComment": null,
    "packagingComment": null,
    "accuracyComment": null,
    "reviewerUsername": "flip0521",
    "reviewedAt": "2026-10-13T21:45:59Z",
    "url": "https://www.whatnot.com/user/legacy_auction_house/reviews",
    "source": "seller reviews: legacy_auction_house",
    "scrapedAt": "2026-10-13T21:49:47Z"
  }
]
```

### Use it as a Whatnot API (schedule, webhooks, Google Sheets)

Install `apify-client`, set `APIFY_TOKEN` in your environment, and run this Python example. It searches public listings and shows, then reads the resulting dataset:

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("kalilfagundes.w/whatnot-scraper").call(
    run_input={
        "searchQueries": ["charizard"],
        "searchType": "both",
        "maxItemsPerSource": 10,
        "maxItems": 30,
    }
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### Run it on a schedule and connect your data

Save your input as an Apify task and attach a schedule. Start with a daily collection of listings or seller profiles; use an hourly collection of show metadata when you need more frequent observations. Each run collects the selected sources again and can incur charges up to your limits. Set `maxItemsPerSource`, `maxItems` and a maximum cost per run before enabling a schedule.

Export each dataset as CSV or Excel, or configure an Apify integration with Google Sheets or Make. A run-success webhook can notify your own service, which can read the dataset using its ID. These connections require setup; the actor itself returns rows. Keep `scrapedAt` and the item or seller ID when comparing observations in your spreadsheet or database. Listing prices and current bids are snapshots, not completed-sale prices or built-in price history.

### Related actors

- [Resale Sold Comps Scraper](https://apify.com/kalilfagundes.w/resale-sold-comps-scraper) collects resale marketplace data for comparable-sales research outside Whatnot.
- [Amazon Product Scraper](https://apify.com/kalilfagundes.w/amazon-product-scraper) collects Amazon product and search data for retail comparisons.
- [Walmart Scraper](https://apify.com/kalilfagundes.w/walmart-scraper) collects Walmart search listings for assortment and price research.

### Pricing

Pay per row saved (listing, live show, seller or review; see the **Pricing** tab) plus a small start fee per run. Use `maxItemsPerSource`, `maxItems` or the run's maximum cost to cap spending.

### Notes and limitations

- Only public data: sold items of a past show, follower lists and anything behind a Whatnot login are not available.
- Whatnot returns up to about 10,000 results per search; split very broad searches by keyword or price range.
- Prices are in the listing's currency (USD, GBP, EUR, CAD ...).

Questions or a missing field? Open an issue on the actor page, we usually answer within a day.

# Actor input Schema

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

Keywords as typed in the Whatnot search box ("charizard", "funko pop").

## `searchType` (type: `string`):

What the search queries return.

## `sellers` (type: `array`):

Usernames or profile links (https://www.whatnot.com/user/<name>): one seller row each, plus their shop, reviews and shows (options below).

## `startUrls` (type: `array`):

Listing (/listing/...), live show (/live/...: the show and the items in its shop), seller (/user/...) or category (/tag/..., /category/...: its live and upcoming shows) links.

## `buyingFormat` (type: `string`):

For listing searches and seller shops.

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

In the listing currency.

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

In the listing currency.

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

Order of listing results.

## `liveStatus` (type: `string`):

For show searches and category links.

## `includeSellerListings` (type: `boolean`):

Items in each seller's shop.

## `includeSellerReviews` (type: `boolean`):

Buyer reviews with shipping / packaging / accuracy ratings, newest first.

## `includeSellerShows` (type: `boolean`):

The seller's live and scheduled shows.

## `includeShowItems` (type: `boolean`):

For /live/ links: also the auctions and buy-it-now items in the show's shop.

## `maxItemsPerSource` (type: `integer`):

Per search query, per seller shop / reviews / shows, per link. 0 = all (Whatnot serves up to ~10,000 results per search).

## `maxItems` (type: `integer`):

Stop after this many rows in the whole run. 0 = no limit.

## `proxyConfiguration` (type: `object`):

Requests go direct; the proxy is used only if Whatnot refuses them.

## Actor input object example

```json
{
  "searchQueries": [
    "charizard"
  ],
  "searchType": "listings",
  "buyingFormat": "any",
  "sort": "best_match",
  "liveStatus": "all",
  "includeSellerListings": true,
  "includeSellerReviews": false,
  "includeSellerShows": false,
  "includeShowItems": true,
  "maxItemsPerSource": 20,
  "maxItems": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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"
    ],
    "maxItemsPerSource": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kalilfagundes.w/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"],
    "maxItemsPerSource": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("kalilfagundes.w/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"
  ],
  "maxItemsPerSource": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call kalilfagundes.w/whatnot-scraper --silent --output-dataset

```

## MCP server setup

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