ShopGoodwill Real Time Scraper — Live Thrift & Resale Data avatar

ShopGoodwill Real Time Scraper — Live Thrift & Resale Data

Pricing

from $1.00 / 1,000 results

Go to Apify Store
ShopGoodwill Real Time Scraper — Live Thrift & Resale Data

ShopGoodwill Real Time Scraper — Live Thrift & Resale Data

Live ShopGoodwill thrift & vintage intelligence: keyword search, full listing details, closet inventory, seller profiles, sold comps, and URL collection. Stream structured JSON to your dataset in real time, push Slack/Discord deal alerts, and feed pricing bots or AI agents.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Emmanuel

Emmanuel

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

ShopGoodwill Real Time Scraper

Live ShopGoodwill thrift & vintage market intelligence — keyword search, full listing details, closet inventory, seller profiles, sold comps, and URL collection. Structured JSON streamed to your dataset in real time, one row per product.

⚠️ Free-tier notice: non-paying Apify accounts are limited to a 2-result free trial per run. Upgrade to any paid Apify plan for unlimited exports (see Free tier limits).

Built for:

  • Vintage & thrift resellers sourcing undervalued inventory (Poshmark, eBay, Depop, Mercari cross-listers)
  • Resale arbitrageurs flipping thrift finds for margin
  • Consignment shop owners tracking competitor stock and regional supply
  • Fashion market researchers & pricing teams running comps and sell-through analysis
  • AI agents that need structured resale data via the Apify MCP server

✨ What you can do with it

  • Find undervalued thrift & vintage inventory — scan live ShopGoodwill auctions for vintage single-stitch tees, designer denim, Carhartt workwear, gorpcore Patagonia/Arc'teryx, and Y2K streetwear before anyone else bids.
  • Price comps & sell-through analysis — pull completed auctions from the last 1–30 days to calculate real market comps, resale margins, and sell-through rates for any niche.
  • Closet inventory monitoring — track the full live inventory of any Goodwill region ("closet") and get alerted the moment new stock drops.
  • Instant Slack/Discord deal alerts — every record can be pushed to a webhook the moment it is collected.
  • Multi-platform pricing sync — pipe structured rows straight into Sheets, Airtable, Zapier, Make, n8n, or your own pricing bot.
  • Regional sourcing — ShopGoodwill inventory is listed by Goodwill region, so you can source by region and estimate local pickup savings.

🧩 Feature matrix

FeatureWhat it returnsRow featureType
🔍 Listing SearchLive keyword search cards (price, title, brand, size, watchers/bids, condition, ending-soon flags)listing_search
➕ Enrich with full detailsMerges into the same search row: full description, fabric/material tags, style tags, full image gallery, item specifics, shipping discounts (detailsFetched: true)listing_search
📦 Listing DetailsFull records for specific listing IDs or URLslisting_details
👕 Closet ListingsA Goodwill region's full live inventory, paginatedcloset_listings
🏪 Seller ProfileRegion stats: items listed, rating, location, bioseller_profile
🧾 Sold Item CompsCompleted auctions for market comps & sell-throughsold_comps
🔗 Scrape By URLAuto-detected item / search / seller / category URLsscrape_by_url

One product = one row, always. Enrichment never creates duplicates or filters items out — every discovered item goes to the dataset, whether or not full details were available.


🚀 Quick start

  1. Click Start with the prefilled input — the actor searches three thrift keywords (carhartt detroit jacket, levis 501 jeans, patagonia fleece) at 10 results each so you get instant results in seconds.
  2. Optional: switch on Enrich with full listing details for richer rows (adds a little extra time per listing to enrich full product details).
  3. Optional: paste a Webhook URL for real-time alerts.

Example search recipes

GoalKeywords & settings
Flippable workwearcarhartt detroit jacket, sort: Most bids, Buy It Now only: off
Vintage denimlevis 501 jeans, size filter: 32x32, min price: $5, max price: $40
Gorpcore gearpatagonia fleece, arc teryx shell, sort: Newest first
Y2K streetwearvintage nike center swoosh, y2k jersey, sort: Newest first
Designer for cheapcoach leather bag, max price: $60, Buy It Now only: on
Regional sourcingenable Closet Listings with the region's seller ID

📥 Full input schema

FieldTypeDefaultNotes
enableListingSearchbooleantrueLive keyword search.
searchKeywordsstring[]["carhartt detroit jacket", "vintage 90s levis 501", "patagonia fleece"]One or more search terms.
searchMaxResultsinteger (1–200)10Max results per keyword — defaults to 10 for fast instant demo runs.
searchSortselectnewestrelevance, newest, ending-soonest, price-low, price-high, most-bids.
searchBrandstring–e.g. Carhartt, Levi's, Patagonia. Folded into the search text.
searchSizestring–e.g. M, XL, 32x32, 9.5.
searchConditionstring–Keep only listings whose stated condition contains this word (e.g. Excellent).
searchMinPrice / searchMaxPriceinteger–Price range in USD.
searchBuyNowOnlybooleanfalseOnly fixed-price Buy-It-Now listings.
searchFetchFullDetailsbooleanfalseEnrich with full listing details — merges description, fabric/material tags, style tags, full image gallery, and seller shipping discounts into the same row (detailsFetched: true).

