{
  "openapi": "3.0.1",
  "info": {
    "title": "Whatnot Scraper & Price Tracker - Sellers, Shows, Reviews",
    "description": "For resellers, collectors and Whatnot sellers tracking competitors: listings with price and current bid, live and upcoming shows with viewers, seller followers, items sold, rating and reviews. Monitoring returns only new listings, new shows and price changes. No login. Export to CSV or Excel.",
    "version": "0.1",
    "x-build-id": "vg63KapW5Q0OdglIe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~whatnot-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-whatnot-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/neverempty~whatnot-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-whatnot-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/neverempty~whatnot-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-whatnot-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "Words to search on Whatnot, e.g. \"pokemon booster box\" or \"jordan 1\". Each term is searched separately in the result type chosen below. Leave empty to skip search. If you fill none of the three sections, one example search is run (not in monitoring mode).",
            "items": {
              "type": "string"
            }
          },
          "searchVertical": {
            "title": "Search for",
            "enum": [
              "PRODUCT",
              "LIVESTREAM",
              "USER"
            ],
            "type": "string",
            "description": "What a search term returns: PRODUCT = listings (buy it now and auctions) with price and seller, LIVESTREAM = live and upcoming shows with viewers, USER = seller accounts with followers and items sold.",
            "default": "PRODUCT"
          },
          "searchSort": {
            "title": "Sort search results by",
            "enum": [
              "relevance",
              "newest",
              "price-low",
              "price-high",
              "most-viewers"
            ],
            "type": "string",
            "description": "relevance = Whatnot's best match (works for every result type). newest, price-low and price-high work with listings. most-viewers works with live shows.",
            "default": "relevance"
          },
          "maxResultsPerQuery": {
            "title": "Max results per search term or search URL",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many results each search term (and each search URL) returns at most. This is per term, not a run total: 3 terms x 50 = up to 150 rows. Results are read 50 at a time. Up to 5,000.",
            "default": 50
          },
          "usernames": {
            "title": "Seller usernames",
            "type": "array",
            "description": "Whatnot usernames (e.g. legacy_auction_house) or profile URLs (https://www.whatnot.com/user/<name>). For each seller you get the profile row and, with the switches below, the seller's live and upcoming shows, shop listings and buyer reviews. Leave empty to skip.",
            "items": {
              "type": "string"
            }
          },
          "includeProfile": {
            "title": "Include the seller profile",
            "type": "boolean",
            "description": "One row per seller: followers, following, items sold, seller rating, review count, average ship days, verified and Premier Shop flags, whether the seller is live now.",
            "default": true
          },
          "includeShows": {
            "title": "Include the seller's shows",
            "type": "boolean",
            "description": "The seller's live and scheduled shows: title, live or upcoming, start time, viewers now, how many people saved the show, categories and tags. Whatnot lists only live and upcoming shows here, not past ones.",
            "default": true
          },
          "showStatus": {
            "title": "Which shows",
            "enum": [
              "all",
              "live",
              "upcoming"
            ],
            "type": "string",
            "description": "all = live and upcoming shows, live = only shows that are live now, upcoming = only scheduled shows.",
            "default": "all"
          },
          "maxShows": {
            "title": "Max shows per seller",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many shows of each seller are returned at most. Up to 500.",
            "default": 20
          },
          "includeShop": {
            "title": "Include the seller's shop listings",
            "type": "boolean",
            "description": "The seller's active shop listings (buy it now and auctions): title, price, current bid, quantity, status and image.",
            "default": false
          },
          "shopQuery": {
            "title": "Only shop listings matching these words",
            "type": "string",
            "description": "Optional words to filter each seller's shop listings, e.g. \"psa 10\". Empty = all shop listings."
          },
          "maxListings": {
            "title": "Max shop listings per seller",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many shop listings of each seller are returned at most. Up to 2,000.",
            "default": 50
          },
          "includeReviews": {
            "title": "Include buyer reviews",
            "type": "boolean",
            "description": "The seller's buyer reviews, newest first: overall, shipping, packaging and accuracy scores, review text, the seller's reply, the reviewer's public username and the date.",
            "default": false
          },
          "maxReviews": {
            "title": "Max reviews per seller",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many reviews of each seller are returned at most, newest first. Up to 2,000.",
            "default": 50
          },
          "oldestReviewDate": {
            "title": "Only reviews newer than",
            "type": "string",
            "description": "Optional. A date (2026-10-01) or a period back from now (\"30 days\", \"12 hours\", \"2 weeks\"). Reviews older than this are not returned, and reading stops at the first older review. Empty = no date limit."
          },
          "startUrls": {
            "title": "Whatnot URLs",
            "type": "array",
            "description": "Paste Whatnot links: a profile (https://www.whatnot.com/user/<name>, read like a seller username above), a show (https://www.whatnot.com/live/<show id>), a listing (https://www.whatnot.com/listing/<listing id>) or a search (https://www.whatnot.com/search?query=<words>&searchVertical=PRODUCT, LIVESTREAM or USER, sorted by best match). Leave empty to skip.",
            "items": {
              "type": "string"
            }
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only new or changed results",
            "type": "boolean",
            "description": "Off = every result comes back each run, charged per row. On = the Actor remembers what it returned for each search term, seller or URL and, on later runs, returns only new results (a new listing, a newly scheduled show, a new review, a new seller in a search) and, with the setting below, results whose price, status or stats changed, with the previous value. The first run returns everything once to set the baseline. In monitoring mode every result read costs a small check fee, changed or not, plus the row price for the rows returned. Do not put the same input in two schedules that can run at the same time.",
            "default": false
          },
          "changeOn": {
            "title": "In monitoring mode, return a result when",
            "enum": [
              "new-or-changed",
              "new-only"
            ],
            "type": "string",
            "description": "new-or-changed = when it is new, or when a listing's price, current bid, status or quantity, a show's status, start time or title, or a seller's followers, items sold, rating or review count changed. new-only = only results not returned before.",
            "default": "new-or-changed"
          },
          "resetMonitoringState": {
            "title": "Forget what was remembered and start over",
            "type": "boolean",
            "description": "Clears everything remembered by monitoring runs of this Actor in your account, so the next monitoring run returns every result once again. Turn it off again after one run: left on in a schedule, every run returns everything and charges for it.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}