# Whatnot Seller Scraper (`maximedupre/whatnot`) Actor

Collect public Whatnot listings, live shows, seller profiles, and category insights by keyword, URL, seller username, or category. Get source fields such as prices, ratings, viewer counts, reviews, and source URLs in structured dataset rows.

- **URL**: https://apify.com/maximedupre/whatnot.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** E-commerce, Developer tools
- **Features:** Limited permissions
- **Stats:** 7 total users, 2 monthly users, 86.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 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

### 🛍️ Explore Whatnot marketplace data

For collectors, resellers, marketplace researchers, and developers, this Actor collects public Whatnot listings, live shows, seller profiles, and category insights. It returns structured prices, sale formats, viewer counts, seller signals, reviews, and source URLs, so you can compare marketplace activity without copying pages by hand.

Use it to:

- Compare public listing titles, prices, sellers, and source URLs with **[Whatnot Listings](https://apify.com/maximedupre/whatnot/examples/whatnot-listings)**.
- Check live show titles, statuses, start times, viewer counts, tags, and sellers with **[Whatnot Live Shows](https://apify.com/maximedupre/whatnot/examples/whatnot-live-shows)**.
- Compare public seller profiles, follower counts, sold counts, ratings, and live status with **[Whatnot Sellers](https://apify.com/maximedupre/whatnot/examples/whatnot-sellers)**.
- Collect public buyer ratings, review text, dates, and reviewer identities with **[Whatnot Reviews](https://apify.com/maximedupre/whatnot/examples/whatnot-reviews)**.
- Rank public categories by viewer and livestream counts with **[Whatnot Category Insights](https://apify.com/maximedupre/whatnot/examples/whatnot-category-insights)**.
- Find public trading card listings and related sellers with **[Whatnot Trading Cards](https://apify.com/maximedupre/whatnot/examples/whatnot-trading-cards)**.
- Find public sneaker listings and related sellers with **[Whatnot Sneakers](https://apify.com/maximedupre/whatnot/examples/whatnot-sneakers)**.

#### 📦 Public listings, shows, sellers, and categories

The default dataset has four row shapes. The `recordType` field tells you whether a row is a `listing`, `liveShow`, `sellerProfile`, or `categoryInsight`. Saved rows include a public `sourceUrl` and a `retrievedAt` time. Some fields appear only when the public source provides them.

If the same source item appears again through another keyword, URL, username, ID, or similar submitted value, only the first eligible occurrence is saved. The row reflects that first saved match and does not combine later matches.

#### 🔎 Choose a Whatnot search

Choose a `resultType` and a `findBy` method. You can search by keywords or a public search URL, read supported public direct URLs, find seller profiles by username or source seller ID, or work with a category. Mixed search uses the product, live-show, and seller search surfaces. Fields that do not match your choices are ignored, except keywords can also search seller shops when seller profiles use usernames or direct URLs.

Use one configured search in each run. Seller profiles can include public Whatnot reviews and historical or scheduled shows when you turn on those options. Listings and mixed search can use sale, price, live-only, order, and change-monitoring options. Category insights can use source-supported filters and ordering.

This Actor reads public Whatnot data and does not require a customer-supplied Whatnot login or API key. Public pages can change, disappear, or show fewer fields than expected.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
|---|---|---|
| `resultType` | string | Chooses `listings`, `liveShows`, `sellerProfiles`, `categoryInsights`, or `mixedSearch`. |
| `findBy` | string | Chooses keywords, a search URL, a direct URL, a seller username, or a category. Use the method that matches the result type. |
| `keywords` | array of strings | Supplies one or more search keywords. For seller profiles found by username or direct URL, they form one shop query per seller. Leave them empty to collect all available shop listings. |
| `searchUrls` | array of objects | Supplies one or more public Whatnot search URLs. Each URL uses the selected result type and search surface. |
| `searchUrls[].url` | string | Gives one public Whatnot search URL. |
| `directUrls` | array of objects | Supplies supported public listing, seller, live-show, or category URLs. |
| `directUrls[].url` | string | Gives one supported public Whatnot page URL. |
| `sellerUsernames` | array of strings | Supplies public Whatnot seller usernames or source seller IDs for seller profiles. Both can be used in the same list. |
| `includeReviews` | boolean | For seller profiles, requests public buyer reviews with ratings, text, dates, and reviewer identity. Source-provided review totals are included when available. |
| `includeShowHistory` | boolean | For seller profiles, requests public historical or scheduled shows when available. |
| `category` | string | Supplies one public Whatnot category name or slug for category insights or category-based listings, live shows, or seller results. |
| `categoryFilters` | array of strings | For category insights, supplies filter values supported by the public Whatnot category page. |
| `categoryOrder` | string | For category insights, chooses a source-supported order such as viewer count, livestream count, or name. |
| `leaderboardPeriod` | string | For category insights, chooses the current day, current week, or live leaderboard when available. |
| `saleFormats` | array of strings | For listings and mixed search, keeps only submitted sale formats supported by Whatnot, such as auction or buy now. |
| `minPrice` | number | For listings and mixed search, keeps listings at or above this price. |
| `maxPrice` | number | For listings and mixed search, keeps listings at or below this price. |
| `liveOnly` | boolean | For listings and mixed search, keeps only listings marked live by the source. |
| `listingOrder` | string | For listings and mixed search, chooses a source-supported listing order. |
| `maxItems` | integer | Caps the number of records. Leave it empty to return all available results until the source is exhausted. |
| `monitorChanges` | boolean | For listings and mixed search, compares new public listing observations with prior observations for the same submitted target. |

**Example input**

This example is copied from the public input of a successful current-beta default-input run:

```json
{
  "resultType": "listings",
  "findBy": "keywords",
  "keywords": [
    "trading cards"
  ],
  "includeReviews": false,
  "includeShowHistory": false,
  "liveOnly": false,
  "maxItems": 100,
  "monitorChanges": false
}
```

#### 🧾 Output

**Run output**

| Field | Type | What it does |
|---|---|---|
| `dataset` | string | Opens the accepted public Whatnot records in the default dataset. |

Some values can be absent when Whatnot does not provide them. The tables below list every field in each public dataset shape. Dotted paths show nested objects and array elements.

**Listing record fields**

| Field | Type | What it does |
|---|---|---|
| `recordType` | string | Identifies this row as a listing. |
| `listingId` | string | Gives the stable Whatnot listing identifier. |
| `title` | string | Gives the public listing title. |
| `description` | string | Gives the public listing description. |
| `condition` | string | Gives the condition shown by the seller. |
| `price` | object | Listing asking price and separate catalog prices when supplied by Whatnot. |
| `price.amount` | number | Gives the numeric listing price. |
| `price.currency` | string | Gives the currency code for the listing price. |
| `price.catalog` | object | Linked catalog product and its price range. These are separate from the listing asking price. |
| `price.catalog.productId` | string | Whatnot catalog product ID for joining or checking this product. |
| `price.catalog.name` | string | Catalog product name supplied by Whatnot. |
| `price.catalog.min` | object | Lowest price in the catalog range supplied by Whatnot. |
| `price.catalog.min.amount` | number | Minimum catalog price in currency units. |
| `price.catalog.min.currency` | string | Source currency code for the minimum catalog price. |
| `price.catalog.max` | object | Highest price in the catalog range supplied by Whatnot. |
| `price.catalog.max.amount` | number | Maximum catalog price in currency units. |
| `price.catalog.max.currency` | string | Source currency code for the maximum catalog price. |
| `quantity` | integer | Gives the quantity shown by the source. |
| `availability` | string | Gives the availability state shown by the source. |
| `saleFormat` | string | Gives the sale format shown by the source, such as auction or buy now. |
| `isLive` | boolean | Says whether the source marks the listing as live. |
| `createdAt` | string | Time when the listing was created, as reported by Whatnot. |
| `updatedAt` | string | Time when the listing was last updated, as reported by Whatnot. |
| `offersAvailable` | boolean | Whether Whatnot allows offers on this listing. |
| `images` | array of strings | Lists public image URLs for the listing. |
| `images[]` | string | Gives one listing image URL. |
| `seller` | object | Groups seller details shown with the listing. |
| `seller.username` | string | Gives the seller's public Whatnot username. |
| `seller.displayName` | string | Gives the seller's public display name. |
| `seller.profileUrl` | string | Links to the seller's public profile. |
| `category` | object | Groups category details shown with the listing. |
| `category.name` | string | Gives the public category name. |
| `category.slug` | string | Gives the public category slug when supplied. |
| `category.url` | string | Links to the public category page. |
| `sourceUrl` | string (URI) | Links to the public Whatnot source for the listing. |
| `retrievedAt` | string (date-time) | Gives the time when the Actor retrieved the listing. |

**Listing row example**

This unshortened row is copied from a successful current-beta run:

```json
{
  "recordType": "listing",
  "title": "CSV5C: Dark Crystal Blaze Booster",
  "sourceUrl": "https://www.whatnot.com/search?query=Dark+Crystal+Trading+Cards",
  "retrievedAt": "2026-10-06T02:14:45.406Z",
  "listingId": "TGlzdGluZ05vZGU6MjIyNDg5MTY0NQ==",
  "createdAt": "2026-08-28T08:00:46.000Z",
  "updatedAt": "2026-09-30T20:00:39.000Z",
  "offersAvailable": true,
  "description": "Slim-Display: 15 × Booster, jeweils 5 Karten (mindestens 1 Karte pro Booster ist Rare oder höher)",
  "price": {
    "amount": 3,
    "currency": "EUR",
    "catalog": {
      "productId": "UHJvZHVjdE5vZGU6NTg4MDE5MzAw",
      "name": "CSV5C: Dark Crystal Blaze Booster",
      "min": {
        "amount": 3,
        "currency": "EUR"
      },
      "max": {
        "amount": 3,
        "currency": "EUR"
      }
    }
  },
  "quantity": 6,
  "availability": "ACTIVE",
  "saleFormat": "BUY_IT_NOW",
  "isLive": false,
  "images": [
    "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZXMiLCAia2V5IjogImxpc3RpbmdzLzIyMjQ4OTE2NDUtMC1kZDMzOWFkZS1kMmMwLTRhZjUtYWFhZC02ZTNiYjY1MjEzNGEiLCAiZWRpdHMiOiB7InJlc2l6ZSI6IHsid2lkdGgiOiBudWxsLCAiaGVpZ2h0IjogbnVsbCwgImZpdCI6ICJjb250YWluIiwgImJhY2tncm91bmQiOiB7InIiOiAyNTUsICJnIjogMjU1LCAiYiI6IDI1NSwgImFscGhhIjogMX19fX0=?signature=8169ee98bf44faec1ae96044abac39b52713a777d75ed51ffd32bb58158a7983"
  ],
  "seller": {
    "username": "ollis_tcg_kartenpakete",
    "displayName": "Oliver Zinnitz",
    "profileUrl": "https://www.whatnot.com/user/ollis_tcg_kartenpakete"
  },
  "category": {
    "name": "Trading Card Games",
    "slug": "trading_card_games",
    "url": "https://www.whatnot.com/tag/trading_card_games"
  }
}
```

**Live show record fields**

| Field | Type | What it does |
|---|---|---|
| `recordType` | string | Identifies this row as a live show. |
| `showId` | string | Gives the stable Whatnot show identifier. |
| `title` | string | Gives the public show title. |
| `status` | string | Gives the show status shown by the source, such as live or scheduled. |
| `startTime` | string (date-time) | Gives the public show start time. |
| `currentBid` | number | Highest bid amount in the show's current auction snapshot, in the stated currency. This is not a confirmed sale price. |
| `currency` | string | Currency reported for the highest bid in the show's current auction snapshot. |
| `bidCount` | integer | Number of bids reported for the show's current auction snapshot. |
| `viewerCount` | integer | Gives the viewer count shown by the source. |
| `watchlistCount` | integer | Number of users who saved the show to their watchlist, as reported by Whatnot. |
| `thumbnailUrl` | string (URI) | Links to the public show thumbnail. |
| `tags` | array of strings | Lists public tags shown for the show. |
| `tags[]` | string | Gives one show tag. |
| `category` | object | Groups category details shown for the show. |
| `category.name` | string | Gives the public category name. |
| `category.slug` | string | Gives the public category slug when supplied. |
| `category.url` | string | Links to the public category page. |
| `seller` | object | Groups seller details shown for the show. |
| `seller.username` | string | Gives the seller's public Whatnot username. |
| `seller.displayName` | string | Gives the seller's public display name. |
| `seller.profileUrl` | string | Links to the seller's public profile. |
| `sourceUrl` | string (URI) | Links to the public Whatnot source for the show. |
| `retrievedAt` | string (date-time) | Gives the time when the Actor retrieved the show. |

**Live show row example**

This unshortened row is copied from a successful current-beta run:

```json
{
  "recordType": "liveShow",
  "title": "✨FREE 30TH PACKS✨ Rapid Fire Singles & Packs $1 Starts w/Zachary",
  "status": "PLAYING",
  "sourceUrl": "https://www.whatnot.com/live/01949d38-405e-4c5e-b6aa-0c2deb4dc957",
  "retrievedAt": "2026-10-06T02:13:00.072Z",
  "showId": "01949d38-405e-4c5e-b6aa-0c2deb4dc957",
  "startTime": "2026-10-06T01:00:19.620Z",
  "viewerCount": 254,
  "thumbnailUrl": "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZXMiLCAia2V5IjogImxpdmVzdHJlYW1fdGh1bWJuYWlscy85ZWU0NzE2Yi0zMDUzLTQ0ODktYWRhOC0yNDkyNmJlODAyYTMuanBlZyIsICJlZGl0cyI6IHsicmVzaXplIjogeyJ3aWR0aCI6IDEyMDAsICJoZWlnaHQiOiBudWxsLCAiZml0IjogImNvbnRhaW4iLCAiYmFja2dyb3VuZCI6IHsiciI6IDI1NSwgImciOiAyNTUsICJiIjogMjU1LCAiYWxwaGEiOiAxfX19LCAib3V0cHV0Rm9ybWF0IjogImpwZyJ9?signature=dda6541849e845695bade802cc2e338f7325f867365b90d137cc248f1405ea24",
  "tags": [
    "pokemon",
    "one_dollar_starts",
    "sudden_death",
    "pokemon_singles_2025"
  ],
  "category": {
    "name": "Pokémon Cards"
  },
  "seller": {
    "username": "immaculate",
    "profileUrl": "https://www.whatnot.com/user/immaculate"
  },
  "watchlistCount": 63,
  "currentBid": 1,
  "currency": "USD",
  "bidCount": 1
}
```

**Seller profile record fields**

| Field | Type | What it does |
|---|---|---|
| `recordType` | string | Identifies this row as a seller profile. |
| `sellerId` | string | Gives the stable Whatnot seller identifier. |
| `username` | string | Gives the seller's public Whatnot username. |
| `displayName` | string | Gives the seller's public display name. |
| `biography` | string | Public bio shown on the seller profile. |
| `followingCount` | integer | Number of accounts the seller follows, as shown by Whatnot. |
| `profileImageUrl` | string | Public profile image URL for the seller. |
| `followerCount` | integer | Gives the follower count shown by the source. |
| `soldCount` | integer | Gives the sold-item count shown by the source. |
| `rating` | number | Gives the seller rating shown by the source. |
| `reviewCount` | integer | Gives the public buyer review count shown for the seller. |
| `isVerified` | boolean | Says whether the source marks the seller as verified. |
| `isPremierShop` | boolean | Whether Whatnot marks the seller as a premier shop. |
| `isLive` | boolean | Says whether the source marks the seller as live. |
| `shippingPerformance` | string | Gives shipping performance information shown on the profile. |
| `reviews` | object | Public buyer review rows and their written-review rating distribution. |
| `reviews.items` | array of objects | Public buyer reviews shown for the seller. |
| `reviews.items[].reviewId` | string | Gives the stable review identifier. |
| `reviews.items[].rating` | number or object | Review star rating, with source feedback when available. |
| `reviews.items[].rating.average` | number | Gives the review's average star rating when supplied by the source. |
| `reviews.items[].rating.overall` | object | Overall rating and question label supplied by Whatnot. |
| `reviews.items[].rating.overall.value` | number | Star rating supplied by Whatnot for this feedback. |
| `reviews.items[].rating.overall.label` | string | Question label supplied by Whatnot for this feedback. |
| `reviews.items[].rating.shipping` | object | Shipping rating and question label supplied by Whatnot. |
| `reviews.items[].rating.shipping.value` | number | Star rating supplied by Whatnot for this feedback. |
| `reviews.items[].rating.shipping.label` | string | Question label supplied by Whatnot for this feedback. |
| `reviews.items[].rating.packaging` | object | Packaging rating and question label supplied by Whatnot. |
| `reviews.items[].rating.packaging.value` | number | Star rating supplied by Whatnot for this feedback. |
| `reviews.items[].rating.packaging.label` | string | Question label supplied by Whatnot for this feedback. |
| `reviews.items[].rating.accuracy` | object | Accuracy rating and question label supplied by Whatnot. |
| `reviews.items[].rating.accuracy.value` | number | Star rating supplied by Whatnot for this feedback. |
| `reviews.items[].rating.accuracy.label` | string | Question label supplied by Whatnot for this feedback. |
| `reviews.items[].text` | string or object | Public buyer review text and an available seller reply. |
| `reviews.items[].text.buyer` | string | Public buyer review text supplied by Whatnot. |
| `reviews.items[].text.sellerReply` | string | Public seller reply to this review supplied by Whatnot. |
| `reviews.items[].reviewedAt` | string (date-time) | Gives the review date and time shown by the source. |
| `reviews.items[].reviewer` | object | Groups public reviewer identity details. |
| `reviews.items[].reviewer.username` | string | Gives the reviewer's public Whatnot username. |
| `reviews.items[].reviewer.displayName` | string | Gives the reviewer's public display name. |
| `reviews.items[].reviewer.profileUrl` | string (URI) | Links to the reviewer's public profile. |
| `reviews.distribution` | object | Star ratings for the accessible public written reviews, with the source total kept separate. |
| `reviews.distribution.cohort` | string | The group of reviews used for this distribution. |
| `reviews.distribution.reviewCount` | integer | Number of public written reviews in items. |
| `reviews.distribution.sourceReportedReviewCount` | integer | Review total reported by Whatnot. It may include reviews outside the written-review group. |
| `reviews.distribution.bins` | array of objects | Counts and shares for each star rating in the written-review group. |
| `reviews.distribution.bins[].rating` | integer | Star rating for this group of written reviews. |
| `reviews.distribution.bins[].count` | integer | Number of reviews with this star rating in items. |
| `reviews.distribution.bins[].share` | number | Count divided by the accessible review count, from 0 to 1. Zero when there are no written reviews. |
| `shopListings` | array of objects | Lists public listings shown in the seller shop. |
| `shopListings[]` | object | Gives one shop listing. |
| `shopListings[].listingId` | string | Gives the stable shop listing identifier. |
| `shopListings[].title` | string | Gives the public shop listing title. |
| `shopListings[].listingUrl` | string (URI) | Links to the public shop listing. |
| `shopListings[].price` | object | Groups the shop listing price and currency. |
| `shopListings[].price.amount` | number | Gives the numeric shop listing price. |
| `shopListings[].price.currency` | string | Gives the currency code for the shop listing price. |
| `shopListings[].saleFormat` | string | Gives the sale format shown for the shop listing. |
| `shopListings[].quantity` | integer | Gives the quantity shown for the shop listing. |
| `shopListings[].status` | string | Gives the shop listing status shown by the source. |
| `shopListings[].updatedAt` | string (date-time) | Gives the last update time shown for the shop listing. |
| `showHistory` | array of objects | Lists public historical or scheduled shows shown for the seller. |
| `showHistory[]` | object | Gives one seller show. |
| `showHistory[].showId` | string | Gives the stable seller show identifier. |
| `showHistory[].title` | string | Gives the public seller show title. |
| `showHistory[].status` | string | Gives the status shown for the seller show. |
| `showHistory[].startTime` | string (date-time) | Gives the public seller show start time. |
| `showHistory[].viewerCount` | integer | Gives the viewer count shown for the seller show. |
| `showHistory[].thumbnailUrl` | string (URI) | Links to the public seller show thumbnail. |
| `showHistory[].showUrl` | string (URI) | Links to the public seller show. |
| `sourceUrl` | string (URI) | Links to the public Whatnot profile for the seller. |
| `retrievedAt` | string (date-time) | Gives the time when the Actor retrieved the seller profile. |

**Seller profile row example**

This genuine row is shortened. The shop listings and show history use `"..."` for omitted data. All eight collected reviews and their rating distribution are shown.

```json
{
  "recordType": "sellerProfile",
  "username": "rosestoys",
  "sourceUrl": "https://www.whatnot.com/user/rosestoys",
  "retrievedAt": "2026-10-06T02:11:25.539Z",
  "sellerId": "UHVibGljVXNlck5vZGU6MzkxNzkyOTY=",
  "biography": "Message me to bundle items & save on shipping!\n\nCool old toys deserve cool new homes 🌹\nVintage toys • collectibles • nostalgic finds\n\nNew treasures added weekly!",
  "followingCount": 107,
  "profileImageUrl": "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZXMiLCAia2V5IjogInVzZXJzLzM5MTc5Mjk2L2ZiMjg2ZmMxLTdjYmItNDIzMi04ZTVmLWUyMDBiNDU0ZTBmNC5qcGVnIiwgImVkaXRzIjogeyJyZXNpemUiOiB7IndpZHRoIjogbnVsbCwgImhlaWdodCI6IG51bGwsICJmaXQiOiAiY29udGFpbiIsICJiYWNrZ3JvdW5kIjogeyJyIjogMjU1LCAiZyI6IDI1NSwgImIiOiAyNTUsICJhbHBoYSI6IDF9fX19?signature=30d7c7ce63584a17edbf2a549a84cc9722a3688df2ecd43cd895c0dad5526f0a",
  "displayName": "Rose’s Toy Store",
  "followerCount": 67,
  "soldCount": 125,
  "rating": 5,
  "reviewCount": 26,
  "isVerified": false,
  "isLive": false,
  "shippingPerformance": "0 days",
  "reviews": {
    "items": [
      {
        "rating": {
          "average": 5,
          "overall": {
            "value": 5,
            "label": "Overall"
          },
          "shipping": {
            "value": 5,
            "label": "Shipping"
          },
          "packaging": {
            "value": 5,
            "label": "Packaging"
          },
          "accuracy": {
            "value": 5,
            "label": "Accuracy"
          }
        },
        "reviewedAt": "2026-10-01T00:21:17.000Z",
        "reviewer": {
          "username": "vannonwright90",
          "displayName": "Vannon Wright",
          "profileUrl": "https://www.whatnot.com/user/vannonwright90"
        },
        "reviewId": "U2VsbGVyUmV2aWV3Tm9kZTo0NzE2MjMzOTE6MzkxNzkyOTY6NDE4MjI4OTY=",
        "text": "good service vary polite"
      },
      {
        "rating": {
          "average": 5,
          "overall": {
            "value": 5,
            "label": "Overall"
          },
          "shipping": {
            "value": 5,
            "label": "Shipping"
          },
          "packaging": {
            "value": 5,
            "label": "Packaging"
          },
          "accuracy": {
            "value": 5,
            "label": "Accuracy"
          }
        },
        "reviewedAt": "2026-09-23T21:40:24.000Z",
        "reviewer": {
          "username": "andrelyl",
          "displayName": "Andre Lyle",
          "profileUrl": "https://www.whatnot.com/user/andrelyl"
        },
        "reviewId": "U2VsbGVyUmV2aWV3Tm9kZTo0ODI0MTE4NTk6MzkxNzkyOTY6Njg5ODgzMzE=",
        "text": "perfect\n"
      },
      {
        "rating": {
          "average": 5,
          "overall": {
            "value": 5,
            "label": "Overall"
          },
          "shipping": {
            "value": 5,
            "label": "Shipping"
          },
          "packaging": {
            "value": 5,
            "label": "Packaging"
          },
          "accuracy": {
            "value": 5,
            "label": "Accuracy"
          }
        },
        "reviewedAt": "2026-09-21T18:28:51.000Z",
        "reviewer": {
          "username": "sleepysallysle",
          "displayName": "SleepySally",
          "profileUrl": "https://www.whatnot.com/user/sleepysallysle"
        },
        "reviewId": "U2VsbGVyUmV2aWV3Tm9kZTo0Nzc3NDU4MDQ6MzkxNzkyOTY6MTQ2ODY5ODY=",
        "text": {
          "buyer": "Came fast asf and was exactly the picture thank you :)!\n",
          "sellerReply": "Thank you so much! Enjoy and come back soon!"
        }
      },
      {
        "rating": {
          "average": 5,
          "overall": {
            "value": 5,
            "label": "Overall"
          },
          "shipping": {
            "value": 5,
            "label": "Shipping"
          },
          "packaging": {
            "value": 5,
            "label": "Packaging"
          },
          "accuracy": {
            "value": 5,
            "label": "Accuracy"
          }
        },
        "reviewedAt": "2026-09-11T23:17:39.000Z",
        "reviewer": {
          "username": "koolizzy",
          "displayName": "koolizzy",
          "profileUrl": "https://www.whatnot.com/user/koolizzy"
        },
        "reviewId": "U2VsbGVyUmV2aWV3Tm9kZTo0NjQ1MTU3NDE6MzkxNzkyOTY6Njc2MzYzNg==",
        "text": {
          "buyer": "Arrived safe and exactly as pictures show, thank you so much!!!",
          "sellerReply": "Thank you for your purchase! Please come back and shop with us any time!! Thanks again 😊"
        }
      },
      {
        "rating": {
          "average": 5,
          "overall": {
            "value": 5,
            "label": "Overall"
          },
          "shipping": {
            "value": 5,
            "label": "Shipping"
          },
          "packaging": {
            "value": 5,
            "label": "Packaging"
          },
          "accuracy": {
            "value": 5,
            "label": "Accuracy"
          }
        },
        "reviewedAt": "2026-09-11T01:15:07.000Z",
        "reviewer": {
          "username": "th3fabri8tor",
          "displayName": "Victor Murdock",
          "profileUrl": "https://www.whatnot.com/user/th3fabri8tor"
        },
        "reviewId": "U2VsbGVyUmV2aWV3Tm9kZTo0NTU4ODYwMjQ6MzkxNzkyOTY6NzA5ODM2OTk=",
        "text": {
          "buyer": "A+",
          "sellerReply": "Thank you 🙏 "
        }
      },
      {
        "rating": {
          "average": 5,
          "overall": {
            "value": 5,
            "label": "Overall"
          },
          "shipping": {
            "value": 5,
            "label": "Shipping"
          },
          "packaging": {
            "value": 5,
            "label": "Packaging"
          },
          "accuracy": {
            "value": 5,
            "label": "Accuracy"
          }
        },
        "reviewedAt": "2026-08-19T23:23:58.000Z",
        "reviewer": {
          "username": "angelawol82005",
          "displayName": "Angela Marie Madden Wolfe",
          "profileUrl": "https://www.whatnot.com/user/angelawol82005"
        },
        "reviewId": "U2VsbGVyUmV2aWV3Tm9kZTo0NDA5MDc3NTE6MzkxNzkyOTY6MzMwMzM5MDI=",
        "text": {
          "buyer": "as described. great packaging",
          "sellerReply": "So glad to hear it! Please enjoy and come back anytime! Great buyer"
        }
      },
      {
        "rating": {
          "average": 5,
          "overall": {
            "value": 5,
            "label": "Overall"
          },
          "shipping": {
            "value": 5,
            "label": "Shipping"
          },
          "packaging": {
            "value": 5,
            "label": "Packaging"
          },
          "accuracy": {
            "value": 5,
            "label": "Accuracy"
          }
        },
        "reviewedAt": "2026-08-17T19:33:39.000Z",
        "reviewer": {
          "username": "nataliefunburg",
          "displayName": "Natalie Funburg",
          "profileUrl": "https://www.whatnot.com/user/nataliefunburg"
        },
        "reviewId": "U2VsbGVyUmV2aWV3Tm9kZTo0NDA5MjkwMTU6MzkxNzkyOTY6NjY3MDQ2MDY=",
        "text": {
          "buyer": "Loved the stream! Thanks for the awesome buys!! ",
          "sellerReply": "Thank you for your support Natalie! We hope you and your daughter love your pick ups! Happy collecting :)"
        }
      },
      {
        "rating": {
          "average": 5,
          "overall": {
            "value": 5,
            "label": "Overall"
          },
          "shipping": {
            "value": 5,
            "label": "Shipping"
          },
          "packaging": {
            "value": 5,
            "label": "Packaging"
          },
          "accuracy": {
            "value": 5,
            "label": "Accuracy"
          }
        },
        "reviewedAt": "2026-08-15T17:18:37.000Z",
        "reviewer": {
          "username": "christiansings4u",
          "displayName": "Christian Feazell",
          "profileUrl": "https://www.whatnot.com/user/christiansings4u"
        },
        "reviewId": "U2VsbGVyUmV2aWV3Tm9kZTo0NDA4OTYxMTI6MzkxNzkyOTY6NjQ5OTkzMzU=",
        "text": {
          "buyer": "All good. ",
          "sellerReply": "Thank you! We will probably do another Pokémon show soon"
        }
      }
    ],
    "distribution": {
      "cohort": "public_written_reviews",
      "reviewCount": 8,
      "sourceReportedReviewCount": 26,
      "bins": [
        {
          "rating": 1,
          "count": 0,
          "share": 0
        },
        {
          "rating": 2,
          "count": 0,
          "share": 0
        },
        {
          "rating": 3,
          "count": 0,
          "share": 0
        },
        {
          "rating": 4,
          "count": 0,
          "share": 0
        },
        {
          "rating": 5,
          "count": 8,
          "share": 1
        }
      ]
    }
  },
  "showHistory": "...",
  "shopListings": "..."
}
```

**Category insight record fields**

| Field | Type | What it does |
|---|---|---|
| `recordType` | string | Identifies this row as a category insight. |
| `category` | object | Groups the public category details. |
| `category.name` | string | Gives the public category name. |
| `category.slug` | string | Gives the public category slug when supplied. |
| `category.url` | string (URI) | Links to the public category page. |
| `rank` | integer | Gives the position in Whatnot's viewer-count order, starting at 1. This source order may differ from the current viewer counts. |
| `viewerCount` | integer | Gives the viewer count shown for the category. |
| `livestreamCount` | integer | Gives the livestream count shown for the category. |
| `subcategories` | array of objects | Lists public subcategories shown for the category. |
| `subcategories[]` | object | Gives one public subcategory. |
| `subcategories[].name` | string | Gives the public subcategory name. |
| `subcategories[].slug` | string | Gives the public subcategory slug when supplied. |
| `subcategories[].url` | string (URI) | Links to the public subcategory page. |
| `subcategories[].viewerCount` | integer | Gives the viewer count shown for the subcategory. |
| `subcategories[].livestreamCount` | integer | Gives the livestream count shown for the subcategory. |
| `shows` | array of objects | Lists public shows discovered in the category. |
| `shows[]` | object | Gives one category show. |
| `shows[].showId` | string | Gives the stable category show identifier. |
| `shows[].title` | string | Gives the public category show title. |
| `shows[].status` | string | Gives the status shown for the category show. |
| `shows[].startTime` | string (date-time) | Gives the public category show start time. |
| `shows[].viewerCount` | integer | Gives the viewer count shown for the category show. |
| `shows[].thumbnailUrl` | string (URI) | Links to the public category show thumbnail. |
| `shows[].showUrl` | string (URI) | Links to the public category show. |
| `shows[].seller` | object | Groups seller details shown for the category show. |
| `shows[].seller.username` | string | Gives the seller's public Whatnot username. |
| `shows[].seller.displayName` | string | Gives the seller's public display name. |
| `shows[].seller.profileUrl` | string (URI) | Links to the seller's public profile. |
| `sellerLeaderboard` | array of objects | Lists public seller leaderboard entries shown for the category. |
| `sellerLeaderboard[]` | object | Gives one category leaderboard entry. |
| `sellerLeaderboard[].rank` | integer | Gives the seller rank shown by the source. |
| `sellerLeaderboard[].username` | string | Gives the seller's public Whatnot username. |
| `sellerLeaderboard[].displayName` | string | Gives the seller's public display name. |
| `sellerLeaderboard[].profileUrl` | string (URI) | Links to the seller's public profile. |
| `sellerLeaderboard[].followerCount` | integer | Gives the follower count shown for the seller. |
| `sellerLeaderboard[].soldCount` | integer | Gives the sold-item count shown for the seller. |
| `sellerLeaderboard[].activeShowCount` | integer | Gives the active show count shown for the seller. |
| `sourceUrl` | string (URI) | Links to the public Whatnot source for the category. |
| `retrievedAt` | string (date-time) | Gives the time when the Actor retrieved the category record. |

**Category insight row example**

This unshortened row is copied from a successful current-beta run:

```json
{
  "recordType": "categoryInsight",
  "category": {
    "name": "Trading Card Games",
    "slug": "trading_card_games",
    "url": "https://www.whatnot.com/tag/trading_card_games"
  },
  "sourceUrl": "https://www.whatnot.com/tag/trading_card_games",
  "retrievedAt": "2026-10-06T02:14:42.642Z",
  "rank": 2,
  "viewerCount": 27191,
  "livestreamCount": 852,
  "subcategories": [
    {
      "name": "Trading Card Games",
      "slug": "trading_card_games",
      "url": "https://www.whatnot.com/tag/trading_card_games",
      "viewerCount": 27191,
      "livestreamCount": 852
    },
    {
      "name": "Pokémon Cards",
      "slug": "pokemon_cards",
      "url": "https://www.whatnot.com/tag/pokemon_cards",
      "viewerCount": 22714,
      "livestreamCount": 617
    },
    {
      "name": "One Piece Cards",
      "slug": "one_piece_cards",
      "url": "https://www.whatnot.com/tag/one_piece_cards",
      "viewerCount": 1562,
      "livestreamCount": 52
    },
    {
      "name": "Magic: The Gathering",
      "slug": "magic_cards",
      "url": "https://www.whatnot.com/tag/magic_cards",
      "viewerCount": 1285,
      "livestreamCount": 63
    },
    {
      "name": "Dragon Ball Cards",
      "slug": "dragonball_cards",
      "url": "https://www.whatnot.com/tag/dragonball_cards",
      "viewerCount": 381,
      "livestreamCount": 26
    },
    {
      "name": "Yu-Gi-Oh! Cards",
      "slug": "yugioh_cards",
      "url": "https://www.whatnot.com/tag/yugioh_cards",
      "viewerCount": 320,
      "livestreamCount": 23
    },
    {
      "name": "Bo Jackson Battle Arena",
      "slug": "bo_jackson_battle_arena_category",
      "url": "https://www.whatnot.com/tag/bo_jackson_battle_arena_category",
      "viewerCount": 244,
      "livestreamCount": 6
    },
    {
      "name": "Other TCG",
      "slug": "tcg_other",
      "url": "https://www.whatnot.com/tag/tcg_other",
      "viewerCount": 172,
      "livestreamCount": 21
    },
    {
      "name": "Lorcana",
      "slug": "lorcana",
      "url": "https://www.whatnot.com/tag/lorcana",
      "viewerCount": 166,
      "livestreamCount": 10
    },
    {
      "name": "Naruto Cards",
      "slug": "naruto_cards",
      "url": "https://www.whatnot.com/tag/naruto_cards",
      "viewerCount": 104,
      "livestreamCount": 6
    },
    {
      "name": "Riftbound",
      "slug": "riftbound_category",
      "url": "https://www.whatnot.com/tag/riftbound_category",
      "viewerCount": 90,
      "livestreamCount": 8
    },
    {
      "name": "Weiß Schwarz",
      "slug": "weiß_schwarz",
      "url": "https://www.whatnot.com/tag/wei%C3%9F_schwarz",
      "viewerCount": 79,
      "livestreamCount": 9
    },
    {
      "name": "VeeFriends",
      "slug": "veefriends",
      "url": "https://www.whatnot.com/tag/veefriends",
      "viewerCount": 65,
      "livestreamCount": 4
    },
    {
      "name": "Union Arena",
      "slug": "union_arena",
      "url": "https://www.whatnot.com/tag/union_arena",
      "viewerCount": 20,
      "livestreamCount": 3
    },
    {
      "name": "Palworld",
      "slug": "palworld",
      "url": "https://www.whatnot.com/tag/palworld",
      "viewerCount": 3,
      "livestreamCount": 1
    }
  ],
  "shows": [
    {
      "title": "⚡🐻THE LEGENDARIEST COLLECTION⚡🚘",
      "status": "PLAYING",
      "showId": "769f2615-de0e-4f9a-8eb7-7ab737d4cc53",
      "startTime": "2026-10-05T22:13:05.348Z",
      "viewerCount": 1864,
      "thumbnailUrl": "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZXMiLCAia2V5IjogImxpdmVzdHJlYW1fdGh1bWJuYWlscy81NWRlYzU2Ni1mNzk2LTRkYzctOWZhZS0yODY5MTdjYzdlYWYuanBlZyIsICJlZGl0cyI6IHsicmVzaXplIjogeyJ3aWR0aCI6IDQxNCwgImhlaWdodCI6IDY0MCwgImZpdCI6ICJjb3ZlciIsICJiYWNrZ3JvdW5kIjogeyJyIjogMjU1LCAiZyI6IDI1NSwgImIiOiAyNTUsICJhbHBoYSI6IDF9fX0sICJvdXRwdXRGb3JtYXQiOiAid2VicCJ9?signature=c6044d60c256fc7168e2c9c03e5a6b2ca4c0aeba1a24846de18c0cf12aacfdad",
      "showUrl": "https://www.whatnot.com/live/769f2615-de0e-4f9a-8eb7-7ab737d4cc53",
      "seller": {
        "username": "spacenarwhalz",
        "displayName": "Michael Granlund",
        "profileUrl": "https://www.whatnot.com/user/spacenarwhalz"
      }
    },
    {
      "title": "FREE UNRELEASED PIKACHU! $1 START SINGLES",
      "status": "PLAYING",
      "showId": "7c7a4c99-d93d-415b-8f11-70b9bd4d933a",
      "startTime": "2026-10-05T21:48:20.989Z",
      "viewerCount": 813,
      "thumbnailUrl": "https://images.whatnot.com/eyJidWNrZXQiOiAid2hhdG5vdC1pbWFnZXMiLCAia2V5IjogImxpdmVzdHJlYW1fdGh1bWJuYWlscy85MDViYThmOC1lODI4LTQ5ZDAtOGQ3My1jZWRmZGY0ZWZjMmIuanBnIiwgImVkaXRzIjogeyJyZXNpemUiOiB7IndpZHRoIjogNDE0LCAiaGVpZ2h0IjogNjQwLCAiZml0IjogImNvdmVyIiwgImJhY2tncm91bmQiOiB7InIiOiAyNTUsICJnIjogMjU1LCAiYiI6IDI1NSwgImFscGhhIjogMX19fSwgIm91dHB1dEZvcm1hdCI6ICJ3ZWJwIn0=?signature=ee3e24f04b4703c07de9b4a2f8f01d02845a9676d45ef001595b8fb1e3e7c66b",
      "showUrl": "https://www.whatnot.com/live/7c7a4c99-d93d-415b-8f11-70b9bd4d933a",
      "seller": {
        "username": "shop_exp",
        "displayName": "expshop",
        "profileUrl": "https://www.whatnot.com/user/shop_exp"
      }
    }
  ],
  "sellerLeaderboard": [
    {
      "rank": 1,
      "username": "neoworld",
      "profileUrl": "https://www.whatnot.com/user/neoworld",
      "displayName": "NeoWorld",
      "followerCount": 188992,
      "soldCount": 249314,
      "activeShowCount": 0
    },
    {
      "rank": 2,
      "username": "legacy_auction_house",
      "profileUrl": "https://www.whatnot.com/user/legacy_auction_house",
      "displayName": "Legacy Auction House ",
      "followerCount": 433540,
      "soldCount": 1007932
    }
  ]
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. A saved public listing, live show, or seller profile row charges its matching `Listing`, `Live show`, or `Seller profile` event. Current prices and user tiers appear in the Store pricing panel. Category insights have no separate buyer-facing event title in the current pricing configuration.

#### 🔌 Integrations

Use the Apify Console or API to start runs and read the default dataset. The Output tab links to the same dataset for export and follow-up processing.

Watch the walkthrough:

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Which fields are used for each search?

Choose the `resultType` and `findBy` values that match your target. For example, use keywords or a search URL for search surfaces, seller usernames or source seller IDs for seller profiles, and a category for category-based results. Keywords can also search each seller's shop when you use seller usernames or direct URLs. Other fields for unrelated choices are ignored.

##### What happens when the same listing matches more than one keyword?

The Actor saves the first eligible occurrence and ignores later matches for the same source listing. The saved row reflects the first match and does not combine later matches.

##### What if Whatnot does not show a field?

That field can be absent from the row. The Actor keeps public source values and does not guess a missing value.

##### Can I request seller reviews and past shows?

Yes. Select seller profiles and turn on `includeReviews` or `includeShowHistory`. The Actor returns public reviews and historical or scheduled shows when the source provides them.

##### Why did my run return fewer rows than `maxItems`?

`maxItems` is a cap, not a promise. The public source may return fewer eligible rows because listings, shows, sellers, or categories can be unavailable or filtered out.

##### How current are prices and viewer counts?

They reflect what Whatnot showed when the Actor retrieved the row. Use `retrievedAt` to see that time. The source can change after the run finishes.

##### Do I need a Whatnot login or API key?

No. The Actor reads public Whatnot pages and does not need a customer-supplied Whatnot login or API key.

##### Does this collect private data or place orders?

No. It does not collect private or account-only data, capture live video or audio, buy or bid, or change Whatnot accounts or listings.

### 📝 Changelog

**v1.0** (06-10-2026)

- Seller reviews now use `reviews.items` for review rows and `reviews.distribution` for star counts and shares. Update tools that read the old review list.
- Review ratings can now include separate feedback scores. Review text can include a buyer's text and the seller's reply. Update tools that expect only a number or plain text.
- Find seller profiles by source seller ID as well as username.
- Search a seller's shop with keywords and collect past shows when requested.
- Choose a current day, current week, or live seller leaderboard for category insights.
- Get listing dates, offer status, and catalog price ranges when Whatnot provides them.
- Get seller bios, following counts, profile images, and premier shop status when available.
- Direct live show results can include watchlist counts and a current auction bid snapshot when available.
- Mixed search reads more result pages and fills in listings from product search. It applies the chosen listing filters and order.
- Category searches match the chosen category, and category ranks follow Whatnot's results ordered by viewer count.
- Repeated source items no longer use up the item limit for the same search.

**v0.0** (03-09-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~whatnot/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Facebook Marketplace Listings Scraper](https://apify.com/maximedupre/facebook-marketplace-listings). Collect public local listings and compare prices, availability, locations, images, and source links.
- [TikTok Shop Scraper No Cookies](https://apify.com/maximedupre/tiktok-shop-scraper-no-cookies). Collect public TikTok Shop products with seller, price, demand, variant, and shipping data.
- [eBay Seller Scraper](https://apify.com/maximedupre/ebay-seller-scraper). Review public eBay seller profiles, listing snippets, feedback summaries, and optional feedback reviews.
- [Whatnot Listings Scraper](https://apify.com/crawloop/whatnot-listings-scraper). Compare public Whatnot listing prices, sale formats, conditions, seller ratings, and source links.
- [Whatnot Seller Scraper](https://apify.com/devcake/whatnot-seller-scraper). Collect public Whatnot seller profiles, products, reviews, and livestreams for seller research.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `resultType` (type: `string`):

Choose the kind of public Whatnot records to return. Mixed search uses the product, live-show, and seller search surfaces.

## `findBy` (type: `string`):

Choose how to find the selected records. Use the method that matches the result type: keywords or a Search URL for search surfaces, Direct URL for a supported public page, Seller username for Seller profiles by username or source seller ID, or Category for category-based results.

## `keywords` (type: `array`):

Enter one or more keywords. They are used in one search with the selected result type and search surface. For Seller profiles with Seller username or Direct URL, the keywords form one shop query for each seller. Leave them empty to collect all available shop listings.

## `searchUrls` (type: `array`):

Add one or more public Whatnot search URLs. Each URL is searched with the selected result type and search surface.

## `directUrls` (type: `array`):

Add one or more supported public Whatnot listing, seller, live-show, or category URLs.

## `sellerUsernames` (type: `array`):

Enter one or more public Whatnot seller usernames or source seller IDs for Seller profiles. You can use both in the same list. A list uses one seller-focused search setup.

## `includeReviews` (type: `boolean`):

For Seller profiles, request public buyer reviews with ratings, text, dates, and reviewer identity. Source-provided seller review totals are included when available.

## `includeShowHistory` (type: `boolean`):

For Seller profiles, request public historical or scheduled shows for each seller when available.

## `category` (type: `string`):

Enter one public Whatnot category name or slug. Use this for Category insights or category-based listings, live shows, or seller results.

## `categoryFilters` (type: `array`):

For Category insights, enter one or more filter values supported by the public Whatnot category page.

## `categoryOrder` (type: `string`):

For Category insights, choose a source-supported order for category results. You may enter another source value when needed.

## `leaderboardPeriod` (type: `string`):

For Category insights, choose the current day, current week, or live leaderboard where available.

## `saleFormats` (type: `array`):

For Listings and Mixed search, optionally keep only sale formats supported by Whatnot, such as auction or buy now.

## `minPrice` (type: `number`):

For Listings and Mixed search, keep listings at or above this price.

## `maxPrice` (type: `number`):

For Listings and Mixed search, keep listings at or below this price.

## `liveOnly` (type: `boolean`):

For Listings and Mixed search, keep only listings that are live now.

## `listingOrder` (type: `string`):

For Listings and Mixed search, choose a source-supported order for listing results. You may enter another source value when needed.

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

Stop after this many records. Leave it empty to return all available results until the source is exhausted.

## `monitorChanges` (type: `boolean`):

For Listings and Mixed search, compare new public listing observations with prior observations for the same submitted target.

## Actor input object example

```json
{
  "resultType": "listings",
  "findBy": "keywords",
  "keywords": [
    "sneakers"
  ],
  "searchUrls": [
    {
      "url": "https://www.whatnot.com/search?query=sneakers"
    }
  ],
  "directUrls": [
    {
      "url": "https://www.whatnot.com/listing/example"
    }
  ],
  "sellerUsernames": [
    "example-seller"
  ],
  "includeReviews": false,
  "includeShowHistory": false,
  "category": "trading-cards",
  "categoryFilters": [
    "live"
  ],
  "categoryOrder": "viewerCount",
  "leaderboardPeriod": "currentWeek",
  "saleFormats": [
    "auction"
  ],
  "minPrice": 10,
  "maxPrice": 500,
  "liveOnly": false,
  "listingOrder": "relevance",
  "maxItems": 100,
  "monitorChanges": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

Open the accepted public Whatnot records in the default dataset.

# 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 = {
    "resultType": "listings",
    "findBy": "keywords",
    "keywords": [
        "trading cards"
    ],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/whatnot").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 = {
    "resultType": "listings",
    "findBy": "keywords",
    "keywords": ["trading cards"],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/whatnot").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 '{
  "resultType": "listings",
  "findBy": "keywords",
  "keywords": [
    "trading cards"
  ],
  "maxItems": 100
}' |
apify call maximedupre/whatnot --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/whatnot"
        }
    }
}
```

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/BDsSfUXufTbLk2mxg/builds/QejtVht3e9PXVFdSH/openapi.json
