ShopGoodwill Auction Scraper — Keyword Search, Bids & Monitor
Pricing
Pay per event
ShopGoodwill Auction Scraper — Keyword Search, Bids & Monitor
Scrape ShopGoodwill.com auctions by keyword, category, or seller — title, price, bids, end time, Buy Now, images, item URL. Optional detail enrichment (seller, pickup, bid history) plus a saved-search monitor with Slack/email/webhook alerts. No login or API key. From $4 per 1,000 items.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
🛍️ ShopGoodwill Auction Scraper & Saved-Search Monitor
Scrape live ShopGoodwill.com auctions — title, current price, bid count, end time, Buy Now price, seller, shipping, photos, and item URL — by keyword, category, seller, or price range. Then run it on a schedule as a saved-search monitor that pings Slack, email, or webhook the moment a fresh listing drops, so you bid first.
Turn ShopGoodwill into a clean dataset or a real-time deal alert. No login, no API key, no browser automation — the actor reads the site's own public JSON API and filters server-side, so you pull only the items you actually want.
What does ShopGoodwill Scraper do?
ShopGoodwill Scraper extracts thrift & charity auction listings from ShopGoodwill.com — the largest nonprofit auction site in the US, where 100+ regional Goodwill organizations auction donated jewelry, electronics, collectibles, art, instruments, fashion, and more — and returns clean, structured rows you can export to JSON, CSV, Excel, or push to your app via API.
- 🔎 Search the way the site does — keyword, category, multi-category, seller (regional Goodwill), price band, Buy-Now-only, pickup-only. All server-side.
- 💰 Live auction economics — current price, bid count, minimum next bid, starting price, Buy Now / discounted Buy Now, shipping price.
- ⏰ Time-aware — exact start/end times plus the site's own time-left countdown.
- 🏷️ Category & seller — category name + full path and the listing Goodwill's seller id (name with details on).
- 📦 Full detail enrichment (optional) — description, seller organization name, pickup city/state/zip, bid increment, bid history, reserve status, handling price, and the full-size photo gallery.
- 🕵️ Sold-price research — flip one switch to search closed auctions up to 90 days back.
- 🔔 Saved-search monitor — schedule it and get Slack / email / webhook alerts for newly listed items matching your query.
What data does it extract?
For every auction listing:
- 🆔
item_id, 🔗item_url, 🏷️title - 💵
current_price,minimum_bid,starting_price,buy_now_price,discounted_buy_now_price - 🔨
num_bids,has_bid,bid_increment,bid_history,reserve_met* - 🚚
shipping_price,handling_price,pickup_city/pickup_state* /pickup_zip* - 🏢
seller_id,seller_name,shipping_policy,pickup_policy* - 🗂️
category_id,category_name,category_path - 📝
description, 📦quantity,max_quantity, 👀views - 🖼️
image_url,gallery_url,images[]* - 📅
start_time,end_time, ⏳remaining_time - ✨
is_new(monitor mode), 🕒scraped_at
* = filled by the optional fetchDetails enrichment.
Who is it for?
- 🛒 Resellers & flippers sourcing underpriced jewelry, electronics, cameras, and collectibles.
- 💎 Niche collectors (watches, vinyl, trading cards, instruments) watching for grails the moment they list.
- 📈 Price researchers pulling closed-auction sold prices for comps and arbitrage math.
- 🤖 Deal-alert builders wiring fresh listings into Slack, Discord (via webhook), or their own apps.
- 📊 Marketplace analysts tracking volumes, categories, and price levels across regional Goodwills.
Two ways to use it
- Bulk scrape — pull every active (or recently closed) listing for a keyword, category, seller, or price band into one clean dataset.
- Saved-search monitor (the recurring play) — set
monitorMode: true, attach an Apify Schedule (e.g. every 30 min for hot keywords), and the actor emits/alerts only items new since the last run. Pair withsortBy: "newest"so fresh listings land in the scrape window first.
How to use it (step by step)
- Click Try for free.
- Enter a Search keyword (e.g.
laptop) — or leave it empty and pick a Category ID / Seller IDs to sweep a whole section. - (Optional) add filters: price range, Buy It Now only, pickup only, closed auctions.
- (Optional) turn on Fetch full details for description, seller name, pickup location, bid history, and the full gallery.
- Click Start, then open the Dataset tab to view/export.
- (Optional) set monitorMode + a Schedule + an alert channel to get pinged on new listings.
Quick start
{ "searchText": "laptop", "maxItems": 50 }
Saved-search monitor example
{"searchText": "omega seamaster","sortBy": "newest","monitorMode": true,"alertOnNewItem": true,"slackWebhookUrl": "https://hooks.slack.com/services/…"}
Sold-price research example
{"searchText": "nintendo switch","includeClosedAuctions": true,"closedAuctionDaysBack": 30,"maxItems": 200}
Input
| Field | What it does |
|---|---|
searchText | keyword to search (empty = all listings; combine with a category/seller) |
categoryId / selectedCategoryIds | one category id, or a comma list of several |
selectedSellerIds | restrict to specific regional Goodwill sellers (comma list of ids) |
priceMin / priceMax | only items in this current-price band |
buyNowOnly / pickupOnly | Buy-It-Now-able / local-pickup-only listings |
searchDescriptions | also match the keyword in descriptions |
includeClosedAuctions + closedAuctionDaysBack | search ended auctions (sold-price comps) |
sortBy | ending · newest · oldest · price-low · price-high |
fetchDetails | add description, seller name, pickup location, bid history, full gallery |
maxItems | hard cap per run (0 = unlimited) |
monitorMode, alertOnNewItem, alertOnBidChange, watchlistItemIds | recurring watcher + alerts |
webhookUrl, slackWebhookUrl, emailRecipients | alert channels |
proxyConfiguration, requestConcurrency | proxy + parallelism (datacenter is enough) |
Output
Each listing is one dataset record (fields listed above). Export to JSON, CSV, Excel, HTML, or RSS, or fetch via the Apify API. Prices are numbers in USD; start_time / end_time are the site's timestamps; remaining_time is the site's own countdown string.
Example record (truncated):
{"item_id": "266505251","item_url": "https://shopgoodwill.com/item/266505251","title": "Lenovo IdeaPad 3 15\" Linux Mint Laptop 128GB","current_price": 43.0,"num_bids": 6,"minimum_bid": 44.0,"starting_price": 14.99,"shipping_price": 0,"end_time": "2026-06-12T16:00:00","remaining_time": "1h 22m","seller_id": "43","seller_name": "Goodwill Industries of Central Texas","pickup_city": "Austin","pickup_state": "TX","category_name": "Laptops & Notebooks","category_path": "Computers & Electronics > Laptops & Notebooks","image_url": "https://shopgoodwillimages.azureedge.net/production/43/Items/…t1.jpeg","images": ["https://shopgoodwillimages.azureedge.net/production/43/Items/…1.jpg"]}
How much does it cost?
Pay-per-event — you pay for what you pull, no subscription. Suggested rates:
| Event | What it covers | Suggested price |
|---|---|---|
lot-scraped | each listing returned | ~$0.004 / item |
lot-detail-enriched | each detail-API fetch | ~$0.004 / item |
monitor-run-completed | each scheduled watch run | ~$0.05 / run |
new-lot-detected | each newly listed item | ~$0.02 / item |
alert-delivered | each Slack/email/webhook push | ~$0.005 / alert |
(Final per-event prices are set on the actor's pricing page.)
That's about $4 per 1,000 listings — and a keyword monitor that runs hourly costs a few cents a day plus the new items it actually finds.
Is it legal to scrape ShopGoodwill?
ShopGoodwill listings are public auction data, browsable without a login, and the records are item/listing data — not personal data (bid history shows only anonymized nicknames the site itself displays). Scraping publicly available listings is generally legal, but you are responsible for your use: review the current ShopGoodwill Terms of Service before commercial use or resale of the data.
FAQ
What is ShopGoodwill? ShopGoodwill.com is the official online auction marketplace of Goodwill — 100+ regional Goodwill nonprofits list donated jewelry, electronics, collectibles, art, fashion, and more, with new auctions ending every minute.
Do I need an account, login, or API key? No. The actor reads the site's public listing data directly — no account, cookies, or API key required.
Can I monitor a saved search and get alerts?
Yes. Turn on monitorMode, attach an Apify Schedule, and add a Slack/webhook/email channel. Each run emits and alerts only items new since the last run for that exact search scope.
Can I get sold prices / closed auctions?
Yes — set includeClosedAuctions: true and closedAuctionDaysBack (up to 90). Great for comps before you bid.
Can I filter by category or a specific Goodwill store?
Yes — categoryId (or selectedCategoryIds for several) and selectedSellerIds for specific regional Goodwills. Combine with keyword and price filters.
How do I find category and seller IDs? Browse shopgoodwill.com — the numeric ids appear in the category and seller page URLs. E.g. category 7 = Computers & Electronics.
Does it return photos?
Yes — every listing has image_url; turn on fetchDetails for the full-size images[] gallery.
Does it return the bid history?
Yes, with fetchDetails on — amounts, quantities, timestamps, and the site's anonymized bidder nicknames.
How fast is it? The site serves 40 listings per request from a JSON API in well under a second — 1,000 items typically take under a minute without details.
Can I scrape everything, not just one keyword?
Yes — leave searchText empty and set maxItems: 0 for an unlimited sweep (optionally scoped to a category or seller).
How do I export the data? JSON, CSV, Excel, HTML, or RSS from the Dataset tab, or via the Apify API.
Can I integrate with Make, Zapier, n8n, or my backend? Yes — use the webhook/Slack channels for alerts, or the Apify API to pipe the dataset anywhere.
You might also like
- 🏛️ Government & surplus auction scrapers (GovDeals, GSA Auctions, PublicSurplus)
- 🔨 General online auction & marketplace scrapers
- 📦 Storage-unit and estate-sale auction scrapers
Feedback
Found a missing field or want a new filter? Open an issue on the actor — fast fixes and feature requests welcome.