Discover/Poshmark API
live

Poshmark APIposhmark.com

Search Poshmark listings by keyword. Returns title, price, brand, size, condition, seller, sold status, and more. Filter by availability and sort order.

Endpoint health
verified 13h ago
search_listings
1/1 passing latest checkself-healing
Endpoints
1
Updated
14h ago

What is the Poshmark API?

The Poshmark API exposes 1 endpoint — search_listings — that returns up to 48 listing objects per call from Poshmark's catalog. Each listing object carries 10+ fields including title, current price, original price, brand, size, condition, seller username, sold status, and a direct listing URL. You can filter results to active listings, sold listings, or both, and sort by the same options available on the Poshmark site.

This call costs1 credit / call— charged only on success
Try it
1-based page number of the result set.
Result ordering, mirroring the site's Sort By menu.
Keyword(s) to search listings for, e.g. one shape is a brand plus item type.
Listings per page; values above 48 are clamped to 48.
Which listings to include by sale state: active only, sold only, or both.
api.parse.bot/scraper/e9b947d0-5c07-4b4a-8d39-adba426f8fc2/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/e9b947d0-5c07-4b4a-8d39-adba426f8fc2/search_listings?sort=just_in&query=nike+hoodie&per_page=5' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 poshmark-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: Poshmark listings search — browse, filter, and inspect results."""
from parse_apis.poshmark_com_api import Poshmark, SortOrder, Availability, InputFormatInvalid

client = Poshmark()

# Search for recent Nike hoodies, capped at 5 results
for listing in client.listings.search(query="nike hoodie", sort=SortOrder.JUST_IN, limit=5):
    print(listing.title, f"${listing.price}", listing.size, listing.condition)

# Find the cheapest available dress and drill into its details
cheapest = client.listings.search(
    query="summer dress",
    sort=SortOrder.PRICE_LOW_TO_HIGH,
    availability=Availability.AVAILABLE,
    limit=1,
).first()

if cheapest is not None:
    print(cheapest.title, f"${cheapest.price}", cheapest.brand)
    print("seller:", cheapest.seller_username)
    print("likes:", cheapest.like_count, "comments:", cheapest.comment_count)
    if cheapest.original_price is not None:
        print(f"was ${cheapest.original_price}, now ${cheapest.price}")
    print(cheapest.listing_url)

# Browse sold listings to gauge market prices
for sold in client.listings.search(
    query="lululemon align",
    availability=Availability.SOLD,
    per_page=10,
    limit=10,
):
    print(sold.title, f"sold at ${sold.price}", sold.first_published_at)

# Graceful handling of bad filter values
try:
    client.listings.search(query="bag", sort="not_a_sort").first()
except InputFormatInvalid as e:
    print("rejected:", e.message)

print("exercised: listings.search with sort / availability / pagination / error handling")
All endpoints · 1 totalmissing one? ·

