{
  "openapi": "3.0.1",
  "info": {
    "title": "Poshmark Scraper: New Listing & Price Drop Alerts",
    "description": "Poshmark scraper for new listings, price drops, poshmark sold comps by brand, sell-through rate and days to sell, on poshmark.com and poshmark.ca. Price, euro price, size, condition, link. No login. Pay per listing.",
    "version": "1.0",
    "x-build-id": "0gWMTejO7DuF9Dd7i"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/accountable_eel~poshmark-listing-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-accountable_eel-poshmark-listing-lookup",
        "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/accountable_eel~poshmark-listing-lookup/runs": {
      "post": {
        "operationId": "runs-sync-accountable_eel-poshmark-listing-lookup",
        "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/accountable_eel~poshmark-listing-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-accountable_eel-poshmark-listing-lookup",
        "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",
        "required": [
          "searches"
        ],
        "properties": {
          "searches": {
            "title": "Poshmark searches (brand, \"Brand: keywords\", or a pasted brand/category link)",
            "type": "array",
            "description": "One search per line: a brand such as \"Coach\", a brand plus keywords such as \"Louis Vuitton: neverfull\", or a brand or category page link copied from poshmark.com or poshmark.ca (its own filters such as size, condition and price are kept). Brand lines run once in every country you pick below; a pasted link runs on its own site. No login required. Accepted formats: Coach: tabby, Louis Vuitton: neverfull, https://poshmark.com/brand/Coach-Women-Bags?sort_by=added_desc. You're only charged for the ones we actually find — a miss costs nothing.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Poshmark countries to search",
            "type": "array",
            "description": "One country code per line: us (poshmark.com, USD) or ca (poshmark.ca, CAD). Brand lines run once in each; prices come back in each site's own currency plus a euro conversion. Ignored for pasted links, which use their own site. Leave empty for us.",
            "items": {
              "type": "string"
            }
          },
          "testRun": {
            "title": "Try it first — only process the first 5",
            "type": "boolean",
            "description": "Turn this on to test your input on a small sample before running the full list. Turn it off to process everything.",
            "default": false
          },
          "onlyFound": {
            "title": "Hide rows with no result",
            "type": "boolean",
            "description": "Only keep rows where something was actually found. Misses are always free, whether or not you show them here.",
            "default": false
          },
          "includeKeywords": {
            "title": "Only keep rows containing",
            "type": "array",
            "description": "Optional. Only keep results that mention at least one of these words (e.g. a job title, a city, a product name). Leave empty to keep everything.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip rows containing",
            "type": "array",
            "description": "Optional. Drop any result that mentions one of these words. Leave empty to skip nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Stop after this many results",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Stop the run once this many results have been found — useful for a quick, cheap sample. Leave blank for no limit."
          },
          "category": {
            "title": "Narrow brand lines to a category (optional)",
            "type": "string",
            "description": "Optional. A Poshmark department and category as it appears in brand page links, for example Women-Bags, Women-Shoes, Men-Jackets_&_Coats or Women. \"Coach\" then reads poshmark.com/brand/Coach-Women-Bags. Ignored for pasted links.",
            "default": ""
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "newest",
              "just_shared",
              "price_drop",
              "price_low",
              "price_high",
              "most_liked"
            ],
            "type": "string",
            "description": "Poshmark's own sort options. Forced to Just In whenever monitoring is on, so every run compares the same ordering. A pasted link keeps its own sort unless monitoring is on.",
            "default": "newest"
          },
          "listingType": {
            "title": "Listings to include",
            "enum": [
              "available",
              "sold",
              "all"
            ],
            "type": "string",
            "description": "Sold listings show what an item actually sold for: useful for pricing a flip or a buy. A pasted link keeps its own availability filter.",
            "default": "available"
          },
          "maxListingsPerSearch": {
            "title": "Most listings to return per search, per country",
            "type": "integer",
            "description": "Poshmark shows 48 listings per page; the actor follows its next-page cursor up to 1,000 per search per country. You pay per listing returned, so this is also your budget control.",
            "default": 48
          },
          "includeSoldComps": {
            "title": "Include sold comps and sell-through stats",
            "type": "boolean",
            "description": "Off by default. When on, this search also fetches Poshmark's own sold_out listings for the same brand/keywords and filters, returns each sold comp as an ordinary listing row (isSold, soldAt, soldPrice, daysToSell), and adds sell-through summary columns (activeCount, soldCount, sellThroughRate, activeMedianPrice/Eur, soldMedianPrice/Eur, askVsSoldGapPct, medianDaysToSell) to every row of this search. Sold comps are billed as ordinary listings — see \"Sold comps and sell-through\" in the README.",
            "default": false
          },
          "maxSoldComps": {
            "title": "Max sold comps to fetch",
            "type": "integer",
            "description": "Only used when \"Include sold comps\" is on. Caps how many sold listings this search fetches for comps, per country. Max 200.",
            "default": 50
          },
          "minPrice": {
            "title": "Minimum price (each country's own currency)",
            "type": "integer",
            "description": "Optional. Sent to Poshmark as its own price filter and re-checked on every row, in each site's currency (dollars on poshmark.com, Canadian dollars on poshmark.ca)."
          },
          "maxPrice": {
            "title": "Maximum price (each country's own currency)",
            "type": "integer",
            "description": "Optional. Sent to Poshmark as its own price filter and re-checked on every row. Leave empty for no maximum."
          },
          "conditions": {
            "title": "Conditions to keep (optional)",
            "type": "array",
            "description": "Optional. One code per line: nwt (New With Tags), ret (Boutique), uln (Like New), ug (Good), uf (Fair), wlsl (Wholesale). Listings whose seller left the condition blank are dropped when this is set. Applied while paging, so the actor reads further pages until it has enough matches.",
            "items": {
              "type": "string"
            }
          },
          "deltaMode": {
            "title": "Only return listings that are new, or cheaper, since the last run",
            "type": "boolean",
            "description": "Turns a search into a watchlist. A listing is new when its Poshmark listing ID was not returned by a previous run of the same watchlist, and a price drop when its price fell by at least the percentage below since it was last seen. Unchanged listings are removed before you are billed, so a quiet run only costs the start fee and returns one summary row. Schedule it hourly and send the results to Discord, Slack, Telegram, Google Sheets or n8n.",
            "default": false
          },
          "deltaName": {
            "title": "Watchlist name (optional)",
            "type": "string",
            "description": "Leave empty and one is derived from this run's filters, so two schedules with different filters keep separate memories. Type your own name to keep one memory across a filter change. Naming a watchlist with the checkbox above off returns every listing but still marks each one new / price-drop / seen.",
            "default": ""
          },
          "alertOnNew": {
            "title": "Alert on new listings",
            "type": "boolean",
            "description": "With monitoring on, return listings this watchlist has never seen before.",
            "default": true
          },
          "alertOnPriceDrop": {
            "title": "Alert on price drops",
            "type": "boolean",
            "description": "With monitoring on, return listings already seen whose price has dropped since the last sighting. Sold listings never count as a price drop.",
            "default": true
          },
          "minPriceDropPct": {
            "title": "Minimum price drop to alert on (%)",
            "type": "integer",
            "description": "A listing must be at least this much cheaper than when it was last seen to count as a price drop.",
            "default": 5
          },
          "skipFirstRun": {
            "title": "Seed silently (no rows on the first run)",
            "type": "boolean",
            "description": "The first run of a watchlist has nothing to compare with. Turn this on to remember everything it finds without returning or billing it, so a webhook does not get a hundred messages on day one. Alerts start from the second run.",
            "default": false
          },
          "includeDescription": {
            "title": "Include the listing description",
            "type": "boolean",
            "description": "On by default: the seller's description as shown on the listing, with emails, phone numbers, @handles and chat links replaced by [redacted]. Turn off for smaller rows.",
            "default": true
          },
          "includeSellerInfo": {
            "title": "Include the raw Poshmark seller ID",
            "type": "boolean",
            "description": "Off by default. Every row already carries an anonymous seller hash, so you can group listings by seller without knowing who they are. Turning this on adds Poshmark's internal seller ID (sellerId); you then need a lawful reason to process it. Usernames and names are never returned.",
            "default": false
          },
          "columns": {
            "title": "Which columns do you want?",
            "type": "array",
            "description": "Choose which pieces of information to include in each result row. All are included by default.",
            "items": {
              "type": "string",
              "enum": [
                "searchQuery",
                "searchCountries",
                "listingCount",
                "totalAvailable",
                "truncated",
                "newCount",
                "priceDropCount",
                "monitorStatus",
                "activeCount",
                "soldCount",
                "sellThroughRate",
                "compsWindowDays",
                "activeMedianPrice",
                "soldMedianPrice",
                "activeMedianPriceEur",
                "soldMedianPriceEur",
                "askVsSoldGapPct",
                "medianDaysToSell",
                "listings",
                "listingId",
                "title",
                "price",
                "currency",
                "priceEur",
                "originalPrice",
                "firstListedPrice",
                "priceCutPct",
                "brand",
                "size",
                "condition",
                "category",
                "colors",
                "likeCount",
                "availability",
                "isSold",
                "country",
                "postedAt",
                "publishedAt",
                "sellerHash",
                "imageUrl",
                "url",
                "isNew",
                "changeType",
                "firstSeenAt",
                "description"
              ],
              "enumTitles": [
                "Search",
                "Countries searched",
                "Listings returned",
                "Matching on Poshmark (5000 = 5,000 or more per country)",
                "More listings were available (or a country failed)",
                "New since last run",
                "Price drops since last run",
                "Monitoring status",
                "Active listings fetched this run (sold comps only)",
                "Sold comps fetched this run (sold comps only)",
                "Sell-through rate: sold / (sold + active) (sold comps only)",
                "Span of the fetched sold comps, oldest to newest sale (sold comps only)",
                "Median asking price, local currency (sold comps only)",
                "Median sold price, local currency (sold comps only)",
                "Median asking price, EUR (sold comps only)",
                "Median sold price, EUR (sold comps only)",
                "Asking vs. sold median price gap %, computed in EUR (sold comps only)",
                "Median days from posted to sold (sold comps only)",
                "All listings found (full list)",
                "Poshmark listing ID",
                "Title",
                "Price (local currency)",
                "Currency",
                "Price in EUR (ECB daily rate)",
                "Original retail price (as the seller states it)",
                "Price when first listed",
                "Cut since first listed (%)",
                "Brand",
                "Size",
                "Condition",
                "Category",
                "Colours",
                "Likes",
                "Availability (available / sold_out / ...)",
                "Sold",
                "Poshmark country",
                "Created at",
                "Published at (Just In order)",
                "Anonymous seller ID",
                "Main photo",
                "Listing link",
                "Is this listing new?",
                "Change (new / price-drop / seen)",
                "First seen on a run",
                "Description (contacts redacted)"
              ]
            },
            "default": [
              "searchQuery",
              "searchCountries",
              "listingCount",
              "totalAvailable",
              "truncated",
              "newCount",
              "priceDropCount",
              "monitorStatus",
              "activeCount",
              "soldCount",
              "sellThroughRate",
              "compsWindowDays",
              "activeMedianPrice",
              "soldMedianPrice",
              "activeMedianPriceEur",
              "soldMedianPriceEur",
              "askVsSoldGapPct",
              "medianDaysToSell",
              "listings",
              "listingId",
              "title",
              "price",
              "currency",
              "priceEur",
              "originalPrice",
              "firstListedPrice",
              "priceCutPct",
              "brand",
              "size",
              "condition",
              "category",
              "colors",
              "likeCount",
              "availability",
              "isSold",
              "country",
              "postedAt",
              "publishedAt",
              "sellerHash",
              "imageUrl",
              "url",
              "isNew",
              "changeType",
              "firstSeenAt",
              "description"
            ]
          },
          "expandRows": {
            "title": "One row per listing (recommended) — turn off for one row per search instead",
            "type": "boolean",
            "description": "When on, each listing found gets its own row instead of being grouped under its search. You're still only charged once per search, no matter how many rows it produces.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 6,
            "type": "integer",
            "description": "Parallel requests. Keep conservative — this target has no browser fallback, so getting blocked costs more than slow-and-steady.",
            "default": 2
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy config. Residential recommended for anti-bot-sensitive targets.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}