{
  "openapi": "3.0.1",
  "info": {
    "title": "Whatnot Scraper — Listings, Sellers & Shop Inventory",
    "description": "Scrape whatnot.com — live-shopping marketplace listings and sellers — prices · bids · conditions · card attributes (Set · Grade · Year) · seller ratings · sold counts & full shop inventory. Incremental mode tracks new and changed listings across scheduled runs.",
    "version": "0.1",
    "x-build-id": "MeBu2LaEPPfIacVsa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blackfalcondata~whatnot-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blackfalcondata-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/blackfalcondata~whatnot-scraper/runs": {
      "post": {
        "operationId": "runs-sync-blackfalcondata-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/blackfalcondata~whatnot-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-blackfalcondata-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": {
          "searchKeywords": {
            "title": "🔍 Search Keywords",
            "type": "array",
            "description": "One or more search terms. Each keyword produces an independent set of results.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "📂 Category Slugs",
            "type": "array",
            "description": "One or more Whatnot category slugs (e.g. \"trading-cards\", \"sneakers\"). Leave empty to search across all categories.",
            "items": {
              "type": "string"
            }
          },
          "sellerUrls": {
            "title": "👤 Seller Profile URLs",
            "type": "array",
            "description": "Whatnot seller profile URLs (e.g. https://www.whatnot.com/user/bob). The actor scrapes all active listings in each seller's shop.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 Start URLs",
            "type": "array",
            "description": "Direct listing URLs or search result pages to scrape. Useful for targeting specific items or saved searches.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingType": {
            "title": "🏷️ Listing Type",
            "enum": [
              "all",
              "auction",
              "buy_now"
            ],
            "type": "string",
            "description": "Filter by transaction type: all types, auctions only, or fixed-price buy-now listings only.",
            "default": "all"
          },
          "status": {
            "title": "📌 Listing Status",
            "enum": [
              "active",
              "live",
              "sold",
              "all"
            ],
            "type": "string",
            "description": "Filter by listing status: active listings, currently-live shows, sold listings, or all.",
            "default": "active"
          },
          "condition": {
            "title": "🏅 Condition",
            "type": "string",
            "description": "Filter by item condition (e.g. \"new\", \"like_new\", \"good\", \"fair\"). Leave empty for all conditions."
          },
          "priceMin": {
            "title": "💵 Min Price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Minimum listing price in US dollars. Listings below this price are excluded."
          },
          "priceMax": {
            "title": "💵 Max Price (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Maximum listing price in US dollars. Listings above this price are excluded."
          },
          "sort": {
            "title": "📊 Sort Order",
            "enum": [
              "best_match",
              "newest",
              "ending_soonest",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "How to sort the results: best match, newest listings, ending soonest (auctions), price low-to-high, or price high-to-low.",
            "default": "best_match"
          },
          "onlyLive": {
            "title": "📡 Live Shows Only",
            "type": "boolean",
            "description": "When enabled, return only listings attached to a currently live show.",
            "default": false
          },
          "minDiscountPercent": {
            "title": "🔖 Min Discount %",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Minimum discount percentage (0–100). Only listings with at least this discount are included."
          },
          "offerableOnly": {
            "title": "🤝 Offerable Listings Only",
            "type": "boolean",
            "description": "When enabled, only include listings where the seller accepts offers.",
            "default": false
          },
          "quantityMin": {
            "title": "📦 Min Quantity",
            "minimum": 1,
            "type": "integer",
            "description": "Minimum available quantity. Only listings with at least this many units in stock are included."
          },
          "maxItems": {
            "title": "💯 Max Items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum total listings to return (0 = unlimited). Applies across all sources combined.",
            "default": 0
          },
          "maxListingsPerSeller": {
            "title": "🏪 Max Listings per Seller",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum listings to collect from each seller's shop (0 = unlimited).",
            "default": 0
          },
          "maxSellers": {
            "title": "👥 Max Sellers",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of sellers to process from sellerUrls (0 = all provided sellers).",
            "default": 0
          },
          "includeSellerProfiles": {
            "title": "👤 Include Seller Profiles",
            "type": "boolean",
            "description": "Fetch and emit the seller's full profile (bio, follower count, ratings, social links) alongside their listings.",
            "default": false
          },
          "includeListingDetails": {
            "title": "📋 Include Listing Details",
            "type": "boolean",
            "description": "Fetch the full listing detail page for each result — adds full description, all images, condition notes, and structured attributes.",
            "default": true
          },
          "includeProductAggregates": {
            "title": "📈 Include Product Aggregates",
            "type": "boolean",
            "description": "Add product-level price range data (min/max across all variants) when available.",
            "default": false
          },
          "descriptionFormat": {
            "title": "📝 Description Format",
            "enum": [
              "all",
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "Format for the description field: all (text + html + markdown), text only, html only, or markdown only.",
            "default": "all"
          },
          "excludeEmptyFields": {
            "title": "🚫 Exclude Empty Fields",
            "type": "boolean",
            "description": "Remove null and empty fields from the output to reduce dataset size.",
            "default": false
          },
          "includeRunMetadata": {
            "title": "🏷️ Include Run Metadata",
            "type": "boolean",
            "description": "Append run metadata (actor version, run ID, scrape timestamp) to each output record.",
            "default": false
          },
          "stateKey": {
            "title": "🔖 Tracking key",
            "type": "string",
            "description": "Optional. Names the change-tracking history this run reads and writes. Leave empty and the search itself decides, which means two runs over the same search share one history. Set different keys to track the same search separately, or reuse a key across runs to keep one continuous history."
          },
          "emitUnchanged": {
            "title": "📋 Include unchanged listings",
            "type": "boolean",
            "description": "By default a repeat run over the same search returns only what is new or has changed. Turn this on to get every matching listing every time, changed or not.",
            "default": false
          },
          "telegramToken": {
            "title": "🔑 Telegram Bot Token",
            "type": "string",
            "description": "Telegram bot token (from @BotFather). Required for Telegram notifications."
          },
          "telegramChatId": {
            "title": "💬 Telegram Chat ID",
            "type": "string",
            "description": "Telegram chat or channel ID (e.g. \"-100123456789\"). Required when telegramToken is set."
          },
          "discordWebhookUrl": {
            "title": "🎮 Discord Webhook URL",
            "type": "string",
            "description": "Discord incoming webhook URL. Server Settings → Integrations → Webhooks → New Webhook."
          },
          "slackWebhookUrl": {
            "title": "💼 Slack Webhook URL",
            "type": "string",
            "description": "Slack incoming webhook URL. api.slack.com/messaging/webhooks."
          },
          "notificationLimit": {
            "title": "📊 Max Items Per Notification",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of listings included in each notification message (1–20).",
            "default": 5
          },
          "notifyOnlyChanges": {
            "title": "🔄 Notify Only New/Updated",
            "type": "boolean",
            "description": "Only send notifications for NEW and UPDATED listings when incremental mode is active.",
            "default": false
          },
          "whatsappAccessToken": {
            "title": "📱 WhatsApp Access Token",
            "type": "string",
            "description": "WhatsApp Cloud API permanent access token (System User token from Meta Business)."
          },
          "whatsappPhoneNumberId": {
            "title": "📞 WhatsApp Phone Number ID",
            "type": "string",
            "description": "Your WhatsApp Business phone-number ID (numeric, from Meta dashboard). Required when whatsappAccessToken is set."
          },
          "whatsappTo": {
            "title": "📲 WhatsApp Recipient",
            "type": "string",
            "description": "Recipient phone in E.164 format without + (e.g. \"436641234567\")."
          },
          "webhookUrl": {
            "title": "🪝 Generic Webhook URL",
            "type": "string",
            "description": "Receives a JSON POST with {metadata, items} after each run. Works with n8n, Make, Zapier, and custom backends."
          },
          "webhookHeaders": {
            "title": "📋 Webhook Headers",
            "type": "object",
            "description": "Optional JSON object of custom HTTP headers sent with the webhook (e.g. {\"Authorization\":\"Bearer ...\"})."
          },
          "appConnector": {
            "title": "Send results to Notion (or another connected app)",
            "type": "string",
            "description": "Optional. Pick a connected app under Settings → API & Integrations to receive your results. Notion is supported today (a run-summary page); other MCP connectors are best-effort as Apify expands its catalog."
          },
          "mcpIssueTeam": {
            "title": "Issue tracker team",
            "type": "string",
            "description": "Only when the connected app is an issue tracker: the team (name or ID) the summary issue is created under, if that app requires one."
          },
          "maxResults": {
            "title": "💯 Max Results",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of listings to return per run. Set to 0 for unlimited.",
            "default": 25
          },
          "compact": {
            "title": "📦 Compact Output (for AI / MCP)",
            "type": "boolean",
            "description": "Return only core fields. Reduces payload size for LLM pipelines and agent tools.",
            "default": false
          },
          "includeDetails": {
            "title": "📋 Include Full Listing Details",
            "type": "boolean",
            "description": "Fetch the detail page for each listing to retrieve the full description text and contact information. Increases run time and cost. Leave off for a fast, low-cost run.",
            "default": false
          },
          "query": {
            "title": "🔍 Search Term(s)",
            "type": "string",
            "description": "Listing search keywords. Enter a single term or a JSON array for multi-query runs."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}