GovPlanet Scraper - Government Surplus & Military Auction Data
Pricing
from $6.23 / 1,000 results
GovPlanet Scraper - Government Surplus & Military Auction Data
Scrape GovPlanet government surplus and military auctions: item, price, meter, location, auction close time, decoded serial number, full inspection report, NSN and demilitarization codes, buyer fees and pickup terms.
Pricing
from $6.23 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
GovPlanet Scraper - Government Surplus & Military Auction Data
Scrape every GovPlanet lot — about 25,000 live at any moment — as one flat row, then add the inspection report, the government manifest or the decoded serial number only if you want them. Humvees, MRAPs, 5-ton cargo trucks, excavators, generators, forklifts, trailers and consumer surplus. No login, no API key. Export to CSV, JSON, Excel, or XML.
GovPlanet is the Ritchie Bros. marketplace where the US Department of Defense and government agencies run their surplus auctions, and it is where most online army surplus and government vehicle auction inventory ends up. This Actor reads the same public listings a buyer sees, then opens each lot and pulls the parts that decide a bid: what the inspector rated, what the NSN and demilitarization code say, what the buyer's fee and sales tax will be, and where the unit has to be picked up.
| Who uses it | What they scrape GovPlanet for |
|---|---|
| Equipment dealers and resellers | Live inventory with condition ratings before committing to a bid |
| Fleet and municipal buyers | Trucks and machines by state, year, meter reading and pickup terms |
| Military vehicle specialists | Humvees and tactical trucks with NSN, demil code and DTID |
| Price and comps analysts | Asking prices, bid increments and auction close times across the network |
| Export and compliance teams | Demil codes, End-Use Certificate notices and export-control flags |
What it does
Point it at a keyword, a category, a whole auction, or a single item page. Every lot comes back as one flat row with 30 base columns, and six optional blocks can add 31 more on top.
Always included, 30 columns: item number, canonical and GovPlanet URLs, title, year, make, model, category, sub-category, marketplace, buying format, price with currency, whether it takes bids, meter reading with unit, state, country, latitude and longitude, auction close text, IronClad Assurance flag, spec line, seller notes, thumbnail and full photo.
Optional, each with its own checkbox and its own price:
| Block | Turn on | Adds |
|---|---|---|
| Item profile | includeItemProfile | 13 columns: price label, bid increment, availability, manufacturer part number, city, postcode, auction open and close timestamps, sale group ID, condition, watcher count, photo count, notices and restrictions |
| Inspection report | includeInspectionReport | 5 columns: every component the inspector rated, with star rating, comment and whether a photo backs it, plus the average rating and the deficiency note |
| Government manifest | includeManifest | 3 columns: national stock number (NSN / LSN), DoD demilitarization code, DTID and quantity |
| Serial number | includeSerialNumber | 1 column: the serial or VIN, decoded from the obfuscated script GovPlanet hides it in |
| Photo gallery | includePhotoGallery | 1 column: every inspection photo with caption, component category, thumbnail and high-resolution URL, often 50 to 150 per lot |
| Fees and pickup terms | includeTermsAndLogistics | 8 columns: buyer fee schedule, transaction fee percentage, sales tax jurisdiction, payment window, pickup terms and crated shipping dimensions |
| Auction calendar | includeAuctionCalendar | One extra row per upcoming auction: name, date, start time, format, marketplace and lot count |
Every box is off by default. A run that leaves them off never opens an item page, and pays only for the rows and the search pages it read.
Results export to CSV, JSON, Excel, or XML, or stream from the API.
What you can do with GovPlanet data
🔎 Find undervalued lots before the auction closes.
Filter by category, state and year, sort by ending sooner, and read the inspection ratings and deficiency comments on every match.
🎖️ Track military surplus by stock number.
The manifest gives you the national stock number, the DTID and the demilitarization code, so an NSN lookup runs against your own table. Search a fleet of HMMWVs by NSN instead of guessing from titles.
📊 Build a price and condition dataset.
Asking price, bid increment, meter reading, model year and a component-level condition report on each row, ready for a comps model.
🚚 Cost a purchase end to end.
Transaction fee percent, sales tax jurisdiction, payment deadline, pickup window and crated dimensions land on the same row as the price.
🔔 Watch the auction calendar.
Pull upcoming auctions with their lot counts and event IDs, then feed those IDs straight back in to scrape every lot in a specific sale.
Why choose this scraper
| What you get | |
|---|---|
| No browser, no residential proxy | GovPlanet's AWS WAF challenge is answered by routing around it, not by launching Chrome. Runs on plain HTTP through a datacenter proxy, so a run is faster and far cheaper. |
| Nothing extra unless you ask | Six optional blocks, all off by default. With none of them ticked the run bills result-item and search-page and nothing else. |
| Filter on a column without buying it | Filters run on the complete row, before the unbought columns are dropped. Ask for lots with demil code Q and a 4-star inspection without paying for either block. |
| The whole network, filtered | GovPlanet.com lists GovPlanet, IronPlanet, TruckPlanet, Marketplace-E and SalvageSale. Pick one marketplace or take them all. |
| 32 filters | 12 run on GovPlanet's own facets so filtered-out lots are never fetched; 20 more apply exact bounds the site only offers as coarse buckets, or read a column the search grid does not carry. |
| Government fields nobody else returns | NSN, demil code, DTID, End-Use Certificate notices, and the decoded serial number. |
| Billed on delivery, not on effort | A block that comes back empty — a lot with no manifest, a serial the site masks — is not charged. |
| Four export formats | CSV, JSON, Excel, and XML, from the dashboard or the API. |
How it compares
The other GovPlanet scrapers return the search grid: title, price, location, a thumbnail and a link. This one adds the detail page — the inspection report, the government manifest, the serial number and the buyer's real costs — and it does that without the headless browser and residential proxies the others need to get past the same anti-bot.
| Feature | ParseForge | lulzasaur | getdataforme |
|---|---|---|---|
| Columns per lot | 30 base, 61 with every block | 19 (24 with details) | 7 |
| Component-level inspection report | Yes | No | No |
| NSN, demil code and DTID manifest | Yes | No | No |
| Decoded serial number / VIN | Yes | No | No |
| Buyer fees, sales tax, pickup terms | Yes | No | No |
| Upcoming auction calendar | Yes | No | No |
| Extra data is opt-in | Yes, seven checkboxes | No | No |
| Filters beyond a keyword | 32 | 0 | 0 |
| Needs a headless browser | No | Yes | Not stated |
| Default proxy | Datacenter | Residential | Apify default |
| Results per request | 100 | 60 | Not stated |
What a GovPlanet item looks like
With no optional block ticked, every lot returns as this flat row — a real record from a live run, with the seller note trimmed:
{"itemId": "15014261","url": "https://www.govplanet.com/for-sale/1987-AM-General-M1097R1-HMMWV-4-Door-Soft-Top-w-Truck-Body-Michigan/15014261","title": "1987 AM General M1097R1 HMMWV 4 Door Soft Top w/Truck Body","year": 1987,"make": "AM General","model": "M1097R1","category": "humvee","subcategory": "GovPlanet","marketplace": "GovPlanet","marketplaceCode": "G","realmId": 22,"buyingFormat": "Online Auction","price": 3000,"priceCurrency": "USD","priceFormatted": "US $3,000","acceptsBids": true,"meterReading": 24133,"meterUnit": "miles","locationState": "Michigan","locationCountry": "USA","latitude": 43.0259,"longitude": -82.9296,"auctionCloseText": "Aug 26","ironCladAssurance": true,"features": "6.5 L Diesel Engine, Automatic Transmission, 4x4, 10,000 lb. GVWR, 37x12.50R16.5 Tires","catalogNotes": "***Buyer will need to complete and submit a Hold Harmless Agreement before scheduling pickup. Th...","thumbnailUrl": "https://cdn.ironpla.net/i/21693/607/c800c049-cfbd-3b82-9678-6dee306bf934-small.jpg","photoUrl": "https://cdn.ironpla.net/i/21693/607/c800c049-cfbd-3b82-9678-6dee306bf934-nowater.jpg","govplanetUrl": "https://www.govplanet.com/for-sale/1987-AM-General-M1097R1-HMMWV-4-Door-Soft-Top-w-Truck-Body-Michigan/15014261","scrapedAt": "2026-08-20T17:27:44.462Z"}
Tick a block and its columns appear on the same row. includeManifest alone adds three:
{"manifest": [{ "nsn": "2320013469317", "demilCode": "Q", "description": "TRUCK,UTILITY", "dtid": "W81DTD53510006", "quantity": 1 }],"nsnCodes": ["2320013469317"],"demilCodes": ["Q"]}
With all six blocks on, a row carries 61 columns. Untick a block and its columns are absent from the row entirely — not null, absent — so a CSV export has exactly the header you paid for.
With the auction calendar enabled you also get rows shaped like this:
{"recordType": "auction","saleGroupId": "116375","auctionName": "Government Surplus Auction","auctionDate": "Tue Aug 25","auctionTime": "10:00 AM PDT","auctionFormat": "Online Only","marketplace": "GovPlanet","itemCount": 2328,"url": "https://www.govplanet.com/jsp/auction/auction_info.jsp?groupId=116375","itemsUrl": "https://www.govplanet.com/jsp/s/searchAjax.ips?sm=0&msg=116375&prows=100"}
Filtering on a column you did not buy
Filters run on the complete row, before the unbought columns are dropped. So a filter can read a block the run is not paying for.
{ "searchTerms": ["humvee"], "onlyWithManifest": true, "demilCodeIs": ["Q"], "minInspectionRating": 3 }
That run opens each item page to check the manifest and the inspection rating, keeps only the lots that match, and still delivers the 30 base columns at the base price. The manifest and inspection columns are neither written nor billed. Seven filters work this way: minInspectionRating, demilCodeIs, onlyWithManifest, onlyWithSerialNumber, maxTransactionFeePercent, closingBefore and closingAfter.
Rejected rows are never written and never charged, whichever filter rejects them.
Configure the run
Feed it any mix of five sources: searchTerms, startUrls, itemIds, auctionEventIds, and the auction calendar. The Input tab lists every parameter.
Cheapest useful run — 500 GovPlanet lots, base columns only:
{ "searchTerms": ["humvee"], "marketplaces": ["G"], "maxItems": 500 }
Texas dump trucks from 2010 on, with the fees and pickup terms:
{ "categoryIds": ["2274"], "locations": ["USA-TX"], "minYear": 2010, "includeTermsAndLogistics": true, "maxItems": 500 }
Military lots with their stock numbers and condition report:
{ "searchTerms": ["humvee"], "marketplaces": ["G"], "includeManifest": true, "includeInspectionReport": true, "includeSerialNumber": true, "maxItems": 200 }
Everything in one specific auction, with the full photo gallery:
{ "auctionEventIds": ["116375"], "includePhotoGallery": true, "includeItemProfile": true, "maxItems": 2000 }
Read the calendar first, then scrape the sales it names:
{ "includeAuctionCalendar": true, "maxItems": 100 }
Paste a category page or a single lot:
{ "startUrls": ["https://www.govplanet.com/Dump+Trucks", "https://www.govplanet.com/for-sale/Humvees/15733324"] }
Array filters are expanded into one search each and the results are de-duplicated, because GovPlanet keeps only the first value of a repeated facet. {"makes": ["Ford", "Chevrolet"]} runs two searches and returns the union.
Pricing
Pay-per-event. Two events are fixed; everything else is a box you tick.
Always charged
| Event | Price | When it is charged |
|---|---|---|
apify-actor-start | $0.054 | Once per run |
result-item | $0.007 | Per row written, with its 30 base columns. Reading the item page is included, so a run that opens it only to filter pays nothing extra |
search-page | $0.008 | Per result page read, up to 100 lots each |
Optional, off by default
| Event | Price | Turned on by | Charged |
|---|---|---|---|
item-profile | $0.006 | includeItemProfile | Per row that returns the block |
inspection-report | $0.006 | includeInspectionReport | Per row whose report has at least one component |
manifest-record | $0.009 | includeManifest | Per lot that carries a government manifest |
serial-decode | $0.003 | includeSerialNumber | Per serial actually decoded |
media-gallery | $0.005 | includePhotoGallery | Per row whose gallery is returned |
logistics-terms | $0.004 | includeTermsAndLogistics | Per row with fee, tax or pickup terms |
auction-event | $0.01 | includeAuctionCalendar | Per upcoming auction row, on top of its result-item |
A base row costs $0.007. With all six blocks on it costs at most $0.04, and less whenever a block comes back empty. Prices drop about 11% at higher monthly volume.
| Run | Approximate cost |
|---|---|
| 100 rows, base only | $0.76 |
| 100 rows, all six blocks | $4.06 |
| 1,000 rows, base only | $7.13 |
| 1,000 rows, all six blocks | $40.13 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs are capped at 25 rows per run, with all 61 columns and all 32 filters available. Upgrade your Apify plan to collect up to 50,000 rows per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the GovPlanet Scraper.
- Enter
searchTerms, pick yourmarketplacesand filters, setmaxItems, and click Start. - Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to government surplus auctions through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/govplanet-scraper"
Then prompt it in plain language:
- "Find every Humvee on GovPlanet under $5,000 in Texas and list the ones with an inspection rating of 3 or better."
- "Pull the next Government Surplus Auction's lot list and group it by category."
- "Give me all GovPlanet generators with their NSN and demil code."
- "List Texas dump trucks closing this week — base columns only, keep it cheap."
Copy this into ChatGPT, Claude, or Cursor to start:
Use the Apify Actor "parseforge/govplanet-scraper" to collect GovPlanet government surplus auction lots. Input: { "searchTerms": ["<keyword>"], "marketplaces": ["G"], "maxItems": <n> }. It returns itemId, title, year, make, model, price, meterReading, location and photos on every row. Add "includeManifest": true for NSN and demilitarization codes, "includeInspectionReport": true for the condition report, "includeSerialNumber": true for the VIN — each one is optional and billed separately. Call it with the ApifyClient and my APIFY_TOKEN.
Troubleshooting
Why am I getting no results?
The keyword may match nothing on GovPlanet, or your filters may be mutually exclusive. marketplaces: ["G"] plus a category that only IronPlanet stocks returns zero. Drop one filter at a time and watch the "Search matched N items" line in the log.
Why fewer items than I asked for?
maxItems is a ceiling, not a target. GovPlanet only has what it has — a narrow keyword may match 40 lots — and your exact filters remove more. The log reports how many were rejected.
Why is a column missing entirely?
Because its block is off. Unticked blocks are dropped from the row, not set to null, so your export has exactly the columns you paid for. Tick the box named in the Pricing table to get them back.
Why is a column present but empty?
That is the lot's real state, measured on a live sample of 75 lots across all five marketplaces:
manifest,nsnCodesanddemilCodesexist only on government lots. On GovPlanet lots the manifest fills on about 80%; across the whole network it is about 17%.serialNumberfills on about 79% network-wide and 87% of GovPlanet lots. GovPlanet itself masks some serials as610XXXfor signed-out visitors, and that masked value is what you get.yearandmeterReadingfill on about 71% and 53%: a pallet of hand tools has neither.inspectionItemsfills on about 63% — lots sold without IronClad Assurance carry only a short condition note.deficienciesis its own section that only some marketplaces use; it fills on about 21% network-wide and is normally absent on GovPlanet.
An empty column inside a block you bought is not billed: the event fires only when the block actually returns data.
Why is category empty on a keyword search?
Only a category search carries a real category trail. On a keyword or marketplace search GovPlanet reuses the same markup for the active filter chips, so the Actor leaves category null rather than filing a HMMWV under category "humvee". Tick includeItemProfile — or any block — and the category comes from the item page instead.
Why is the run slow?
Ticking any block makes the run open one item page per lot. With every box off the run reads one page per 100 lots instead, which measured 8 seconds against 79 for the same 10 lots, and is five times cheaper per row. Untick the blocks you do not need, or narrow the search so fewer lots are opened.
Do I need residential proxies?
No. GovPlanet is served over plain HTTP with datacenter proxies, and the Actor needs no headless browser. Leave the proxy on its default.
A column stopped filling.
GovPlanet changed its page. Email us with your run ID so we can update the parser.
FAQ
| Question | Answer |
|---|---|
| Do I need a GovPlanet account or API key? | No. It reads public listing and item pages, so there is no login, OAuth or token to manage. |
| What do I get if I tick nothing? | 30 columns per lot: identity, price, meter, category, marketplace, buying format, coordinates, spec line, seller notes and photos. Enough to build a live inventory table on its own. |
| Can I filter on the manifest without paying for it? | Yes. Filters run before the unbought columns are dropped, so onlyWithManifest, demilCodeIs, minInspectionRating, onlyWithSerialNumber, maxTransactionFeePercent, closingBefore and closingAfter all work with their blocks switched off. |
| Is GovPlanet the same as GovDeals? | No. GovPlanet is the Ritchie Bros. / IronPlanet marketplace for DoD and agency surplus. GovDeals is a separate site — we have a scraper for that too. |
| Can I get IronPlanet or TruckPlanet lots too? | Yes. GovPlanet.com serves the whole network; set marketplaces to any mix of GovPlanet, IronPlanet, Marketplace-E, SalvageSale and TruckPlanet. |
| Can it scrape sold prices and past results? | No. GovPlanet puts closed-auction results behind a login, so this Actor covers items currently for sale. |
| What is a demil code? | A DoD demilitarization code saying how far an item must be destroyed or de-militarized before resale. A means no restriction; Q means the item requires a specific certificate. The Actor returns the raw code. |
| Does it return live bid counts? | No. GovPlanet renders current bid counts client-side after page load, so they are not in the public HTML. Asking price, price label and bid increment are. |
| How many rows per run? | Free plan: 25. Paid: up to 50,000, bounded by what the search and your filters return. |
| How much RAM does it need? | 512 MB is enough and 1 GB is the default; the detail pass scales its parallelism to whatever the run is given. |
| Is this an official GovPlanet product? | No. It is unofficial and reads only publicly available GovPlanet data. |
Related actors
- GovDeals Auction Results Scraper: government surplus auctions from GovDeals.
- Ritchie Bros Auctioneers Scraper: heavy equipment from rbauction.com.
- Machinery Trader Scraper: dealer listings for construction and farm machinery.
- BidNet Direct Government Bids Scraper: public-sector solicitations and bid notices.
- IronPlanet Scraper: heavy equipment listings from IronPlanet.
Browse the full ParseForge collection for more scrapers.
🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by GovPlanet, IronPlanet, Inc. or Ritchie Bros. Auctioneers. It collects only publicly available listing data. You are responsible for using the data in compliance with the site's terms and applicable laws, including US export-control rules that apply to demilitarization-coded property.
