Urban Outfitters APIurbanoutfitters.com ↗
Search Urban Outfitters products, browse categories, and get color/size stock levels via 4 endpoints. Real-time prices, sale counts, and availability data.
What is the Urban Outfitters API?
The Urban Outfitters API provides 4 endpoints covering product search, category browsing, detailed product data, and sale inventory. The get_product_details endpoint returns per-color, per-size stock availability — including which sizes are in stock — alongside brand, price, and a full product URL. search_products accepts keyword queries with sorting and pagination controls so you can pull structured catalog data at scale.
curl -X GET 'https://api.parse.bot/scraper/d1270442-5389-40c1-b12f-7b07cc190faf/search_products?size=24&sort=price-asc&query=dresses&start=0' \ -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 urbanoutfitters-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.
"""Walkthrough: Urban Outfitters SDK — search, browse categories, check stock."""
from parse_apis.urban_outfitters_api import UrbanOutfitters, Sort, ProductNotFound
client = UrbanOutfitters()
# Search for dresses sorted by price, take first 5 results
for item in client.productsummaries.search(query="dresses", sort=Sort.PRICE_ASC, limit=5):
print(item.name, item.price, item.slug)
# Drill into a single product's full details (colors + stock)
product_summary = client.productsummaries.search(query="jackets", limit=1).first()
if product_summary:
detail = product_summary.details()
print(detail.name, detail.brand, detail.price)
for color in detail.colors:
print(color.name, [(s.size, s.stock) for s in color.sizes if s.available])
# Browse a category by constructing it directly
womens = client.category("womens-clothing")
for item in womens.list_products(sort=Sort.NEWEST, limit=3):
print(item.name, item.price, item.url)
# Check sale items
for item in client.productsummaries.on_sale(limit=3):
print(item.name, item.price)
# Typed error handling for a missing product
try:
bad = client.productsummaries.search(query="nonexistent-xyz-999", limit=1).first()
if bad:
bad.details()
except ProductNotFound as exc:
print(f"Product not found: {exc.product_slug}")
print("exercised: search / details / category.list_products / on_sale / ProductNotFound")
Full-text search over Urban Outfitters product catalog by keyword. Returns paginated results with product names, prices, images, and URLs. Pagination uses a start offset. Each result is a lightweight summary; use get_product_details for full color/size availability.
| Param | Type | Description |
|---|---|---|
| size | integer | Number of results per page |
| sort | string | Sort option: 'price-asc', 'price-desc', 'newest' |
| queryrequired | string | Search keyword (e.g. 'dresses', 'jackets', 'vinyl') |
| start | integer | Starting index for pagination (0-based offset) |
{
"type": "object",
"fields": {
"items": "array of product summary objects with name, id, slug, price, url, and image",
"total": "integer total number of matching products"
},
"sample": {
"data": {
"items": [
{
"id": "UO-106671548-000",
"url": "https://www.urbanoutfitters.com/shop/uo-hold-me-close-keyhole-halter-mini-dress",
"name": "UO Hold Me Close Keyhole Halter Mini Dress",
"slug": "uo-hold-me-close-keyhole-halter-mini-dress",
"image": "https://images.urbndata.com/is/image/UrbanOutfitters/106671548_010_b",
"price": 59
}
],
"total": 1344
},
"status": "success"
}
}About the Urban Outfitters API
Search and Category Browsing
The search_products endpoint accepts a required query string (e.g. 'dresses', 'jackets') and returns an array of product objects, each with name, id, price, url, and image, plus a total count of matching results. Pagination is controlled via start (offset index) and size (results per page). The sort parameter accepts values like price-asc, price-desc, and newest.
The get_category_listing endpoint works identically but takes a category_slug instead of a keyword — for example 'womens-clothing', 'mens-clothing', 'sale', or 'vinyl-records-cassettes'. It returns the same paginated product array structure and total count, making it straightforward to iterate through an entire category.
Product Details and Stock
get_product_details takes a product_slug (the URL path segment, e.g. 'floral-wrap-midi-dress') and returns a detailed object: name, brand, price, url, and a colors array. Each color object contains the color name and a sizes array, where each entry includes the size label, a stock level, and an available boolean. This is the primary endpoint for inventory checking and availability monitoring.
Sale Coverage
get_sale_item_count requires no inputs and returns the current sale product list using the same items array and total integer structure as the category endpoint. It reflects site-wide sale items and their current prices, making it useful for tracking sale depth over time or alerting on new sale additions.
The Urban Outfitters API is a managed, monitored endpoint for urbanoutfitters.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when urbanoutfitters.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 urbanoutfitters.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?+
- Monitor size and color availability for specific products using
get_product_detailsto trigger restock alerts - Build a price comparison tool by polling
search_productsacross multiple keywords and sorting byprice-asc - Track how many items are on sale over time using
get_sale_item_countto detect promotion cycles - Populate a product feed for affiliate or fashion content sites using category listings from
get_category_listing - Identify new arrivals in a category by querying
get_category_listingwithsort=neweston a schedule - Aggregate brand presence across search results by extracting the
brandfield fromget_product_detailsresponses - Build a size-specific availability checker for hard-to-find sizes using the
sizesarray in product detail responses
| 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 Urban Outfitters have an official developer API?+
What does `get_product_details` return for stock information?+
colors array where each entry has a color name and a sizes array. Each size entry includes the size label, a stock value, and an available boolean. This lets you determine, per color and size combination, whether a variant is currently in stock.Does the API return product reviews or ratings?+
Are product descriptions or detailed copy included in any endpoint?+
get_product_details returns structured fields — name, brand, price, URL, and color/size availability — but does not include long-form product description text. You can fork the API on Parse and revise it to add that field to the product detail response.How does pagination work across the listing endpoints?+
search_products and get_category_listing accept a start integer (the zero-based offset) and a size integer (results per page). The total field in each response tells you the full result count, so you can compute how many pages exist and iterate through them with successive start increments.