📦 Listing Details

FieldTypeDefaultNotes
enableListingDetailsbooleanfalseFetch full records for specific listings.
listingIdsstring[]–Numeric listing IDs (90001) or full item URLs (https://shopgoodwill.com/item/90001).

👕 Closet Listings

FieldTypeDefaultNotes
enableClosetListingsbooleanfalseScrape a Goodwill region's live inventory.
sellerIdsstring[]–Seller (region) IDs — shared with Seller Profile & Sold Comps.
closetMaxListingsinteger (1–1000)50Max items per closet.
closetCategoriesstring[]–Optional category IDs to narrow the closet.

🏪 Seller Profile

FieldTypeDefaultNotes
enableSellerProfilebooleanfalseRegion stats & bio details.
sellerIdsstring[]–Same list as above.

🧾 Sold Item Comps / History

FieldTypeDefaultNotes
enableSoldCompsbooleanfalseCompleted auctions for comps & margins.
soldKeywordsstring[]–Optional keywords (e.g. carhartt jacket).
soldDaysBackinteger (1–30)7How much history to scan.
soldMaxItemsinteger (1–1000)50Max completed listings.

🔗 Scrape By URL

FieldTypeDefaultNotes
enableScrapeByUrlbooleanfalsePaste any ShopGoodwill URL.
scrapeUrlsstring[]–Item, search, seller, or category URLs.
scrapeMaxPagesinteger (1–20)3How many result batches to collect per search/closet URL.

⚙️ Delivery

FieldTypeDefaultNotes
webhookUrlstring–Optional additional real-time push per record (Slack, Discord, Zapier, Make, n8n, custom bot).
webhookFormatselectjsonjson (full record) or slack (message payload).

Result volume is controlled by each feature's own limits — searchMaxResults per keyword, closetMaxListings per closet, soldMaxItems, scrapeMaxPages, and the size of your ID/URL lists. There is no separate global cap to configure.

🌐 Connection

FieldTypeDefaultNotes
proxyConfigurationobjectApify Residential, USResidential proxies deliver the most reliable results at scale. Match the country to your target market.

📤 Full output schema

Every dataset row is one of the featureType values above. Common fields:

Pricing & value

FieldTypeDescription
pricenumber | nullCurrent price (highest bid or the listed price).
currentBidnumber | nullCurrent auction bid.
startingBidnumber | nullAuction starting bid.
buyItNowPricenumber | nullBuy-It-Now price when available.
originalPricenumber | nullEstimated retail price, when the marketplace provides it.
discountPercentnumber | nullDiscount vs estimated retail (0–100).
isOnSaleboolean | nullPriced below estimated retail.
currencystringAlways USD.
shippingCostnumber | nullListed shipping cost.
freeShippingbooleanFree / one-cent shipping offer.
shippingDiscountsobject | nullCombined-shipping discount offers from the seller (enriched runs).

Product

FieldTypeDescription
title, shortDescription, fullDescriptionstring | nullListing text (fullDescription on details/enriched rows).
brandstring | nullDetected brand (thrift-tuned dictionary: Carhartt, Levi's, Patagonia, Nike, designer names…).
sizestring | nullDetected size (letter, waist×inseam, shoe).
conditionstring | nullStated condition.
color, materialstring | nullDetected from title/description (fabric tags).
styleTagsstring[]Vintage / y2k / gorpcore / workwear / single-stitch / military / designer signals.
category, subCategory, categoryPathstring | nullMarketplace category.
itemSpecificsobject | nullParsed specifics (enriched runs).
imageUrl, imageUrlsstring, string[]Main image and full gallery.
isLotbooleanLot/bundle listing.
quantitynumber | nullUnits available.

Auction timing & engagement

FieldTypeDescription
listingTypestringauction, buy_it_now, auction_bin, stock.
bidCountnumber | nullNumber of bids.
likesnumber | nullWatchlist count (the thrift equivalent of likes) where available.
viewsnumber | nullView count.
startTime, endTime, soldAtstring | nullISO timestamps.
isEndingSoonbooleanEnds in under 1 hour — perfect for sniping alerts.
isNewlyListedbooleanListed in the last 24 hours.
isSoldboolean | nullTrue on completed-auction rows.

Seller

FieldTypeDescription
sellerName, sellerIdstring | nullGoodwill region name/ID.
sellerRating, sellerLocation, sellerItemsCount–Region stats where available.
goodwillRegion, itemLocationstring | nullRegional sourcing info.

Row metadata

FieldTypeDescription
featureTypestringWhich feature produced the row.
scrapedAtstringISO timestamp of the row.
urlstringSource URL.
positionnumber | nullPosition within the search/page.
detailsFetchedbooleanTrue when the search row was enriched in place.
pageTypestringDetected type on URL rows.

🔔 Webhook integration guide

Every record is always saved to the dataset. The webhook is an additional real-time push — perfect for deal alerts.

Slack

  1. In Slack: Apps → Incoming Webhooks → Add to workspace, copy the webhook URL.
  2. Paste it into Webhook URL, set Webhook format to slack.
  3. Each record arrives as a formatted message: title, type, price, brand, seller, and a link.

Discord

  1. Channel settings → Integrations → Webhooks → New Webhook, copy the URL.
  2. Use format json — Discord renders the JSON payload; or use a small relay (Zapier/Make) for pretty embeds.

JSON receivers / automation tools

  1. Point Webhook URL at Zapier, Make, n8n, or your own pricing bot.
  2. Use format json — the full record is delivered exactly as it appears in the dataset.
  3. Filter on featureType and isEndingSoon: true to trigger only hot alerts (e.g. rare thrift items ending within the hour).

🤖 MCP / AI agent usage

This actor works with the Apify MCP server so Claude Desktop, Cursor, LangChain, or any MCP client can call it as a tool.

  1. In your MCP config, add the Apify MCP server and your API token.
  2. Expose this actor's tool (shopgoodwill-real-time-scraper).
  3. Ask natural-language questions, e.g.:
    • "What is the average sold price for a 90s Carhartt J97 jacket?" — enable Sold Item Comps, then let the agent aggregate price over sold_comps rows filtered by brand/style tags.
    • "Find Patagonia fleece under $20 ending in the next hour." — Listing Search with searchMaxPrice, watching isEndingSoon.
    • "Which Goodwill region has the most vintage Levi's denim right now?" — Closet Listings across several sellerIds.

Example agent input:

{
"enableSoldComps": true,
"soldKeywords": ["carhartt detroit jacket"],
"soldDaysBack": 14,
"soldMaxItems": 100
}

💰 Free tier limits

PlanBehavior
Free (not paying)Capped at 2 results per run (default). Upgrade message in the run log; clean exit, no errors.
Any paid planUnlimited output, no caps.

Notes:

  • The cap is configurable by the actor owner via Console environment variables (FREE_TIER_MAX_ITEMS, FREE_TIER_MODE=limit|block).
  • In block mode, free accounts get 0 results with a clear upgrade message.
  • The run's OUTPUT object always discloses the gate: paywall: { detected, isPaying, pricingTier, limited, blocked, freeTierMaxItems }.

❓ FAQ

Which proxies should I use? Residential proxies (default: Apify Residential, US) give the most reliable results at scale. The connection country can be set per run; US is the marketplace's home market.

Why do I only get 2 results? You are on the free Apify plan. Free runs are capped at 2 results as a trial. Upgrade to any paid Apify plan for unlimited exports — the actor tells you in the run log when the cap applied.

How fresh is the data? Every run collects live data in real time. For monitoring, schedule the actor (e.g. every 15 minutes) and use webhooks to get alerted the moment new thrift finds drop.

Am I rate limited? The actor paces itself: bounded parallel workers plus small randomized pauses between keyword batches. Keep searchMaxResults within the documented ranges and it will stay well behaved even on long 10,000+ item runs.

Does enriching with full details duplicate my rows? No. Enrichment merges full description, fabric/material tags, style tags, the full image gallery, and shipping discounts into the same row (detailsFetched: true). One product = one row, always.

Can I track a specific Goodwill region's inventory? Yes — Closet Listings takes the region's seller ID (visible in any ShopGoodwill seller page URL) and returns its full live inventory, paginated.

How do I calculate sell-through rate? Pull Sold Item Comps for your keyword over N days, then divide sold count by live inventory from Listing Search with the same keyword. The styleTags and brand fields make aggregation trivial.

Why did a run return fewer rows than my keywords × results-per-keyword? The marketplace matches all words in a phrase, so very specific phrases (e.g. vintage 90s levis 501) can match zero listings. The actor handles this for you — it retries transient empty pages, switches to a fresh connection, and finally retries the keyword with filler words stripped (e.g. levis 501), logging delivered via fallback phrase when that kicks in. For the most predictable counts, keep phrases to 2–3 meaningful words.

Is my use case allowed? Collect publicly available marketplace listing data for pricing research, sourcing, and analytics is the intended use. Respect the marketplace's terms and applicable law in your jurisdiction.


🛠️ Support & changelog

  • Bugs or feature requests: open an issue on the actor's GitHub repository or contact via the Apify Store page.
  • v1.0 — initial release: search, in-place enrichment, listing details, closet listings, seller profiles, sold comps, URL scrape, streaming dataset output, webhooks (JSON & Slack), free-tier gating.

This actor provides structured catalog intelligence with fast per-item collection. It is not affiliated with Goodwill Industries International or ShopGoodwill.