Searches Poshmark listings by keyword and returns one page of matching listings (one row per listing). One round trip per call. Pagination is page-based: `page` (default 1) and `per_page` (default 48, the site's page size; larger values are clamped to 48) select the window, and `has_more` reports whether the site offers a further page. `total_results` is the site's own match count and is capped by the site at 5000; when the keyword has no exact matches the site returns loosely related listings, so an empty `listings` array is rare. `sort` defaults to the site's relevance order (relevance ordering can vary slightly between calls; price/date sorts are stable and tile cleanly across pages). `availability` defaults to active listings only; `sold` returns only sold listings and `all` mixes both — `is_sold` and `inventory_status` on each row tell them apart. `price` and `original_price` are numeric amounts in the `currency` shown per row (USD observed); `original_price` is null when the seller did not provide one. `condition` is the site's raw code and is null when unset: observed codes are `nwt` (new with tags), `not_nwt`, `ug`, `uln`, `uf` (pre-owned grades). `listing_url` is the public listing page. Invalid `sort`/`availability` values or a non-positive `page`/`per_page` return a stale_input error.

Input
ParamTypeDescription
pageinteger1-based page number of the result set.
sortstringResult ordering, mirroring the site's Sort By menu.
queryrequiredstringKeyword(s) to search listings for, e.g. one shape is a brand plus item type.
per_pageintegerListings per page; values above 48 are clamped to 48.
availabilitystringWhich listings to include by sale state: active only, sold only, or both.
Response
{
  "type": "object",
  "fields": {
    "page": "integer page number served",
    "sort": "sort code applied",
    "query": "the keyword searched, trimmed",
    "has_more": "boolean, true when the site offers a further page",
    "listings": "array of listing objects: id, title, price (number), original_price (number or null), currency, brand, size, condition (site code or null), seller_username, inventory_status, is_sold (boolean), department, category, colors (array of names), like_count, comment_count, image_url, listing_url, first_published_at (ISO datetime or null)",
    "per_page": "integer page size applied after clamping",
    "availability": "availability code applied",
    "total_results": "site-reported match count (integer, capped at 5000 by the site)"
  },
  "sample": {
    "data": {
      "page": 1,
      "sort": "relevance",
      "query": "nike hoodie",
      "has_more": true,
      "listings": [
        {
          "id": "6aac267aebb1a559c86964e8",
          "size": "XXL",
          "brand": "Nike",
          "price": 21,
          "title": "Men's Nike Hoodie",
          "colors": [
            "Black"
          ],
          "is_sold": true,
          "category": "Shirts",
          "currency": "USD",
          "condition": "ug",
          "image_url": "https://di2ponv0v5otw.cloudfront.net/posts/2026/09/17/6aac267aebb1a559c86964e8/m_6aac2690c9ddec15d72d7b87.jpg",
          "department": "Men",
          "like_count": 2,
          "listing_url": "https://poshmark.com/listing/Men-s-Nike-Hoodie-6aac267aebb1a559c86964e8",
          "comment_count": 0,
          "original_price": null,
          "seller_username": "budralston",
          "inventory_status": "sold_out",
          "first_published_at": "2026-09-17T10:45:36-07:00"
        },
        {
          "id": "6a76aa3356502be0bcf0ad44",
          "size": "XL",
          "brand": "Nike",
          "price": 44,
          "title": "NWT Nike Hoodie",
          "colors": [
            "Blue"
          ],
          "is_sold": true,
          "category": "Shirts",
          "currency": "USD",
          "condition": "nwt",
          "image_url": "https://di2ponv0v5otw.cloudfront.net/posts/2026/08/07/6a76aa3356502be0bcf0ad44/m_6a76aa4397098856fdb48c5b.jpg",
          "department": "Men",
          "like_count": 0,
          "listing_url": "https://poshmark.com/listing/NWT-Nike-Hoodie-6a76aa3356502be0bcf0ad44",
          "comment_count": 0,
          "original_price": null,
          "seller_username": "suburbgems",
          "inventory_status": "sold_out",
          "first_published_at": "2026-08-07T21:03:19-07:00"
        }
      ],
      "per_page": 3,
      "availability": "sold",
      "total_results": 5000
    },
    "status": "success"
  }
}

About the Poshmark API

What the API Returns

The search_listings endpoint accepts a query string and returns a paginated array of matching listings. Each object in the listings array includes: id, title, price (as a number), original_price (number or null when not set), currency, brand, size, condition (the site's own condition code), seller username, a sold boolean, and the full listing_url. The response envelope also echoes back query, page, per_page, sort, availability, has_more, and total_results.

Filtering and Pagination

The availability parameter controls which sale states are returned: active-only, sold-only, or both. The sort parameter mirrors the Sort By menu on the Poshmark site. Pagination uses page (1-based) and per_page; values of per_page above 48 are clamped to 48, matching the site's own page size. The has_more boolean tells you whether a subsequent page exists, and total_results gives the site-reported match count, capped at 5,000 by Poshmark regardless of actual inventory depth.

Practical Query Shapes

A typical query combines brand and item type — for example, query=lululemon leggings — to target a specific product segment. Because original_price is returned alongside price, you can compute discount depth per listing. Sold listings can be isolated with the availability parameter, making the endpoint suitable for historical pricing analysis within the 5,000-result cap.

Reliability & maintenanceVerified

The Poshmark API is a managed, monitored endpoint for poshmark.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when poshmark.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 poshmark.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.

Last verified
13h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Track resale price trends for a specific brand by querying sold listings and comparing price against original_price.
  • Monitor active inventory levels for a keyword segment using availability=active and total_results.
  • Build a price-alert tool that polls a search query and flags new listings below a target price.
  • Aggregate condition distribution (new, like-new, good, etc.) across listings for a product category.
  • Identify discount depth by computing the spread between original_price and price across sold comps.
  • Feed a deal-finding bot that surfaces active listings by seller username for specific search terms.
  • Benchmark resale velocity by comparing active versus sold listing counts for a given keyword.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Poshmark have an official developer API?+
Poshmark does not publish a public developer API or official API documentation as of mid-2025. There is no registered-developer program or publicly documented REST/GraphQL surface available for third-party use.
What does the `availability` parameter actually filter, and what values does it accept?+
The availability parameter selects which listings appear in results based on sale state. You can request active-only listings (items still for sale), sold-only listings (completed sales), or both combined. Sold listings are useful for pulling historical transaction prices, while active filters focus on current inventory.
Why is `total_results` capped at 5,000 even for broad queries?+
Poshmark's own search interface caps the reported match count at 5,000 regardless of how many listings actually match. This cap is imposed by the source, not by the API. For broad queries, you will see total_results of 5,000 even when actual inventory is larger. Narrowing your query or using the availability filter will produce more accurate counts for targeted segments.
Can I retrieve a single listing's full details — photos, description, comments, or seller profile — through this API?+
Not currently. The API covers keyword search results and returns the summary fields available in that context: title, price, original price, brand, size, condition, seller username, sold status, and listing URL. Full listing details such as photos, item descriptions, buyer comments, and seller profile stats are not included. You can fork this API on Parse and revise it to add a listing-detail or seller-profile endpoint.
How deep can I paginate into results for a given query?+
You can paginate through up to 5,000 results (the site-reported cap), using page and per_page (max 48 per page). That means at most approximately 104 pages per query. The has_more boolean in each response tells you whether a subsequent page exists so you can stop without making an extra empty call.
Page content last updated . Spec covers 1 endpoint from poshmark.com.
Related APIs in MarketplaceSee all →
mercari.com API
Search for used and secondhand items across Mercari's marketplace to find products, prices, and seller listings that match your interests. Discover available inventory and compare secondhand goods from various categories all in one place.
grailed.com API
Access Grailed's fashion resale marketplace: search listings by designer, category, size, and condition; retrieve listing details, seller profiles and reviews; and browse categories, popular designers, and curated collections.
ricardo.ch API
Search and browse marketplace listings across Ricardo.ch, Switzerland's largest online marketplace, with powerful filtering by category and sorting options including price, relevance, recency, and auction activity. Quickly discover products tailored to your interests and find the best deals based on your preferred search criteria.
vinted.com API
Access data from vinted.com.
vinted.pl API
Search and browse second-hand clothing listings on Vinted Poland to find affordable pre-owned items based on your preferences. Filter through available inventory on vinted.pl to discover deals on fashion and accessories from individual sellers.
vinted.co.uk API
Search and browse Vinted UK listings to compare prices, view detailed product information, and track pricing trends across categories. Get instant access to live marketplace data including search results, item details, and price intelligence for competitive shopping analysis.
ebay.com API
Search and monitor eBay listings across any category, with support for active and completed/sold listings. Retrieve item details, pricing history, seller profiles and feedback, and category data. Filter by keyword, category, condition, seller, and sort order to support price research, market analysis, and inventory monitoring.
shpock.com API
Search and browse products listed on Shpock.com, view detailed listing information and seller profiles, and explore all available marketplace categories. Find what you're looking for by searching inventory, checking seller histories, and discovering related items from individual merchants.