# GovDeals Scraper (`redomic/govdeals-scraper`) Actor

Search and monitor GovDeals government surplus auctions. Get flat rows with lot ID, title, seller, location, current bid, end time, category, and direct asset URLs. Monitor runs report new, changed, and removed lots.

- **URL**: https://apify.com/redomic/govdeals-scraper.md
- **Developed by:** [Redomic](https://apify.com/redomic) (community)
- **Categories:** E-commerce, Business
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## GovDeals Scraper: Government Surplus Auctions

Export auction lots from GovDeals, where US cities, counties, schools and agencies sell their surplus, to a spreadsheet or an API. Search trucks, fire engines, heavy equipment, generators or anything else, and each row gives you the current bid, when the auction ends, where the lot is, the category, the selling agency, and the make, model and year. Run it on a schedule and you get only the new lots and bid changes since the last run.

### Who uses it

- **Used-equipment and vehicle dealers** finding fleet trucks and machinery before the auction closes.
- **Resellers and exporters** watching a category across every state at once.
- **Analysts** tracking what used fleet vehicles sell for at public auction.

### What you get

A search for `truck` on 15 November 2026:

| Lot | Current bid (USD) | Ends | Location | Category | Selling agency |
|---|---|---|---|---|---|
| 2019 Ford F-550 Bucket Truck Regular Cab DRW 4WD | 10,000 | 19 Nov | Como, TX | Pickup Trucks | |
| 2012 Freightliner M2 106 S/A Bucket Truck | 5,100 | 19 Nov | Beaumont, TX | Bucket Trucks | |
| 1995 E-One Pumper Fire Truck | 5,000 | 20 Nov | Sheridan, AR | Fire Trucks | Center Grove Volunteer Fire Department |
| 2007 Ford F-350 Super Duty 4x4 Pickup Truck | 975 | 23 Nov | Dumont, NJ | Pickup Trucks | Dumont Borough |
| 1980 GMC Truck | 725 | 20 Nov | Charlestown, MA | Fire Trucks | Boston, MA |

Each row also carries the lot URL and number, the make, model and year, the photo, the ZIP code, the auction's start and end time in UTC, the time left, the bid increment, whether the lot has a reserve and whether it's met, and whether it has sold. Description, asset bid price, and inventory ID appear only when GovDeals provides them.

### Two modes

| Mode | What you get |
|---|---|
| `search` (default) | Every lot matching your keyword and filters |
| `monitor` | Only lots that are new, changed bid or ended since the last run |

### Price

$3 per 1,000 lots. There's no start fee. In monitor mode you pay only for new and changed lots, so a quiet day costs nothing. 100 lots cost $0.30.

### How to run it

Bucket trucks in Texas and Oklahoma with bids under $15,000:

```json
{
  "query": "bucket truck",
  "locationStates": ["TX", "OK"],
  "maxCurrentBid": 15000,
  "excludeSold": true,
  "maxItems": 200
}
```

For a daily alert, save the search as a task with `"mode": "monitor"` and schedule it. The first run records what's up today. After that you get only new lots and bid changes.

### Input

| Field | Default | What it does |
|---|---|---|
| `query` | `truck` | What to search for, for example `generator` or `excavator`. |
| `mode` | `search` | `search` or `monitor`. |
| `locationStates` | all | US state codes, for example `GA`, `TX`. |
| `minCurrentBid`, `maxCurrentBid` | none | Current bid range in USD. |
| `hasReservePrice` | any | Only lots with (or without) a reserve price. |
| `excludeSold` | `false` | Skip lots already sold. |
| `maxItems` | `24` | The most lots to return, up to 500. |

### Output fields

`id`, `url`, `title`, `lotNumber`, `assetId`, `auctionId`, `inventoryId`, `category`, `categoryDescription`, `makeBrand`, `model`, `modelYear`, `currentBid`, `assetBidPrice`, `bidIncrement`, `currencyCode`, `hasReservePrice`, `isReserveNotMet`, `isSold`, `auctionStartDate`, `auctionEndDate`, `auctionEndDateUtc`, `timeRemaining`, `locationCity`, `locationState`, `locationZip`, `country`, `companyName`, `description`, `photo` (full image URL), `scrapedAt`. (`description`, `assetBidPrice`, and `inventoryId` are included only when present.)

### FAQ

**Does it place bids?**
No. It reads public listings only. You bid on GovDeals yourself.

**Why is the selling agency missing on some lots?**
GovDeals shows some sellers only as a seller number. `companyName` carries whatever GovDeals publishes.

**Does it cover other auction sites?**
No, only GovDeals.

**Something looks wrong in my results.**
Open an issue on the Issues tab with your input and we'll look at it.

### Use it from AI agents (MCP) and Python

**AI agents.** Add this Actor as a tool in Claude, Cursor, VS Code or any MCP client through the Apify MCP server. The agent reads the input schema, so a plain request is enough.

```json
{
  "mcpServers": {
    "govdeals-scraper": {
      "url": "https://mcp.apify.com?tools=redomic/govdeals-scraper",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}
```

**Python.** `pip install apify-client`, then:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("redomic/govdeals-scraper").call(run_input={"query": "truck", "maxItems": 5})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### More from us

- [Allabolag Scraper - Swedish Company Data](https://apify.com/redomic/allabolag-company-scraper): Scrape allabolag.se for Swedish company financials, industry, status and board role titles by search, org number or URL
- [Ashby Jobs Scraper with Salaries](https://apify.com/redomic/ashby-jobs-monitor): Ashby jobs scraper for any startup careers board (OpenAI, Ramp, Notion and thousands more), with salary ranges as numbers: min, max, currency, period, plus equity and bonus flags
- [ATS Jobs Search: Greenhouse, Lever & Ashby Jobs API](https://apify.com/redomic/ats-jobs-search): Search 300,000+ open jobs from 11,000+ companies on Greenhouse, Lever and Ashby in one run
- [Blocket Scraper: Car Monitor](https://apify.com/redomic/blocket-se-scraper): Blocket scraper: each run returns up to 2,500 Blocket Bil and Torget listings as flat rows with price, make, model, year, mileage, VIN, inspections and seller
- [Closed Jobs Tracker: Filled Roles & Time-to-Fill](https://apify.com/redomic/closed-jobs-tracker): Search closed jobs from 11,000+ companies with closedOn, daysOpen and time-to-fill signals
- [Google Jobs Scraper - Job Postings API](https://apify.com/redomic/google-jobs): Google Jobs and job postings scraper: get job title, company, location, posted date, salary, full description and every apply link for any search
- [Google Trends API: Trending Now & Interest Over Time](https://apify.com/redomic/google-trends): Trending-now searches and new-trends alerts/monitoring per country with the news behind them, plus interest over time, interest by region, and related and rising queries for any keyword
- [Greenhouse Jobs Monitor & Scraper](https://apify.com/redomic/greenhouse-jobs-monitor): Monitor Greenhouse jobs from any company careers board (Airbnb, Stripe, Discord and thousands more)
- [Job Postings Dataset: 320k+ Open Jobs, Updated Daily](https://apify.com/redomic/job-postings-dataset): 320,000+ open jobs from 10,000+ company career sites (Greenhouse, Lever, Ashby), updated daily with first-seen and closed dates
- [Lever Jobs Scraper with Salaries](https://apify.com/redomic/lever-jobs-monitor): Lever jobs scraper for any company's careers page (Palantir, Spotify, Zoox, Shield AI and thousands more): flat rows with title, team, location, workplace, commitment, apply link, salary as numbers and the full description merged
- [Marktplaats.nl Scraper](https://apify.com/redomic/marktplaats-nl): Scrape Marktplaats.nl listings into clean rows: title, price in EUR, condition, seller, location, images
- [Otodom Scraper: Poland Property Listings & Price Monitor](https://apify.com/redomic/otodom-scraper): Scrape Otodom.pl property listings in Poland
- [Otomoto.pl Scraper](https://apify.com/redomic/otomoto-scraper): Scrape Otomoto.pl Polish car listings: one run returns used-car rows with price, make, model, year, mileage, fuel, gearbox, seller and URL
- [Personio Jobs Scraper](https://apify.com/redomic/personio-jobs): Scrape open jobs from Personio company career pages (jobs.personio.de/.com XML feeds)
- [Salary Data API: Pay Ranges by Job Title & Level](https://apify.com/redomic/salary-data): Get salary benchmarks (p10-p90, annualised, with n) and pay ranges from 150,000+ employer-posted jobs across 11,000+ companies, updated daily
- [SIRET Company Scraper](https://apify.com/redomic/siret-company-scraper): Search French companies by name, SIREN or SIRET
- [SUUMO Scraper - Japan Property Listings](https://apify.com/redomic/suumo-scraper): Scrape SUUMO Japan property listings from search URLs for rentals and sales
- [Talabat Scraper — Menus, Prices & Delivery Fees](https://apify.com/redomic/talabat-scraper): Talabat menus, prices and delivery fees as flat rows in 8 MENA markets
- [Workday Jobs Scraper](https://apify.com/redomic/workday-jobs): Search and monitor public Workday (myworkdayjobs.com) job postings

# Changelog

This Actor's version history is a separate document: https://apify.com/redomic/govdeals-scraper/changelog.md

# Actor input Schema

## `query` (type: `string`):

Keyword to search on GovDeals (for example truck, generator, excavator). Used in search and monitor modes.

## `mode` (type: `string`):

search lists matching lots; monitor reports only new, changed and removed lots since the last run for the same query/filters.

## `maxItems` (type: `integer`):

Upper limit on lot rows returned per run (and on what you pay). Default 50, maximum 500.

## `locationStates` (type: `array`):

Optional list of US state/region codes to include (for example GA, TX). Leave empty to include all locations.

## `minCurrentBid` (type: `number`):

Keep only lots whose current bid is greater than or equal to this amount.

## `maxCurrentBid` (type: `number`):

Keep only lots whose current bid is less than or equal to this amount.

## `hasReservePrice` (type: `boolean`):

If set, keep only lots where reserve price is present (true) or not present (false). Leave unset to ignore.

## `excludeSold` (type: `boolean`):

Skip lots already marked as sold.

## Actor input object example

```json
{
  "query": "truck",
  "mode": "search",
  "maxItems": 24,
  "excludeSold": false
}
```

# Actor output Schema

## `results` (type: `string`):

All rows from the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "truck",
    "maxItems": 24
};

// Run the Actor and wait for it to finish
const run = await client.actor("redomic/govdeals-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "truck",
    "maxItems": 24,
}

# Run the Actor and wait for it to finish
run = client.actor("redomic/govdeals-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "truck",
  "maxItems": 24
}' |
apify call redomic/govdeals-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,redomic/govdeals-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/QB9Hr1or6CMuE9ziL/builds/ZJJAFqyYp6lVeWIuV/openapi.json
