{
  "openapi": "3.0.1",
  "info": {
    "title": "Poshmark Scraper: Sold Comps, Closet Revenue & Price Alerts",
    "description": "Study any Poshmark seller's closet: estimated sold revenue, sales pace, and days to sell. Pull sold comps and listings by keyword, brand, or category. Track price drops, new listings, newly sold items, restocks, and removals on a schedule. No login.",
    "version": "0.2",
    "x-build-id": "131aDw3QRCwdon9CP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~poshmark-closet-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-poshmark-closet-monitor",
        "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/getascraper~poshmark-closet-monitor/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-poshmark-closet-monitor",
        "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/getascraper~poshmark-closet-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-poshmark-closet-monitor",
        "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": {
          "usernames": {
            "title": "Seller usernames",
            "maxItems": 20,
            "type": "array",
            "description": "Public Poshmark closet usernames to study or monitor. Do not include an @ prefix. Leave empty to search the marketplace only.",
            "items": {
              "type": "string"
            }
          },
          "closetUrls": {
            "title": "Public closet URLs",
            "maxItems": 20,
            "type": "array",
            "description": "Optional full URLs such as https://poshmark.com/closet/elm_closet. URLs are combined with seller usernames.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search keywords",
            "maxItems": 20,
            "type": "array",
            "description": "Keywords to search across all of Poshmark, such as lululemon align. Each keyword is one source.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Search, brand, or category links",
            "maxItems": 20,
            "type": "array",
            "description": "Optional Poshmark search, brand, or category links copied from your browser, filters included.",
            "items": {
              "type": "string"
            }
          },
          "brandNames": {
            "title": "Brands",
            "maxItems": 10,
            "type": "array",
            "description": "Brand names to follow, such as Nike or lululemon athletica.",
            "items": {
              "type": "string"
            }
          },
          "categoryPaths": {
            "title": "Categories",
            "maxItems": 10,
            "type": "array",
            "description": "Poshmark categories written as Department-Category, such as Women-Dresses or Men-Shoes.",
            "items": {
              "type": "string"
            }
          },
          "soldComps": {
            "title": "Sold comps",
            "type": "boolean",
            "description": "Return sold listings instead of items for sale for the keywords, links, brands, and categories above. Closets keep using the inventory statuses below.",
            "default": false
          },
          "availabilityFilters": {
            "title": "Inventory statuses",
            "type": "array",
            "description": "Choose which public closet status views to read as listing rows. Add Sold out to get newly sold events and sold prices for each listing.",
            "items": {
              "type": "string",
              "enum": [
                "available",
                "coming_soon",
                "coming_soon_and_available",
                "sold_out",
                "not_for_sale"
              ],
              "enumTitles": [
                "Available",
                "Coming soon",
                "Coming soon and available",
                "Sold out",
                "Not for sale"
              ]
            },
            "default": [
              "available"
            ]
          },
          "brand": {
            "title": "Brand filter",
            "type": "string",
            "description": "Optional case-insensitive brand text filter applied to each listing."
          },
          "category": {
            "title": "Category filter",
            "type": "string",
            "description": "Optional text filter matched against the listing department or category."
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "number",
            "description": "Optional lower price bound in the currency returned by Poshmark."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "number",
            "description": "Optional upper price bound in the currency returned by Poshmark."
          },
          "maxItems": {
            "title": "Maximum listings",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum distinct listings across all sellers and status views. The default is bounded for predictable scheduled runs.",
            "default": 100
          },
          "maxPages": {
            "title": "Maximum pages per status",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum public closet pages fetched for each seller and status filter. Each page contains up to 48 listings.",
            "default": 20
          },
          "diffMode": {
            "title": "Change mode",
            "enum": [
              "snapshot",
              "delta"
            ],
            "type": "string",
            "description": "snapshot emits unchanged rows too; delta emits only new, updated, price-drop, newly sold, restocked, or removed rows.",
            "default": "snapshot"
          },
          "deltaChangeTypes": {
            "title": "Changes to return",
            "type": "array",
            "description": "In changes-only mode, return only these change types. Leave empty for all. Every change is still remembered for the next run.",
            "items": {
              "type": "string",
              "enum": [
                "new",
                "updated",
                "price_drop",
                "newly_sold",
                "removed"
              ],
              "enumTitles": [
                "New listings",
                "Other updates",
                "Price drops",
                "Newly sold",
                "Removed"
              ]
            }
          },
          "minPriceDropPercent": {
            "title": "Minimum price drop",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Price cuts smaller than this percentage are reported as updates instead of price drops. Use it to alert only on real markdowns."
          },
          "includeClosetSummary": {
            "title": "Closet sales summary",
            "type": "boolean",
            "description": "Adds one summary row per closet: items sold and visible sold revenue in the last 30 days, median sold price, average days to sell, top brands, sell-through, and public seller numbers with their change since your last run. Covers the whole closet, ignoring the listing filters above. Each summary is billed as one closet summary.",
            "default": true
          },
          "maxSoldPagesForSummary": {
            "title": "Sold pages for the summary",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many pages of the sold view to read for each closet summary (48 listings per page). Large closets may need more pages for a complete 30-day picture; the summary row says when the scan was incomplete.",
            "default": 50
          },
          "includeListingDetails": {
            "title": "Listing details",
            "type": "boolean",
            "description": "Open each returned listing to add all of its photos and the shipping price. Takes longer, about one extra page per listing, and each listing with details is billed separately.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Turn on an Apify proxy if Poshmark starts refusing requests from your runs. Pages loaded through the residential group are billed per page; datacenter proxies add no charge.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}