{
  "openapi": "3.0.1",
  "info": {
    "title": "Popshop Live Scraper - Products, Prices, Stock & Live Shows",
    "description": "Scrape Popshop Live products by keyword, including prices, variants and stock availability. Extract live and upcoming shopping shows, seller profiles and top buyer reviews. Supports scheduled monitoring to track product, price, stock and show updates.",
    "version": "0.1",
    "x-build-id": "e8W8SuD1XBd1lk2vW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~popshop-live-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-popshop-live-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/abotapi~popshop-live-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-popshop-live-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/abotapi~popshop-live-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-popshop-live-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": {
          "kind": {
            "title": "What to scrape",
            "enum": [
              "products",
              "shows",
              "reviews"
            ],
            "type": "string",
            "description": "Products searches listings by keyword. Shows reads live and upcoming shows (with the seller profile embedded). Reviews reads top buyer review cards. A seller's review cards carry media shout-outs; Popshop publishes no numeric ratings.",
            "default": "products"
          },
          "queries": {
            "title": "Keywords (products / shows)",
            "type": "array",
            "description": "Only used for Products and Shows. One entry per keyword (for example dress, sneakers, kawaii). Each entry becomes its own paged search.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories (shows)",
            "type": "array",
            "description": "Only used for Shows. Category names or url codes (for example Fashion, Kawaii, designer-toys). Unknown names are skipped with the available list logged.",
            "items": {
              "type": "string"
            }
          },
          "sellers": {
            "title": "Seller handles (shows)",
            "type": "array",
            "description": "Only used for Shows. Seller vanity names (popshop.live/<name>) to filter the discovery rows by. Also accepts pasted seller links in URLs below.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Seller links",
            "type": "array",
            "description": "Seller vanity links (popshop.live/<name>) act as a Shows filter. The web app is a single-page shell: product and listing links carry no data, so only seller links resolve.",
            "default": [
              "https://popshop.live/farmhouselux",
              "https://popshop.live/kevinkaipolani"
            ],
            "items": {
              "type": "string"
            }
          },
          "showStatus": {
            "title": "Show status",
            "enum": [
              "all",
              "live",
              "upcoming"
            ],
            "type": "string",
            "description": "Only used for Shows. Live reads the currently-streaming shows; All reads live plus upcoming discovery rows.",
            "default": "all"
          },
          "pageSize": {
            "title": "Results per page",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "Page size for paged searches (products, shows). The API caps this at 40.",
            "default": 40
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "The single cap on the run: stop after collecting this many records. Set 0 for no cap.",
            "default": 20
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Leave the default for the cheapest run: the API serves the ordinary shared connection. If runs fail with connection errors, switch to residential.",
            "default": {
              "useApifyProxy": true
            }
          },
          "resumeFromRunId": {
            "title": "Continue a previous run",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue that interrupted run without returning or charging for records already collected there. For recurring monitoring of the same scope, use Recurring updates below instead."
          },
          "incrementalMode": {
            "title": "Recurring updates (only return what changed)",
            "type": "boolean",
            "description": "Turn this on for daily or recurring monitoring. The first run returns all matching records as NEW. Later runs return only NEW and UPDATED records.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, recurring updates only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its memory stable. Leave empty to key the memory on this run setup automatically."
          },
          "emitUnchanged": {
            "title": "Also return unchanged records (recurring updates only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that have not changed since the last run, marked UNCHANGED. This returns and bills extra rows you already have.",
            "default": false
          },
          "emitExpired": {
            "title": "Also return records that are gone (recurring updates only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that were present before but are no longer found, marked EXPIRED. Only produced when a run covered its whole setup.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Output field names that should NOT mark a record as UPDATED. scrapedAt is always ignored because it is stamped fresh on every fetch.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "MCP connectors",
            "type": "array",
            "description": "Optionally send records into the apps you already use through MCP connectors. Empty means no export.",
            "items": {
              "type": "string"
            }
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which record pages are created. Required to enable the Notion connector."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on records written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}