GSA Auctions Scraper for Federal Surplus avatar

GSA Auctions Scraper for Federal Surplus

Pricing

$2.25 / 1,000 auction lots

Go to Apify Store
GSA Auctions Scraper for Federal Surplus

GSA Auctions Scraper for Federal Surplus

Search the current public GSA Auctions inventory for federal surplus lots. Filter by keywords, states, statuses, agencies, ZIP codes, categories, dates, or current bid, then get normalized lot data and official detail links.

Pricing

$2.25 / 1,000 auction lots

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

🏛️ GSA Auctions federal surplus lots

Fleet buyers, surplus resellers, procurement teams, and researchers can search the current public GSA Auctions inventory and get normalized lot rows with official detail links. Review published IDs, dates, locations, agencies, bid signals, and priority so you can decide which lots need a closer look. This Actor does not place bids or complete purchases.

📦 Current GSA Auctions lot data

Dataset rows

Each saved row is one normalized GSA Auctions lot. It includes the published sale and lot IDs, name, status, official detail link, auction dates, property location, selling agency, and bidding details when the source publishes them. The priority value is a source-derived signal based on closing urgency and published bidding context.

If the same source lot matches more than one submitted keyword, state, or other value, the first eligible match is saved and later matches are ignored. The saved row describes that first match.

▶️ Search or watch current lots

Run steps

  1. Choose Search current inventory or Watch selected lots.
  2. For a search, add any keywords, states, statuses, agencies, ZIP codes, categories, dates, or current-bid ceiling you need.
  3. For a watchlist, enter the published lot IDs you want to check.
  4. Start the run and open the dataset to review the saved lots and their official detail links.

One run uses one search scope. You can submit lists of same-kind keywords or states, but the Actor does not combine several independent searches in one run.

⚙️ Input

Input fields

FieldTypeWhat it does
findLotsBystringChoose search for current inventory or watchlist for selected lot IDs.
keywordsarray of stringsOptional words to find in item or lot names. Leave empty to search all current public GSA Auctions lots.
statesarray of stringsOptional property or sale states. Use state names or two-letter state codes.
statusesarray of stringsOptional auction status values used by GSA Auctions.
agenciesarray of stringsOptional selling agency or bureau names.
propertyZipCodesarray of stringsOptional five-digit property ZIP codes.
categoriesarray of stringsOptional source categories or asset types.
auctionStartDatestringOptional first date in the auction date range.
auctionEndDatestringOptional last date in the auction date range.
maximumCurrentBidnumberOptional current-bid ceiling in US dollars. Lots with no published current bid are still included.
lotIdsarray of stringsPublished GSA sale or lot IDs to watch when findLotsBy is watchlist.

The search option uses the search fields. The watchlist option uses lotIds; fields in the other section are ignored for the selected choice. This input has no actor-defined row-count limit. With optional search filters left empty, it searches all current public lots until the source is exhausted.

Example input

The following is the public input from a successful default search run:

{
"findLotsBy": "search",
"keywords": [
"vehicle"
]
}

🧾 Output

Dataset link

The dataset output opens the matched GSA Auctions lots in the Apify dataset.

Auction lot fields

FieldTypeWhat it does
datasetstring URLLink to the Apify dataset that contains the matched lot rows.
lotIdstringPublished identifier for the auction lot.
saleIdstringPublished identifier for the sale that contains the lot.
namestringPublished name of the item or lot.
detailUrlstring URLOfficial GSA Auctions page for the lot.
statusstringAuction status published by the source.
prioritystringSource-derived priority based on closing urgency and published bidding context.
auctionobjectPublished auction dates, when available.
auction.startDatestring date-timeDate and time when the auction starts.
auction.endDatestring date-timeDate and time when the auction ends.
propertyLocationobjectPublished property location, when available.
propertyLocation.addressstringPublished street address.
propertyLocation.citystringPublished property city.
propertyLocation.statestringPublished property state.
propertyLocation.zipCodestringPublished property ZIP code.
agencyobjectPublished selling agency, when available.
agency.namestringPublished selling agency name.
biddingobjectPublished bidding details, when available.
bidding.currentBidnumberPublished current or high bid in US dollars, when available.
bidding.bidderCountintegerPublished number of bidders.
bidding.reserveStatusstringPublished reserve signal.
bidding.bidIncrementnumberAmount added for the next bid increment in US dollars.

Example auction lot

This genuine row came from a successful search run using the vehicle keyword:

{
"lotId": "406381",
"saleId": "31QSCI26590",
"name": "2004 Ford F-350",
"detailUrl": "https://gsaauctions.gov/auctions/preview/377270",
"status": "Active",
"priority": "high",
"auction": {
"startDate": "2026-09-24T11:00:00.000Z",
"endDate": "2026-10-01T11:00:00.000Z"
},
"propertyLocation": {
"address": "5020 Tuttle Creek Blvd",
"city": "Manhattan",
"state": "KS",
"zipCode": "66502"
},
"agency": {
"name": "PPMS"
},
"bidding": {
"currentBid": 3677,
"bidderCount": 8,
"reserveStatus": "Reserve met",
"bidIncrement": 100
}
}

Optional values are included only when the source publishes them. A missing optional value means the source did not provide it for that lot.

💳 Pricing

Charge event

The gsa-auction-lot-returned event charges $0.00225 for each normalized auction lot saved to your dataset. The final amount depends on the number of saved lots.

🔌 Integrations

The output is an Apify dataset. Use its built-in exports or the Apify API to read the saved lot rows after a run.

❓ FAQ

What happens if the source does not publish a current bid?

The lot can still be returned. The optional bidding.currentBid field is omitted when no current bid is published, while other published bidding fields may still be present.

Can I search with several keywords or states?

Yes. Add same-kind values to keywords or states to keep one search scope focused on the values you submit.

What does the watchlist choice do?

Set findLotsBy to watchlist and enter published values in lotIds. The Actor returns the selected lots and tracks current bid changes when the source publishes them.

How are duplicate matches handled?

The first eligible occurrence of a source lot is saved. If that lot matches another submitted value later, the later match is ignored.

Does this Actor place bids or buy lots?

No. It searches public GSA Auctions inventory and returns source-backed lot data. You review the official detail link and handle any auction action yourself.

How do I check a matched lot?

Open detailUrl in the dataset row. It points to the official GSA Auctions detail page for that lot.

What happens when search filters are empty?

Empty optional filters let the search cover all current public GSA Auctions lots until the source is exhausted. Narrow the search with keywords or other fields when you need a smaller set.

📝 Changelog

v0.0 (26-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré