Skip to content
scrapeatlas.Dashboard

Shopping

Whatnot API

Read public Whatnot sellers, shows, reviews, listings, search results and categories.

12 endpointsx-api-key

Seller profiles, shows, reviews, shop listings and clips, search across verticals, single livestreams and listings, and the category tree, read from Whatnot's public web GraphQL endpoint without a login.

API availability: Available

Base URL · local workerhttp://localhost:3025Public API: https://api.scrapeatlas.com.
Authenticationx-api-keyCustomer key from your account. See Authentication.

Endpoints

GET/v1/whatnot/profile

Get a Whatnot seller profile

Read a public seller profile: identity, bio, images, follower/sold counts, average ship days, rating and review count, verified/live/premier flags and the current live show.

Reference
GET/v1/whatnot/user/shows

Get a seller's shows

List a seller's scheduled, live and past livestreams, newest first, with pagination.

Reference
GET/v1/whatnot/user/reviews

Get a seller's reviews

List buyer reviews of a seller with the overall, shipping, packaging and accuracy ratings, 24 per page.

Reference
GET/v1/whatnot/user/listings

Get a seller's shop listings

List a seller's shop (buy-it-now and auction listings), optionally filtered by a search query, 24 per page.

Reference
GET/v1/whatnot/user/clips

Get a seller's clips

List published clips from a seller's shows, 24 per page.

Reference
GET/v1/whatnot/search

Search Whatnot

Search listings, livestreams, products, users and categories. Pick a vertical or use UNIVERSAL for the mixed feed; 24 records per page.

Reference
GET/v1/whatnot/livestream

Get a livestream

Read one show by UUID or /live/ URL: status, viewers, times, poster, categories, tags and seller.

Reference
GET/v1/whatnot/livestream/listings

Get a livestream's listings

List the products in a show's live shop, optionally filtered by a query, 24 per page.

Reference
GET/v1/whatnot/listing

Get a listing

Read one listing by Relay id or /listing/ URL: price, status, quantity, auction state, images, product link and seller.

Reference
GET/v1/whatnot/product

Get a catalog product

Read one catalog product (the entity search returns as type=product) by Relay id: name, description, image, lowest listing and last sale price, active listing count and category.

Reference
GET/v1/whatnot/categories

List categories and tags

List the category tree (with subcategories) and the browse tags with live viewer counts; sort=viewers returns the tags in trending order.

Reference
GET/v1/whatnot/category

Get a category feed

Read category metadata, live and upcoming shows, listings and suggested refinement tags together, with cursor pagination.

Reference

Quick start

Create an API key on your account page, then call the public API. Values below are placeholders.

Terminal
curl "https://api.scrapeatlas.com/v1/whatnot/profile?handle=example_seller" \
  -H "x-api-key: YOUR_API_KEY"

Coverage & limits

  • Four concurrent requests; 20-second deadline; two upstream attempts including one transient retry; 4 MiB per response.
  • Public web GraphQL, no cookies or session. Prices are returned in major units.
  • 24 records per page with Relay cursors; at most 100 records per response. Feed sections (editorial groupings) are skipped and reported as sections_skipped.
  • Read-only public data: no stream tokens, chat, bidding or account data.
Error codes
9
HTTPfailure.codeMeaning
400invalid_requestMissing, duplicate, unsupported or invalid parameters, or more than one selector.
401unauthorizedMissing or invalid service key.
404not_foundUnknown user, livestream, listing or tag.
429upstream_rate_limitedWhatnot rate limited the request; no automatic retry.
502upstream_challengedCloudflare challenge or HTTP 403/503 from Whatnot.
502unsupported_page unsafe_redirect response_too_large payload_too_complex request_limit upstream_errorBounded retrieval failed or the GraphQL response no longer matches the expected schema.
503busyAll worker slots occupied.
504timeoutDeadline exceeded.
200partialCoverage warnings such as sections_skipped or record_limit.