{
  "openapi": "3.0.1",
  "info": {
    "title": "ThredUp Scraper — Resale Comps & Thrift Data",
    "description": "Live ThredUp resale intelligence: search listings by keyword for price, brand, size, condition, discount and demand signals, plus full details, seller shop inventory and sold comps. Luxury finds are tagged, never filtered, so 1,000 records stay 1,000. Slack webhooks. Free trial: 2 results.",
    "version": "0.0",
    "x-build-id": "OWBBRQ2CxpfDNUi53"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/b2b_leads~ThredUp-Real-Time-Data-Scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-b2b_leads-ThredUp-Real-Time-Data-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/b2b_leads~ThredUp-Real-Time-Data-Scraper/runs": {
      "post": {
        "operationId": "runs-sync-b2b_leads-ThredUp-Real-Time-Data-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/b2b_leads~ThredUp-Real-Time-Data-Scraper/run-sync": {
      "post": {
        "operationId": "run-sync-b2b_leads-ThredUp-Real-Time-Data-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": {
          "country": {
            "title": "Region",
            "enum": [
              "US",
              "UK"
            ],
            "type": "string",
            "description": "Marketplace region. Affects pricing region and the recommended connection region.",
            "default": "US"
          },
          "enableListingSearch": {
            "title": "Listing Search",
            "type": "boolean",
            "description": "Search ThredUp by keyword. On by default — prefilled so you can click Start and get results in seconds. Output size is set by the keyword count and the per-keyword cap below, and is reported at the start of every run.",
            "default": true
          },
          "searchKeywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "One or more search terms (e.g. carhartt detroit jacket, vintage 90s levis 501, patagonia fleece). Each keyword contributes its own rows, so output grows with the number of keywords.",
            "default": [
              "carhartt detroit jacket",
              "vintage 90s levis 501",
              "patagonia fleece"
            ],
            "items": {
              "type": "string"
            }
          },
          "searchMaxResults": {
            "title": "Records per keyword",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many listings to collect for each keyword. Total output = keywords x this number, bounded by the run limit. Leave the narrowing filters below empty and this number is what you actually get.",
            "default": 10
          },
          "searchFetchFullDetails": {
            "title": "Enrich with full listing details",
            "type": "boolean",
            "description": "When on, each search result is the SAME row enriched with full product fields (description, fabric/material tags, style tags, full image gallery, measurements, seller shipping terms). Still featureType listing_search with detailsFetched=true — never a second row, and nothing is filtered out for being incomplete. Adds a little extra time per listing. Enrichment never changes how many records you get.",
            "default": false
          },
          "searchSort": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "newest_first",
              "price_low_high",
              "price_high_low",
              "marked_down_at_desc",
              "recommended"
            ],
            "type": "string",
            "description": "How to order search results. Does not change how many rows you get.",
            "default": "relevance"
          },
          "searchBrand": {
            "title": "Brand / designer (optional)",
            "type": "string",
            "description": "Optional brand filter, e.g. Carhartt. Narrows which listings exist, so your output can be smaller than the record count you asked for.",
            "default": ""
          },
          "searchDepartment": {
            "title": "Department (optional)",
            "type": "string",
            "description": "Optional department scope, e.g. women, men, kids, home. Narrows the pool.",
            "default": ""
          },
          "searchCondition": {
            "title": "Condition (optional)",
            "type": "string",
            "description": "Optional condition filter as this marketplace labels it, e.g. excellent, good, fair. Narrows the pool.",
            "default": ""
          },
          "searchMinPrice": {
            "title": "Min price (optional)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "number",
            "description": "Lowest listing price to include. Narrows the pool."
          },
          "searchMaxPrice": {
            "title": "Max price (optional)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "number",
            "description": "Highest listing price to include. Narrows the pool."
          },
          "searchListedWithinDays": {
            "title": "Listed within days (optional)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only keep recently listed inventory — ideal for deal alerts where you want fresh finds only. Narrows the pool, so leave it empty for bulk price research."
          },
          "labelLuxuryBrands": {
            "title": "Luxury brand tier labels",
            "type": "boolean",
            "description": "Tag every listing with the marketplace's own luxury brand grouping — without removing anything. Listings outside the tier are still written in full, and there are no duplicate rows. Adds a little extra time per keyword, but the record count stays exactly what you asked for, so runs stay priceable. Each listing gets brand_tier, is_luxury_brand, and a per-keyword luxury share in the run log.",
            "default": false
          },
          "labelMinDiscountPercent": {
            "title": "Discount target % (optional)",
            "minimum": 1,
            "maximum": 95,
            "type": "integer",
            "description": "Savings off retail to grade against, e.g. 30. Every listing is still exported; each row gains meets_discount_target so you can isolate deep discounts without shrinking the run. Leave empty to skip this label."
          },
          "enableListingDetails": {
            "title": "Listing Details",
            "type": "boolean",
            "description": "Fetch the full record for specific ThredUp listings by item number or URL.",
            "default": false
          },
          "listingIds": {
            "title": "Item numbers",
            "type": "array",
            "description": "ThredUp item numbers, e.g. 1500810136. Required when Listing Details is on and no URLs are given.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "listingUrls": {
            "title": "Listing URLs",
            "type": "array",
            "description": "Full ThredUp product URLs (https://www.thredup.com/product/...).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "enableClosetListings": {
            "title": "Seller Shop Listings",
            "type": "boolean",
            "description": "Collect a marketplace seller shop's full active inventory to track competitor stock. ThredUp is shop-based rather than closet-based.",
            "default": false
          },
          "sellerIds": {
            "title": "Seller shop IDs",
            "type": "array",
            "description": "ThredUp seller shop IDs. Shared by Seller Shop Listings, Seller Profile, and Sold Comps.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sellerMaxListings": {
            "title": "Max listings per shop",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many live listings to collect from each seller shop.",
            "default": 30
          },
          "enableSellerProfile": {
            "title": "Seller Profile",
            "type": "boolean",
            "description": "Shop-level profile: shop type, live inventory depth, and published completed-listing depth.",
            "default": false
          },
          "enableSoldHistory": {
            "title": "Sold Comps",
            "type": "boolean",
            "description": "Collect completed listings for comps and sell-through. ThredUp publishes no site-wide sold feed, so comps come from seller shop archives where the marketplace keeps them.",
            "default": false
          },
          "soldMaxItems": {
            "title": "Max completed listings per shop",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many completed listings to collect from each seller shop.",
            "default": 30
          },
          "enableScrapeByUrl": {
            "title": "Scrape By URL",
            "type": "boolean",
            "description": "Paste any ThredUp URL — search results, department or brand page, seller shop, or a single listing. The page type is detected automatically.",
            "default": false
          },
          "scrapeUrls": {
            "title": "ThredUp URLs",
            "type": "array",
            "description": "Any ThredUp search, department, brand, shop, or listing URL. URLs from other sites are rejected.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Run limit (total rows)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum rows to export for the whole run, across every enabled feature. 0 = no run limit (collect everything the enabled features match). Use it to bound cost on large bulk runs, e.g. 1000 for a price-research sweep.",
            "default": 0
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. Every record is always saved to the run dataset — this webhook is an ADDITIONAL real-time push. Each new row is also POSTed to this URL (Slack, Discord, Zapier, Make, n8n, custom pricing bot).",
            "default": ""
          },
          "webhookFormat": {
            "title": "Webhook format",
            "enum": [
              "json",
              "slack"
            ],
            "type": "string",
            "description": "JSON sends the full record. Slack sends a ready-to-read message.",
            "default": "json"
          },
          "proxyConfiguration": {
            "title": "Proxy settings",
            "type": "object",
            "description": "Residential proxy recommended. Match the region to the Region setting above.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}