Poshmark API endpoint
Returns a Poshmark closet (seller storefront) page: the seller's public profile and reputation stats (followers, ratings, items sold) plus a first page of their currently available listings and total listing count. Pass a previous response's next_max_id back as max_id to fetch the next page of listings; paginated responses omit the seller profile, so fetch without max_id first to get seller fields.
/poshmark/closet/{username}Path parameters:
username (required) — the path segment of a /closet/{username} URL,
e.g. maltimar.Query parameters:
max_id (optional) — an opaque pagination cursor from a previous
response's next_max_id. Omit for the first page.Notable response behavior:
seller keeps only display-facing identity and reputation fields.
Poshmark's own page state carries a much larger internal user-aggregates
object alongside it (financial totals, fraud/moderation review counters,
KYC verification state, tax and email-engagement tracking, and an email
field) — none of that is ever included in this response.listings is the first page Poshmark's own closet page renders (48 items
per page), not the seller's complete inventory — total_count reports
the seller's true current listing count.next_max_id is an opaque, server-issued pagination cursor. Pass it back
as max_id on a subsequent request (with the same username) to fetch
the next page. A paginated request (one with max_id set) omits
seller (returned as empty) — Poshmark's own pagination endpoint for
a closet only returns listings, not the seller profile, so fetch without
max_id first if you need seller fields.404.| Field | Filled in, of 48 checked | Values in the sample |
|---|---|---|
| id | 48 | |
| title | 48 | “NWT Lululemon Bag” and 47 other values |
| description | 48 | “NWT Lululemon All the Essentials Kit Charcoal gray Org $48” and 47 other values |
| price | 48 | 8 to 598, median 32 |
| original_price | 48 | 40 to 799, median 118 |
| condition | 45 | nwt (34), uln (7), ug (4) |
| brand | 48 | “lululemon athletica” and 28 other values |
| category | 48 | “Bags” and 14 other values |
| department | 48 | Women (43), Men (5) |
| size | 48 | “OS” and 10 other values |
| colors | 47 | median 1 entry |
| status | 48 | published in all 48 |
| cover_shot | 48 | di2ponv0v5otw.cloudfront.net |
| like_count | 43 | 1 to 44, median 9 |
| share_count | 42 | 1 to 140, median 12 |
| inventory_status | 48 | available in all 48 |
| quantity_available | 48 | 1 |
| created_at | 48 | 2018-03-04 to 2026-10-07 |
| first_available_at | 45 | 2020-10-04 to 2026-10-07 |
| seller_username | 48 | |
| seller_display_handle | 48 | |
| seller_full_name | 48 | |
| seller_picture_url | 48 | di2ponv0v5otw.cloudfront.net |
| url | 48 | poshmark.com |
| comment_count | 6 | 1 to 2, median 2 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| username (path) | string | Yes | Poshmark seller username, the path segment of a /closet/{username} URL | maltimar | |
| max_id | string | No | Opaque pagination cursor from a previous response's next_max_id. Omit for the first page | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/poshmark/closet/maltimar" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"seller": {
"id": "5a4f84cb7d70fb0f0f05a37f",
"username": "maltimar",
"full_name": "Mary Altimar",
"followers": 9096,
"following": 89,
"posts_count": 698,
"items_sold_display": "500+",
"rating_average": 4.93,
"rating_count": 368,
"rating_breakdown": {
"five_star": 355,
"four_star": 7,
"three_star": 2,
"two_star": 3,
"one_star": 1
},
"orders_shipped": 522,
"url": "https://poshmark.com/closet/maltimar"
},
"listings": [
{
"id": "6a3fed1de9c77df92e2c0cc6",
"title": "NWT Farm Rio Shorts",
"price": 55,
"brand": "FARM Rio",
"seller_username": "maltimar"
}
],
"total_count": 107,
"has_more": true,
"source_url": "https://poshmark.com/closet/maltimar"
}
}Request schema
No body schema
Response schema
#/definitions/poshmark.ClosetResponse
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| has_more | boolean | No | true | |||
| listings | array | No | ||||
| listings[].brand | string | No | FARM Rio | Brand name of the item. | ||
| listings[].category | string | No | Shorts | Poshmark category of the item, for example `Shorts`. | ||
| listings[].colors | array | No | Red,Yellow | Colors the seller selected for the item. | ||
| listings[].comment_count | integer | No | 4 | Number of comments on the listing. | ||
| listings[].condition | string | No | nwt | Item condition code set by the seller, for example `nwt` for new with tags. | ||
| listings[].cover_shot | string | No | https://di2ponv0v5otw.cloudfront.net/posts/2026/06/27/6a3fed1de9c77df92e2c0cc6/s_6a3fed24bd4ce3ff762126e5.jpg | URL of the listing's cover photo. | ||
| listings[].created_at | string | No | 2026-06-27T08:32:58-07:00 | Time the listing was created, in ISO 8601 with a UTC offset. | ||
| listings[].department | string | No | Women | Poshmark department of the item, for example `Women`. | ||
| listings[].description | string | No | Seller's description of the item. Set on the listing detail response. | |||
| listings[].first_available_at | string | No | Time the listing first became available for sale, as Poshmark reports it. | |||
| listings[].id | string | No | 6a3fed1de9c77df92e2c0cc6 | Poshmark listing id. Use it with the listing endpoint. | ||
| listings[].inventory_status | string | No | available | Availability status of the item, for example `available`. | ||
| listings[].like_count | integer | No | 111 | Number of members who liked the listing. | ||
| listings[].original_price | number | No | 95 | Original retail price the seller entered for the item. | ||
| listings[].pictures | array | No | URLs of all photos on the listing. Set on the listing detail response. | |||
| listings[].price | number | No | 55 | Current asking price of the listing. | ||
| listings[].quantity_available | integer | No | 1 | Total number of units still available across all sizes. | ||
| listings[].seller_display_handle | string | No | maltimar | Display handle of the seller who posted the listing. | ||
| listings[].seller_full_name | string | No | Mary Altimar | Display name of the seller who posted the listing. | ||
| listings[].seller_picture_url | string | No | Profile picture URL of the seller who posted the listing. | |||
| listings[].seller_username | string | No | maltimar | Username of the seller who posted the listing. | ||
| listings[].share_count | integer | No | 13 | Number of times the listing was shared. | ||
| listings[].size | string | No | S | Size of the item as entered by the seller. | ||
| listings[].status | string | No | published | Publication status of the listing, for example `published`. | ||
| listings[].title | string | No | NWT Farm Rio Shorts | Listing title as shown on Poshmark. | ||
| listings[].url | string | No | https://poshmark.com/listing/6a3fed1de9c77df92e2c0cc6 | Poshmark page URL of the listing. | ||
| next_max_id | string | No | ||||
| seller | poshmark.Seller | No | ||||
| seller.cover_shot_url | string | No | URL of the seller's closet cover image. | |||
| seller.display_handle | string | No | maltimar | Seller's display handle on Poshmark. | ||
| seller.followers | integer | No | 9096 | Number of members following the seller. | ||
| seller.following | integer | No | 89 | Number of members the seller follows. | ||
| seller.full_name | string | No | Mary Altimar | Seller's display name. | ||
| seller.id | string | No | 5a4f84cb7d70fb0f0f05a37f | Poshmark user id of the seller. | ||
| seller.items_sold_display | string | No | 500+ | Items sold as Poshmark displays it, for example `500+`. | ||
| seller.last_active_at | string | No | 2026-08-04T19:52:16-07:00 | Time the seller was last active, in ISO 8601 with a UTC offset. | ||
| seller.member_since | string | No | 2018-01-05T05:59:39-08:00 | Time the seller joined Poshmark, in ISO 8601 with a UTC offset. | ||
| seller.orders_shipped | integer | No | 522 | Number of orders the seller has shipped. | ||
| seller.picture_url | string | No | https://di2ponv0v5otw.cloudfront.net/users/2018/04/23/5a4f84cb7d70fb0f0f05a37f/t_5ade0fdbd0492dff500c741a.jpg | URL of the seller's profile picture. | ||
| seller.posts_count | integer | No | 698 | Number of listings the seller has posted. | ||
| seller.rating_average | number | No | 4.93 | Average of the seller's star ratings, rounded to two decimals. Omitted when the seller has no ratings. | ||
| seller.rating_breakdown | object | No | Number of ratings the seller received at each star level. | |||
| seller.rating_breakdown.five_star | integer | No | 355 | Number of 5-star ratings the seller received. | ||
| seller.rating_breakdown.four_star | integer | No | 7 | Number of 4-star ratings the seller received. | ||
| seller.rating_breakdown.one_star | integer | No | 1 | Number of 1-star ratings the seller received. | ||
| seller.rating_breakdown.three_star | integer | No | 2 | Number of 3-star ratings the seller received. | ||
| seller.rating_breakdown.two_star | integer | No | 3 | Number of 2-star ratings the seller received. | ||
| seller.rating_count | integer | No | 368 | Total number of ratings the seller received. | ||
| seller.url | string | No | https://poshmark.com/closet/maltimar | Poshmark closet URL of the seller. | ||
| seller.username | string | No | maltimar | Seller's Poshmark username, as used in the closet URL. | ||
| source_url | string | No | ||||
| total_count | integer | No | 107 |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/poshmark/closet/maltimar" \
-H "x-api-key: $CRAWLORA_API_KEY"