GSA Auctions Scraper - Federal Surplus Vehicles & Equipment
Pricing
from $2.50 / 1,000 auction lots
GSA Auctions Scraper - Federal Surplus Vehicles & Equipment
Live federal surplus lots from the official GSA Auctions API: vehicles, heavy equipment, electronics and more. Lot name, current bid, bidders, auction start and end, location and agency, newest first. Filter by keyword, state, closing date and price. Sales contacts off by default.
Pricing
from $2.50 / 1,000 auction lots
Rating
0.0
(0)
Developer
Groundplane Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Security
Limited permissionsShare
Collect active federal government surplus auction lots from GSA Auctions (gsaauctions.gov) via the official GSA Personal Property Management System (PPMS) API. Filter by keyword, property state, closing window, maximum current bid, or federal agency, and automatically extract 17-character VINs and mileage/equipment hours when listed in the lot description.
Free sample
Download a free sample (5 rows, real actor output, CSV): https://drive.google.com/uc?export=download&id=1hZisWODcOQnIN2r28-GrH0GiEw8L9Z5v. Check the columns and data quality before you run anything.
What it does
The U.S. General Services Administration (GSA) sells surplus federal assets—including fleet trucks, sedans, heavy construction equipment, boats, aircraft parts, industrial machinery, and scrap metal contracts—through GSA Auctions.
This Actor:
- Fetches the full active-auctions feed from the official GSA Auctions v2 endpoint (
https://api.gsa.gov/assets/gsaauctions/v2/auctions). - Normalizes bid metrics (
currentBidUsd,bidIncrementUsd,bidderCount,reservePrice), dates (auctionStart,auctionEnd,daysUntilEnd), and property locations (city,state,zip). - Strips HTML markup from
lotInfoto produce clean plain-textdescriptionfields (trimmed to 2,000 characters) and extracts 17-character vehiclevinvalues and odometer/meterhoursOrMileswhere present. - Sorts lots either newest listed first (
NEWEST, byauctionStartdescending) or closing soonest first (ENDING_SOON, byauctionEndascending).
Who it's for
- Commercial fleet, equipment, and auto resellers sourcing undervalued federal surplus vehicles, trailers, and machinery.
- Scrap metal, recycling, and industrial liquidation buyers monitoring term contracts and bulk surplus lots by state.
- Marine and aviation brokers tracking USCG boats, engines, and aerospace surplus.
- Supply-chain and procurement analysts benchmarking secondary-market government asset recovery prices.
Input
keyword(string) — Case-insensitive keyword matched againstitemNameandlotInfo(e.g."truck","ford","tractor","boat"). Default:""(all active lots).states(array of strings) — Two-letter US state/territory codes where the property is located (e.g.["CA", "TX", "VA"]). Default:[](all states).endingWithinDays(integer) — Return only auctions closing within this many calendar days from today (0= no limit). Default:0.maxCurrentBidUsd(integer) — Return only lots whose current high bid (or $0 if unbid) is at or below this dollar threshold (0= no limit). Default:0.agencyKeyword(string) — Case-insensitive keyword matched againstagencyNameorbureauName. Default:"".sortBy(string enum) —"NEWEST"(auctionStartdescending) or"ENDING_SOON"(auctionEndascending). Default:"NEWEST".includeSalesContact(boolean) — Defaults tofalseso federal contracting officer contact fields (contractOfficer,coEmail,coPhone) are omitted unless explicitly enabled for lot inspection or bidding inquiries.- Privacy: with
includeSalesContactoff (the default), sales-officer emails and phone numbers are also removed from thedescriptiontext. dataGovApiKey(string, secret) — Optional free API key from api.data.gov. If you enter a key, the Actor uses yours. If you leave this blank, the Actor uses its configured account key when one is attached; otherwise it falls back to the publicDEMO_KEY, which api.data.gov limits per IP address (about 30 requests per hour and 50 per day), so heavy or scheduled use should add your own free key. The completed run status names which kind of key was used (never the key itself).maxItems(integer) — Maximum number of lots to return. Default:200.
Example input JSON
{"keyword": "","states": [],"endingWithinDays": 0,"maxCurrentBidUsd": 0,"agencyKeyword": "","sortBy": "NEWEST","includeSalesContact": false,"maxItems": 200}
Example run options (default max charge $50)
Set a default maximum charge of $50 ("maxTotalChargeUsd": 50) in your run options:
{"maxTotalChargeUsd": 50}
Output
Results are deduplicated by lotId (saleNo-lotNo) and sorted by auctionStart descending (or auctionEnd ascending when sortBy is "ENDING_SOON").
| Field | Type | Description |
|---|---|---|
lotId | string | Unique lot identifier (saleNo-lotNo). |
saleNo | string | GSA sale number. |
lotNo | string | Lot number within the sale. |
itemName | string | null | Lot title. |
currentBidUsd | number | null | Current high bid in USD (null when no bids have been placed). |
bidIncrementUsd | number | null | Minimum bid increment in USD. |
bidderCount | integer | Number of active bidders (0 when unbid). |
reservePrice | boolean | number | string | null | Raw reserve flag/value from GSA. |
auctionStart | string | null | Auction start date (YYYY-MM-DD). |
auctionEnd | string | null | Auction close date (YYYY-MM-DD). |
daysUntilEnd | integer | null | Calendar days until auctionEnd. |
status | string | null | Auction status, normalized to upper case: ACTIVE (open for bids) or PREVIEW. PREVIEW lots are not biddable yet; bidding opens on auctionStart. |
isBiddable | boolean | true only when status is ACTIVE. |
agencyName | string | null | Reporting federal agency name. |
bureauName | string | null | Reporting federal bureau name. |
city | string | null | Property location city. |
state | string | null | Property location 2-letter state code. |
zip | string | null | Property location ZIP code. |
vin | string | null | 17-character VIN parsed from lotInfo when present. |
hoursOrMiles | string | null | Odometer mileage or equipment hours parsed from lotInfo when present. |
imageUrl | string | null | Primary lot photo URL. |
lotUrl | string | null | Direct link to the lot preview page on gsaauctions.gov. |
description | string | null | Clean plain-text description trimmed to 2,000 characters. |
contractOfficer | string | null | Federal sales contracting officer name (only when includeSalesContact is true). |
coEmail | string | null | Contracting officer email (only when includeSalesContact is true). |
coPhone | string | null | Contracting officer phone (only when includeSalesContact is true). |
Sample output row (synthetic example)
{"lotId": "4-1-QSC-I-27-999-001","saleNo": "4-1-QSC-I-27-999","lotNo": "001","itemName": "2019 Ford F-250 Super Duty 4x4 Pickup Truck","currentBidUsd": 8400.0,"bidIncrementUsd": 100.0,"bidderCount": 4,"reservePrice": true,"auctionStart": "2026-10-20","auctionEnd": "2026-10-30","daysUntilEnd": 7,"status": "ACTIVE","isBiddable": true,"agencyName": "Department of the Interior","bureauName": "Bureau of Land Management","city": "Phoenix","state": "AZ","zip": "85004","vin": "1FT7W2B65KEE12345","hoursOrMiles": "64,210 miles","imageUrl": "https://www.ppms.gov/gw/auction/ppms/api/v1/auction/image/example.jpg","lotUrl": "https://www.gsaauctions.gov/auctions/preview/999999","description": "2019 Ford F-250 Crew Cab 4x4, 6.2L V8 gas engine, automatic transmission. Odometer reads 64,210 miles. VIN: 1FT7W2B65KEE12345."}
How pricing works
Pay per result. You only pay for rows returned. Set "maxTotalChargeUsd": 50 in your run options to cap spend automatically.
Data source and terms
- Official source: GSA Auctions API Documentation (open.gsa.gov) and api.data.gov Signup.
- Update frequency: The GSA active-auctions feed updates daily / intra-day as new sales open and bids are placed.
- Affiliation disclaimer: This Actor is an independent tool and is not affiliated with or endorsed by the U.S. General Services Administration (GSA).
Compliance
When includeSalesContact is enabled, the dataset includes federal contracting officer business contact details (contractOfficer, coEmail, coPhone) published by GSA for auction administration and inspection scheduling. Buyers are solely responsible for complying with the Telephone Consumer Protection Act (TCPA), the National Do-Not-Call Registry, the CAN-SPAM Act, and all applicable federal and state privacy laws before any outreach. Do not use this Actor for consumer or individual marketing.
Limits and FAQ
- Does the GSA feed include an exact closing hour/minute or whether the reserve has been met?
No. The official GSA Auctions v2 JSON feed publishes
aucStartDt,aucEndDt,highBidAmount, and the booleanreserveindicator, but does not expose intraday closing timestamps or reserve-met status. - When should I provide
dataGovApiKey? The built-in fallback (the Actor's account key when configured, otherwise the publicDEMO_KEY) works out of the box because the Actor makes only one API request per run, but if you trigger many runs per hour, adding a free api.data.gov key avoids shared rate limits.
Changelog
- v0.2 (2026-10-27): api.data.gov key resolution is now three-way: the
dataGovApiKeyinput when provided, otherwise the accountDATA_GOV_API_KEYsecret, otherwise the publicDEMO_KEY; the completed run status names which kind of key was used. Added the free sample linked above. - v0.1 (2026-10-23): Initial release supporting GSA Auctions v2 JSON feed, VIN/mileage regex extraction, and contact privacy controls.