Poshmark Real-Time Data — Thrift & Resale Intel
Pricing
from $2.50 / 1,000 results
Poshmark Real-Time Data — Thrift & Resale Intel
Live Poshmark resale intelligence: keyword search, full product details, closet inventory, seller profiles, sold comps. Stream results in real time, get instant deal alerts via webhooks, price vintage & thrift finds with confidence. Free plan: 2 results/run.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Emmanuel
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Poshmark Real-Time Data — Live Resale Market Intelligence
Live Poshmark market data for vintage & thrift resellers: keyword listing search, full product details, closet inventory tracking, seller profiles, sold comps, and instant deal alerts. Structured JSON streams to your dataset row-by-row while the run is still working — results start appearing in seconds.
⚠️ Free Apify plan notice: Free-tier accounts are limited to 2 results per run. Upgrade to any paid Apify plan for unlimited exports. This is stated here, in the Actor input form, and in the run log — it is a policy limit, not an error.
Who this is for
- Vintage & thrift resellers sourcing undervalued inventory (Poshmark, eBay, Depop, Mercari cross-listers)
- Consignment shop owners tracking competitor closets and market prices
- Resale arbitrageurs hunting margin spreads between platforms
- Fashion market researchers & pricing intelligence teams tracking sell-through and trend data
- AI agents & automations that need structured resale market data via the Apify MCP server
What you can do with it
- Find undervalued thrift & vintage inventory — search "vintage single stitch tee", "carhartt detroit jacket", "vintage 90s levis 501", "patagonia fleece", "y2k baby tee", or "gorpcore north face" and sort by just-listed to catch fresh steals before anyone else.
- Price comps & sell-through analysis — pull completed sold listings to compute real market averages, sell-through rates, and realistic resale margins before you buy.
- Closet inventory monitoring — watch top competitors' and consignment sellers' full active stock, spot new listings and repricing moves.
- Instant Slack / Discord deal alerts — pipe every matched item to a webhook the moment it is saved, so your pricing bot or phone buzzes on newly listed steals.
- Multi-platform pricing sync — feed structured rows into Sheets, Airtable, Make, Zapier, n8n, or your own repricer.
Features
| Feature | What it does | Output (featureType) |
|---|---|---|
| 🔍 Listing Search | Live keyword search with brand, size, condition, and min/max price filters | listing_search |
| ✨ Full Details Enrichment | Adds description, fabric/material, style tags, full image gallery, and seller shipping discounts to the same search row | listing_search (detailsFetched: true) |
| 📦 Listing Details | Full record for specific listings by URL or listing ID | listing_details |
| 👚 Closet Listings | Full active inventory of any reseller/thrift closet | closet_listings |
| 👤 Seller Profile | Reseller stats: love notes, items sold, closet size, followers, verification, bio | seller_profile |
| 🧾 Sold Item Comps / History | Completed & sold listings for market comps, margins, and sell-through | sold_history |
| 🔗 Scrape By URL | Direct processing of any Poshmark URL — search, closet, category page, brand feed, or listing | scrape_by_url |
Enrichment, not filtering: when Enrich with full listing details is on, every search result stays one row and gains deep fields in place (detailsFetched: true). No duplicate rows, no dropped items — every discovered item always reaches the dataset, so your run cost stays predictable. Enrichment adds a little extra time per listing.
Quick start (10 results in seconds)
The Actor comes prefilled for an instant demo run:
- Click Start — no configuration needed.
- Defaults: Listing Search on, keywords
carhartt detroit jacket,vintage 90s levis 501,patagonia fleece, 10 results per keyword. - Watch the dataset fill row-by-row in real time.
Example thrift searches that work well
| Goal | Keywords | Filters |
|---|---|---|
| Workwear flips | carhartt detroit jacket, carhartt vest | brand: Carhartt |
| Vintage denim | vintage 90s levis 501, levis 550 orange tab | size: 32x32 |
| Gorpcore | patagonia fleece, arc'teryx shell, north face nuptse | max price: 60 |
| Y2K / streetwear | y2k baby tee, vintage nba jersey, stussy 90s | sort: just listed |
| Designer for cheap | coach vintage bag, dooney bourke | condition: NWT/NWOT |
| Band tees | single stitch band tee, vintage concert tee | max price: 40 |
Full input reference
🌍 Region
| Field | Type | Default | Notes |
|---|---|---|---|
country | select | US | Marketplace region: US, CA, UK, AU. Affects currency and the recommended proxy country. |
🔍 Listing Search (enableListingSearch, default on)
| Field | Type | Default | Notes |
|---|---|---|---|
searchKeywords | string list | 3 thrift examples | Required when search is on. Any Poshmark search term. |
searchMaxResults | integer | 10 | Max results per keyword (1–200). |
searchSort | select | relevance | relevance, newest (just listed), price_low_to_high, price_high_to_low. |
searchBrand | string | — | e.g. Carhartt, Levi's, Patagonia. |
searchSize | string | — | e.g. M, L, 32x32, 9.5. |
searchCondition | select | any | nwt, nwot, g (Good), e (Excellent), p (Poor). |
searchMinPrice / searchMaxPrice | integer | — | Price window in region currency. |
searchOnSale | boolean | false | Prefer listings marked down vs. original price. |
searchFetchFullDetails | boolean | false | Enrich with full listing details — merges description, fabric/material, style tags, full gallery, and seller shipping discounts into the same row. |
📦 Listing Details (enableListingDetails, default off)
| Field | Type | Notes |
|---|---|---|
listingUrls | string list | Full listing URLs (https://poshmark.com/listing/...). |
listingIds | string list | Listing IDs (the hex ID at the end of a listing URL). |
👚 Closet Listings (enableClosetListings, default off)
| Field | Type | Default | Notes |
|---|---|---|---|
sellerUsernames | string list | — | Closet usernames without @. Shared by Closet Listings, Seller Profile, and Sold Comps. |
sellerMaxListings | integer | 30 | Max active listings per closet (1–500). |
👤 Seller Profile (enableSellerProfile, default off)
Uses the same sellerUsernames list. One row per seller.
🧾 Sold Item Comps / History (enableSoldHistory, default off)
Uses the same sellerUsernames list.
| Field | Type | Default | Notes |
|---|---|---|---|
soldMaxItems | integer | 30 | Max sold items per seller (1–500). |
🔗 Scrape By URL (enableScrapeByUrl, default off)
| Field | Type | Notes |
|---|---|---|
scrapeUrls | string list | Any Poshmark search URL, closet URL, category page, brand feed, or single listing URL. |
Run volume
There is no single global cap — each feature section controls its own volume:
- Listing Search →
searchMaxResults(per keyword) - Closet Listings →
sellerMaxListings(per seller) - Sold Comps →
soldMaxItems(per seller) - Listing Details & Scrape By URL → the number of URLs/IDs you paste
🔔 Delivery
| Field | Type | Default | Notes |
|---|---|---|---|
webhookUrl | string | — | Optional. Every record is also POSTed here in real time. |
webhookFormat | select | json | json (full record) or slack (Slack-ready message). |
🌐 Connection
| Field | Type | Default | Notes |
|---|---|---|---|
proxyConfiguration | proxy editor | Apify RESIDENTIAL, country US | Residential connections are strongly recommended. Match the country to your Region (US / CA / GB). |
Output schema (field reference)
One dataset row per item. Filter views by featureType: listing_search, listing_details, closet_listings, seller_profile, sold_history, scrape_by_url.
Identity & links
item_id — listing ID · item_url, url — listing/closet URL · slug — URL slug · featureType — producing feature · scrapedAt — ISO timestamp · position — rank where found · pageType — detected page kind (URL feature)
Pricing
current_price · original_price (retail) · currency · discount_percentage · price_drop_amount · accepts_offers · lowest_offer_accepted (details)
Shipping
shipping_cost · shipping_discount (seller shipping promo text) · free_shipping · ships_from / ships_to · item_location · local_pickup_available
Product
title · description (full on details/enriched rows) · brand, brand_id · size · condition (New With Tags / New Without Tags / Good / Excellent / Poor) · category, department, subcategory · color, colors · style_tags (vintage, y2k, gorpcore…) · pattern · material (fabric) · item_specifics · quantity_available · hashtags · is_nwt, is_nwot, is_handmade, is_vintage, is_authentic
Images
main_image_url · additional_image_urls (full gallery on enriched/details rows)
Engagement & timing
likes_count · shares_count · comments_count · number_of_offers · is_sold · status · created_at · updated_at · sold_at · last_price_drop_at · time_since_listed · is_newly_listed (≤ 7 days)
Seller
seller_username · seller_id · seller_display_name · seller_rating · seller_love_notes_count · seller_items_sold · seller_closet_size · seller_location · seller_verified · seller_last_active · seller_response_rate · seller_bundle_discount_percentage
Seller profile rows
display_name · full_name · bio · followers · following · total_sales · total_listings · total_likes · total_earnings · rating · love_notes_count · city, state · is_verified · member_since
Run marker
detailsFetched — true when a search row was enriched in place (still one row per listing).
Webhook integration
Every record is always written to the dataset. Add webhookUrl and each record is additionally POSTed in real time — perfect for instant deal alerts.
Slack format (webhookFormat: "slack") — paste a Slack Incoming Webhook URL; messages render like:
:shopping_bags: *Vintage Carhartt Detroit Jacket Brown**Type:* listing_search • *Price:* USD 45 (was USD 98) • *Brand:* Carhartt • *Size:* L • *Condition:* Good • *Seller:* thrifthaus • 12 likes<https://poshmark.com/listing/...|Open on Poshmark>
JSON format (webhookFormat: "json") — the full record object, one POST per row. Works with Discord (via /webhooks), Zapier, Make, n8n, or your own pricing bot:
{"featureType": "listing_search","title": "Vintage Carhartt Detroit Jacket Brown","current_price": 45,"original_price": 98,"discount_percentage": 54,"brand": "Carhartt","size": "L","condition": "Good","likes_count": 12,"seller_username": "thrifthaus","item_url": "https://poshmark.com/listing/...","scrapedAt": "2026-09-26T12:00:00.000Z"}
Webhook delivery is best-effort: a slow or failing webhook URL never blocks or breaks the run or the dataset writes.
Using with AI agents (MCP)
The Actor works great through the Apify MCP server with Claude Desktop, Cursor, LangChain, or any MCP client:
- In your MCP client config, add the Apify MCP server with your
APIFY_TOKEN. - Expose this Actor as a tool (Actor ID:
~your-username/poshmark-real-time-data). - Ask natural-language questions like:
- "What is the average sold price for a 90s Carhartt J97 jacket on Poshmark?"
- "Find Patagonia fleece listings under $30 posted today and Slack me the deals."
- "Watch @topthriftcloset's inventory and tell me when they list Levis 501s under $25."
The Actor returns clean, structured rows — no cleanup needed for LLM pipelines.
Free-tier limits (paid-only features)
| Plan | Behavior |
|---|---|
| Free | Capped at 2 results per run (default). The run finishes cleanly with a clear log message — this is a policy limit, not an error. |
| Any paid plan (Bronze+) | No caps — full output. |
Owner-side configuration (Apify Console → Actor → Environment variables, not visible to users):
FREE_TIER_MODE=limit(default) orblock(free users get 0 results with an upgrade message).FREE_TIER_MAX_ITEMS=2(default).
Paying users are detected automatically from platform run context — nothing to configure per-run.
FAQ
Do I need my own proxies? No. The Actor ships preconfigured for Apify Residential proxy (US default) and includes the residential proxy charge in its pricing. You can point the proxy editor at another residential provider if you prefer, but most users should leave the defaults. Match the proxy country to the Region field (US → US, CA → CA, UK → GB).
Why did my free run stop at 2 items? That's the free-plan cap described above — it applies to every Apify Actor on the free plan. Upgrade to any paid Apify plan and the cap disappears automatically; no code or config change needed.
How fresh is the data? Every run collects live data at the moment you press Start. "Just listed" sort plus webhooks is the recommended combo for deal-alert workflows. Typical usage: schedule runs every 5–30 minutes on watchlists.
Will I get rate-limited or blocked? The Actor paces keyword work with small randomized pauses, reuses a warmed-up session, and routes through residential connections with country targeting — the same safeguards used at 10,000+ item scale. Keep concurrency defaults and it just works.
What does "Enrich with full listing details" cost me in time? It adds a little extra time per listing to hydrate full product fields in the same row. With it off you get fast search cards (price, title, brand, size, likes, condition). Either way, every discovered item is saved — items are never filtered out.
Can I track sellers instead of keywords?
Yes — Closet Listings, Seller Profile, and Sold Comps all share the sellerUsernames list. Combined with a schedule, you get a competitor inventory feed and sell-through history.
How do I compute sell-through rate? Pull Sold Comps for a seller, then divide sold items by (sold + active closet listings) for the same seller — both features use the same usernames field, so one input drives both sides of the ratio.
Is any raw source payload included? No — rows contain only the clean, structured fields documented above. There is no raw-data option and no internal payload dumps in webhooks.
Does the run timeout? Runs support up to 10,000 seconds (about 2.7 hours) per run, which covers 10,000+ item exports at default pacing. For larger volumes, run multiple scheduled passes with smaller per-section limits.
Pricing model
This Actor uses Pay-Per-Event (PPE): you are charged one result event per dataset row saved. Set a max spend per run in Apify Console — when your limit is reached, the Actor stops gracefully, writes its summary, and exits cleanly without errors.
Disclaimer
This Actor is not affiliated with, endorsed by, or sponsored by Poshmark. It provides access to publicly available marketplace information for research and business intelligence. Respect Poshmark's Terms of Service when using collected data.
Built for the thrift & resale community. Happy flipping! 🧥