Poshmark closet
A seller's public Poshmark closet: profile (name, picture, header image, bio, city and state, website, joined and last active dates, listing, follower, following and share counts, orders shipped, items sold and five-star ratings) and the closet's listings (same fields as search: price and original price, brand, size, condition, category, colors, status, likes, comments, images and dates). Filter by brand, size, condition, sold listings, color and a price range, and sort; applied_filters echoes the filters used. Pass next_cursor back as cursor; null on the last page.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
usernamerequired | string | Closet username, or a poshmark.com/closet URL. Example: rebag |
sort | relevance | added_desc | price_asc | price_desc | like_count | relevance (default), added_desc, price_asc, price_desc or like_count. |
brand | string | Brand name(s), comma-separated. |
size | string | Size(s), comma-separated, e.g. M or 9.5. |
condition | string | nwt, ret, uln, ug, gd, fr or not_nwt (comma-separated). |
sold | boolean | true for the closet's sold listings (default: available listings). |
color | string | Color(s), comma-separated: Red, Pink, Orange, Yellow, Green, Blue, Purple, Gold, Silver, Black, Gray, White, Cream, Brown or Tan. |
price_min | number | Lowest price in USD. |
price_max | number | Highest price in USD. |
limit | integer | Listings per page, 1-100 (default 48). |
cursor | string | Pass next_cursor from the previous response. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/poshmark/v1/closet?username=rebag" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/poshmark/v1/closet",
params={"username": "rebag"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/poshmark/v1/closet");
url.searchParams.set("username", "rebag");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).