
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape Whatnot: search listings with prices and bids, live shows, users and categories; seller profiles with followers, sold count and rating, buyer reviews, shows and shop listings; category live feeds, trending categories and seller leaderboards. No login.
Turn Whatnot into clean spreadsheets. Search listings with prices and current bids, find live shows and sellers, pull full seller profiles with followers, sold count, rating and buyer reviews, and watch categories with live viewer counts and seller leaderboards. No Whatnot account, cookies or API key needed, and a typical search of 20 results finishes in a few seconds.
12.5, not 1250) with the currency code next to them.type column (listing, livestream, user, seller, review, category, rankedSeller), and the Output tab has ready views for listings, sellers, reviews and shows.| Field | What it does |
|---|---|
searchQueries | Keywords such as pokemon cards or jordan 1 |
usernames | Seller usernames: profile plus reviews, shows and (optional) shop listings |
categories | Category names or slugs (Pokémon Cards, sneakers); all lists every category by viewers |
startUrls | whatnot.com search, user, category, tag, live show or listing links |
searchVertical | PRODUCT (listings), LIVESTREAM, USER, CATEGORY or UNIVERSAL |
maxResults | Max rows per query, URL or category feed (Whatnot shows up to about 1,000 per search) |
sortBy, buyingFormat, minPrice, maxPrice, shipsFrom, minSellerRating | Listing filters |
includeReviews, includeShows, includeShop (+ max per seller) | What to collect per seller |
includeCategoryShows, includeLeaderboard, leaderboardInterval, maxRankedSellers | What to collect per category |
{
"searchQueries": ["pokemon cards"],
"searchVertical": "PRODUCT",
"maxResults": 20,
"usernames": ["some_seller"],
"includeReviews": true,
"maxReviewsPerSeller": 20,
"categories": ["Pokémon Cards"],
"includeLeaderboard": true,
"leaderboardInterval": "CURRENT_WEEK"
}
Each row has a type. The main fields per type:
| Type | Key fields |
|---|---|
listing | title, subtitle, description, price, currency, currentBid, currentBidCount, transactionType, quantity, status, isLive, images, sellerUsername, sellerRating, sellerReviewCount, url |
livestream | title, status, isLiveNow, startTime, activeViewers, watchlistCount, categories, tags, thumbnailUrl, sellerUsername, url |
user | username, followerCount, soldCount, sellerRating, sellerReviewCount, isLive, url |
seller | everything in user plus displayName, bio, followingCount, averageShipDays, isVerifiedSeller, showCount |
review | rating, ratingShipping, ratingPackaging, ratingAccuracy, reviewText, sellerResponse, reviewerUsername, reviewedAt |
category | name, label, viewerCount, parentLabel, url |
rankedSeller | rank, leaderboardInterval, categoryLabel, username, followerCount, soldCount |
Every row also carries where it came from (searchQuery, sourceSeller or sourceCategory) and scrapedAt.
[
{
"type": "listing",
"id": "TGlzdGluZ05vZGU6MjQzODI4ODk5Nw==",
"listingId": "2438288997",
"url": "https://www.whatnot.com/listing/2438288997",
"title": "Gengar Pokemon Sticker (1999) Sandylion #94",
"subtitle": "Card",
"status": "ACTIVE",
"transactionType": "BUY_IT_NOW",
"price": 70.0,
"currency": "USD",
"currentBid": null,
"quantity": 1,
"isLive": false,
"imageUrl": "https://images.whatnot.com/...",
"sellerUsername": "card_shop_example",
"sellerRating": 5.0,
"sellerReviewCount": 56,
"searchQuery": "pokemon cards",
"searchVertical": "PRODUCT",
"scrapedAt": "2026-10-16T09:12:44.674Z"
},
{
"type": "seller",
"userId": "18249573",
"username": "some_seller",
"displayName": "Alex Example",
"url": "https://www.whatnot.com/user/some_seller",
"followerCount": 51625,
"soldCount": 26916,
"sellerRating": 4.9,
"sellerReviewCount": 4751,
"averageShipDays": 2,
"isVerifiedSeller": false,
"showCount": 17,
"sourceSeller": "some_seller",
"scrapedAt": "2026-10-16T09:12:44.850Z"
}
]
You pay $2.50 per 1,000 items ($0.0025 per row), plus a small amount of platform usage (compute and proxy traffic, usually well under a cent for a few hundred rows). Every row is one item: a listing, a show, a user, a seller profile, a review, a category or a leaderboard entry.
Example: 1,000 listings ≈ $2.50 in items plus about a cent of usage. A seller with 20 reviews and 10 shows is 31 items ≈ $0.08.
Set a maximum charge per run and the actor stops cleanly when it is reached.
Is it legal to scrape Whatnot? The actor reads publicly visible marketplace data, the same you see in a browser without logging in. You are responsible for how you use it, including Whatnot's terms and privacy laws such as GDPR.
Do I need a Whatnot account or my own proxies? No. The actor needs no login and uses the built-in datacenter proxy pinned to the US. If datacenter exits are ever refused, it switches to US residential exits by itself.
How many results can I get? Whatnot shows up to about 1,000 results per search; use several queries or filters (price ranges, buying format) to go further. Reviews and seller shows can be paged much deeper.
Why are prices in different currencies? Whatnot sellers list in their own currency (USD, GBP, EUR, CAD, ...). Use shipsFrom to keep one market, or change the proxy country to see what buyers in another country see.
Why is a field empty? Not every item has every field: buy-it-now listings have no current bid, leaderboard rows have no rating, and users who never sold have no sold count. Empty means Whatnot did not show a value, not zero.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it, and fetch results through the API or an integration.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch queries
Keywords to search on Whatnot, e.g. "pokemon cards" or "jordan 1". Each query returns up to Max results rows of the chosen Search type.
usernamesarrayOptionalSeller usernames
Whatnot usernames (the part after whatnot.com/user/). Each seller returns a profile row with followers, sold count and rating, plus their reviews, shows and shop listings as set in the Sellers section.
categoriesarrayOptionalCategories
Category names or slugs, e.g. "Pokémon Cards", "sneakers" or "sports_cards". Each returns the category with its live viewer count and the shows in its live feed (and its seller leaderboard if enabled). Enter "all" to list every category sorted by viewers.
startUrlsarrayOptionalWhatnot URLs
Paste whatnot.com links: search pages (/search?query=...), seller profiles (/user/...), categories (/category/... or /tag/...), live shows (/live/...) or listings (/listing/...).
searchVerticalenumOptionaldefault "PRODUCT"Search type
What search queries return. Listings are buy-it-now and auction items; Universal mixes listings, shows, users and categories.
maxResultsintegerOptionaldefault 20Max results per query, URL or category
Upper limit of rows for each search query, search URL and category feed (Whatnot shows up to about 1,000 results per search).
Apply to listing searches (Search type Listings or Universal) and, for sort, to shop listings.
sortByenumOptionaldefault "relevance"Sort listings by
buyingFormatenumOptionaldefault "any"Buying format
Only buy-it-now listings or only auctions.
minPriceintegerOptionalMin price
Lowest listing price in whole currency units (e.g. 5 = $5).
maxPriceintegerOptionalMax price
Highest listing price in whole currency units.
shipsFromarrayOptionalShips from (country codes)
Only sellers shipping from these countries, as two-letter codes such as US, GB, CA, DE.
minSellerRatingenumOptionaldefault "any"Min seller rating
Only listings from sellers rated at least this.
What to collect for each seller username or profile URL. The profile row is always included.
includeReviewsbooleanOptionaldefault trueInclude buyer reviews
One row per buyer review with overall, shipping, packaging and accuracy ratings.
maxReviewsPerSellerintegerOptionaldefault 20Max reviews per seller
includeShowsbooleanOptionaldefault trueInclude shows
The seller's live and upcoming shows.
maxShowsPerSellerintegerOptionaldefault 10Max shows per seller
includeShopbooleanOptionaldefault falseInclude shop listings
Active buy-it-now and auction listings in the seller's shop.
maxShopListingsPerSellerintegerOptionaldefault 20Max shop listings per seller
shopQuerystringOptionalShop search text
Optional: only shop listings matching this text.
What to collect for each category.
includeCategoryShowsbooleanOptionaldefault trueInclude category live feed
Shows in the category's live feed, with viewer counts (up to Max results).
includeLeaderboardbooleanOptionaldefault falseInclude seller leaderboard
Ranked top sellers of the category with followers and sold count.
leaderboardIntervalenumOptionaldefault "CURRENT_DAY"Leaderboard period
maxRankedSellersintegerOptionaldefault 20Max ranked sellers per category
proxyobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter exits work well for Whatnot and are pinned to the US by default, so prices and results match the US site. Set a country to see another market. If datacenter exits are refused, the run switches to US residential exits on its own.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | any | Type |
| title | any | Title |
| label | any | Category |
| username | any | Username |
| price | any | Price |
| currency | any | Currency |
| currentBid | any | Current bid |
| transactionType | any | Format |
| status | any | Status |
| activeViewers | any | Viewers |
| viewerCount | any | Category viewers |
| startTime | any | Show start |
| followerCount | any | Followers |
| soldCount | any | Sold |
| sellerRating | any | Seller rating |
| rank | any | Rank |
| rating | any | Review rating |
| reviewText | any | Review |
| reviewerUsername | any | Reviewer |
| sellerUsername | any | Seller |
| imageUrl | any | Image |
| url | any | URL |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Item | One saved row: a listing, live show, user, seller profile, review, category or leaderboard entry. | $0.0025 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/whatnot-scraper').call({
"searchQueries": [
"pokemon cards"
],
"maxResults": 20,
"proxy": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/whatnot-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/whatnot-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Seller search plus the weekly top 5 sellers.
Products in a price range, cheapest first.
A seller's profile, shows and up to 5 reviews.
Live shows matching a search term.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.