# ThredUp Scraper (`parseforge/thredup-scraper`) Actor

Scrape ThredUp clothing listings by search query and department. Returns each product as a flat row with price, brand, size, condition, and direct link.

- **URL**: https://apify.com/parseforge/thredup-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Lead generation, Marketing
- **Features:** Limited permissions
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $19.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### ThredUp Scraper

**Scrape ThredUp product listings from any search query, up to a million items per run.** Each product comes with its price, brand, size, condition, and direct link. No login or API key. Export to CSV, JSON, Excel, or XML.

ThredUp is the largest online thrift store, listing millions of secondhand clothing items across women's, men's, and kids' departments. Manually browsing for specific brands, sizes, or trending styles is slow and makes it hard to spot deals before they sell out. This ThredUp scraper reads the public search results directly, so you can collect exactly the product data you need in one structured dataset.

| Who uses it | What they scrape ThredUp for |
|---|---|
| Resellers | Find underpriced brand-name clothing to flip on other marketplaces. |
| Bargain shoppers | Monitor new arrivals for a specific brand or size and catch the best deals first. |
| Market analysts | Track pricing trends, brand availability, and inventory turnover in the secondhand fashion market. |
| Fashion bloggers | Discover unique vintage pieces and current thrift trends to feature in content. |

### What it does

This Actor collects ThredUp product listings by keyword search and returns each item as a flat row with its price, brand, size, condition, and listing URL.

- 🔍 **Keyword search:** enter any product name, brand, or style like 'Nike sneakers', 'vintage Levi jeans', or 'cocktail dress'.
- 👚 **Department filter:** narrow results to Women, Men, or Kids departments, or search across all departments at once.
- 📦 **Bulk collection:** set a maximum from 1 up to 1,000,000 products per run, so you control the volume.
- 🔗 **Direct listing links:** every row includes the product URL so you can open the listing in one click.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with ThredUp data

**💰 Find reselling inventory.**

A reseller searches for 'Patagonia fleece' across all departments, collects 500 listings, and filters by lowest price to identify items with the best flip margin.

**👗 Track a favorite brand.**

A shopper runs a daily scrape for 'Eileen Fisher linen' in the Women's department to get notified the moment new pieces are listed in her size.

**📊 Analyze secondhand pricing.**

A market researcher scrapes thousands of listings for 'designer handbags' to build a pricing model showing how brand, condition, and age affect resale value.

**🧵 Source vintage fashion.**

A stylist searches for '1970s dress' and 'vintage blazer' to curate a collection of unique pieces for an editorial photoshoot.

### Why choose this scraper

| | What you get |
|---|---|
| **No API registration** | ThredUp has no public API. This scraper reads the live search results without needing an account or token. |
| **Structured output** | Every product is returned in a consistent flat schema, ready for spreadsheets, databases, or analysis tools. |
| **Catch deals early** | Run the scraper on a schedule to spot new listings at low prices before other buyers find them. |

### Configure the run

Drive the Actor with a search query and an optional department filter, and only matching products reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
 "searchQuery": "dresses",
 "maxItems": 10
}
```

A larger pull:

```json
{
 "searchQuery": "dresses",
 "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.021 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $2.10 |
| 1,000 results | $21.00 |
| 10,000 results | $210.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [ThredUp Scraper](https://apify.com/parseforge/thredup-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to ThredUp through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/thredup-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your search query is spelled correctly and is not too narrow. Try removing the department filter or using a more general keyword. ThredUp's inventory rotates quickly, so a very specific query may have no matches at the moment.

**The scraper stopped before reaching my max items.**

The Actor stops when ThredUp has no more results for your query. If you expected more items, try a broader search term or remove the department filter to expand the result set.

**Some product fields are empty in my dataset.**

ThredUp listings do not always include every detail. If a seller did not provide the original price or a specific size, those fields will be blank. This is expected and reflects the listing as it appears on the site.

**The run is taking a long time.**

Large max item counts mean more pages to visit. Reduce the maximum items if you need faster results, or let the run complete. Apify's infrastructure handles the scaling automatically.

**Prices in my dataset look different from the website.**

ThredUp occasionally runs site-wide sales or promotions that change displayed prices. The Actor captures the price shown at the moment of scraping. Run it again to get current pricing.

### FAQ

| Question | Answer |
|---|---|
| Do I need a ThredUp account to scrape? | No. This Actor reads the publicly accessible search results pages. No login, account, or API key is required. |
| What data does the scraper return for each product? | Each row includes the product title, brand, price, original price, size, condition, department, image URL, and the direct link to the listing on ThredUp. |
| Can I filter by size or brand? | The Actor currently supports filtering by keyword search and department. To narrow by size or brand, include those terms in your search query, for example 'Nike sneakers size 8'. |
| How many products can I scrape in one run? | You can set the maximum from 1 up to 1,000,000 products. The Actor stops when it reaches your limit or when no more results match your query. |
| Is it legal to scrape ThredUp? | This Actor only accesses publicly available pages. You are responsible for complying with ThredUp's terms of service and applicable laws in your jurisdiction. |
| Can I run this on a schedule? | Yes. Use Apify's built-in scheduler to run the Actor hourly, daily, or weekly. Each run collects fresh listings that match your search. |
| What export formats are supported? | You can export your dataset to CSV, JSON, Excel, XML, or RSS, or push it directly to a database or cloud storage via Apify integrations. |
| Does the scraper handle sold-out items? | The Actor returns whatever listings appear in ThredUp's public search results. If an item has sold, it typically disappears from search and will not appear in your dataset. |
| Can I scrape a specific category like 'shoes' or 'handbags'? | Include the category name in your search query. For example, searching 'leather handbags' will return relevant listings from across the site. |
| What if my search returns no results? | Try a broader search term, remove the department filter, or check that your spelling matches how items are listed on ThredUp. The platform's inventory changes constantly, so a term that works today may return different results tomorrow. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by ThredUp Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword to search for (e.g. 'dresses', 'Nike sneakers', 'vintage Levi jeans')

## `maxItems` (type: `integer`):

How many products to collect per run.

## `department` (type: `string`):

Filter by department

## Actor input object example

```json
{
  "searchQuery": "dresses",
  "maxItems": 10,
  "department": ""
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": "dresses",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/thredup-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQuery": "dresses",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/thredup-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "dresses",
  "maxItems": 10
}' |
apify call parseforge/thredup-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/thredup-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/vJ7nGNhaglVQ566GQ/builds/rmXKwvoypdOPglBsZ/openapi.json
