ThredUp APIthredup.com ↗
Search ThredUp's secondhand inventory, retrieve full product details, and get autocomplete suggestions. Filter by brand, category, condition, size, and more.
What is the ThredUp API?
The ThredUp API provides 3 endpoints for searching and retrieving secondhand fashion data from ThredUp's catalog. The search_products endpoint returns paginated item arrays with fields like brand, price, size, materials, category, and photos, and supports filters for department, condition, and sort order. Use get_product_details to pull a full item record by item number or URL, including MSRP, colorNames, measurements, and photoIds.
curl -X GET 'https://api.parse.bot/scraper/dd8f10c6-1a27-4d23-99c0-9037d6a1587d/search_products?page=1&sort=recommended&brand=Nike&limit=5&query=dress&category=dresses&department=women' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace thredup-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.thredup_secondhand_fashion_api import ThredUp, Sort, Department
client = ThredUp()
# Search for dresses sorted by lowest price in the women's department
for item in client.items.search(query="dress", department=Department.WOMEN, sort=Sort.PRICE_LOW):
print(item.title, item.brand, item.price, item.size_display)
break
# Get full details for a specific item
detail = client.items.get(item_number="220010202")
print(detail.title, detail.brand, detail.price, detail.availability)
print(detail.color_names, detail.materials)
# Search autocomplete suggestions
for suggestion in client.suggestions.search(query="nike"):
print(suggestion.search_term, suggestion.department)
for tag in suggestion.segment_tags:
print(tag.type, tag.value)
Search for secondhand fashion items with filters and sorting. Returns paginated results from ThredUp's catalog. Supports filtering by department, category, brand, and condition. Results include pricing, materials, photos, and sustainability metrics. Pagination via page number; total_count indicates the full result set size but the API caps at 10001.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| sort | string | Sort order for results |
| brand | string | Brand name filter |
| limit | integer | Number of results per page |
| query | string | Search keyword (e.g., 'dress', 'nike shoes') |
| category | string | Category filter (e.g., 'dresses', 'tops', 'shoes') |
| condition | string | Item condition filter |
| department | string | Department filter |
{
"type": "object",
"fields": {
"page": "integer current page number",
"items": "array of item objects with brand, category, price, size, materials, photos, sustainability metrics",
"amount": "integer number of results requested",
"total_count": "integer total number of matching items",
"filters_applied": "object showing which filters were applied"
},
"sample": {
"data": {
"page": 1,
"items": [
{
"id": 218007787,
"msrp": 223,
"brand": "AE77",
"price": "77.99",
"title": "Ae77 Cocktail Dress",
"category": "Cocktail Dress",
"photoIds": [
"867412128",
"867412172",
"867412267"
],
"materials": [
"100% COTTON"
],
"colorNames": [
"Green"
],
"itemNumber": 220010202,
"newWithTags": false,
"qualityType": "very_good",
"sizeDisplay": "Size S",
"availability": "InStock"
}
],
"amount": 5,
"total_count": 10001,
"filters_applied": {
"department_tags": [
"women"
]
}
},
"status": "success"
}
}About the ThredUp API
Endpoints and Data Coverage
The search_products endpoint accepts a query string alongside optional filters: brand, category, department (women, girls, boys), condition, sort (recommended, price_low, price_high, newest), page, and limit. Each response includes a total_count integer for the full result set, a filters_applied object reflecting active filters, and an items array where each object carries brand, category, price, size, materials, and photo references.
Product Detail Fields
get_product_details accepts either an item_number string or a full product_url. The response includes msrp (estimated retail price as a number), price (current listed price), title, condition code, materials array, colorNames array, category, and photoIds. This endpoint is the right choice when you need the full record for a specific item rather than search-result summaries.
Autocomplete Suggestions
get_search_suggestions takes a single required query string and returns a suggested object containing a defaultResult and a results array of typeahead suggestions. Each suggestion carries segment tags indicating whether the match is a brand, category, or department — useful for building search interfaces that guide users toward well-formed queries before they hit the full search endpoint.
Pagination and Filtering Notes
Pagination is controlled by the page and limit parameters on search_products. The total_count field lets you calculate total pages on the client side. Filters are composable: you can combine brand, category, department, and condition in a single request, and filters_applied in the response confirms which were active.
The ThredUp API is a managed, monitored endpoint for thredup.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when thredup.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official thredup.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a price-comparison tool that tracks current ThredUp prices against
msrpfor specific brands and categories. - Create a secondhand deal-finder app filtering by
condition,price_lowsort, anddepartmentto surface the cheapest items. - Power a wardrobe resale tracker that pulls full product records via
get_product_detailsusing item numbers. - Implement a fashion search autocomplete UI using segment-tagged suggestions from
get_search_suggestions. - Aggregate inventory data by brand and category across multiple pages to analyze ThredUp's catalog depth.
- Monitor specific brand availability (e.g., set
brandfilter) for resale arbitrage research. - Build a materials-conscious fashion app filtering results and displaying
materialsarrays to highlight natural fibers or sustainable fabrics.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ThredUp have an official public developer API?+
What does `get_product_details` return beyond what `search_products` provides?+
get_product_details returns the full item record including msrp (estimated retail price), photoIds array, colorNames, materials, condition code, and itemNumber as an integer. The search_products endpoint returns summarized item objects suitable for listing views, while get_product_details is suited for single-item detail pages where you need the complete field set.Can I filter search results by size or price range?+
search_products endpoint currently supports filters for brand, category, department, condition, sort, page, and limit. Explicit size and price-range filter parameters are not exposed in the current API. You can fork this API on Parse and revise it to add those filter parameters.Does the API cover seller profiles or user reviews for items?+
How does pagination work in `search_products`, and is there a maximum page depth?+
page integer and limit integer parameters. The response includes total_count so you can calculate the total number of pages client-side. No maximum page depth is documented in the API spec, but very high page numbers may return empty items arrays once the result set is exhausted.