Farm Equipment Listings Scraper — Prices, Bids & Dealers
Pricing
from $2.50 / 1,000 tractorhouse listings
Farm Equipment Listings Scraper — Prices, Bids & Dealers
Search used farm equipment on TractorHouse, MachineryTrader, and AuctionTime in one run. Machinery Pete and Fastline are optional sources on the same schema. Each row has year, make, model, asking price or bid, hours, location, and seller. No login.
Pricing
from $2.50 / 1,000 tractorhouse listings
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Sandhills Global, TractorHouse, MachineryTrader, AuctionTime, Machinery Pete, Fastline, or their affiliates. Data is read from publicly accessible listing cards only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and each site’s terms. No warranty on accuracy or availability. Provided for informational and research use.
Search used farm equipment on TractorHouse, MachineryTrader, and AuctionTime in one run. Machinery Pete and Fastline are the same schema when you select them. Each row is a public listing card: year, make, model, asking price or current bid, hours, location, and seller. Built for dealers, appraisers, and brokers who want one dataset instead of a separate export per site.
| Farm Equipment Listings | TractorHouse | MachineryTrader | AuctionTime |
|---|---|---|---|
| Farm Equipment Listings Scraper ◄── you are here | TractorHouse Scraper | MachineryTrader Scraper | AuctionTime Scraper |
| Machinery Pete | Fastline |
|---|---|
| Machinery Pete Scraper | Fastline Scraper |
What this Actor does
This farm equipment listings scraper reads the search page on each selected marketplace and writes one shared schema. TractorHouse and MachineryTrader contribute retail asking prices. AuctionTime contributes upcoming auction cards (lot, bid, auction date) when those fields are public. Machinery Pete and Fastline stay off unless you add them to sources, so a scheduled watch of the three Sandhills sites does not open those extra pages.
It is a farm equipment API alternative for a cross-market pull in Python, Node.js, or MCP. For a single-site dump, dealer monitor, or lot-page enrichment, use the marketplace Actor named above.
Sold hammers on AuctionTime are often hidden on the public card. This Actor keeps the published bid and leaves the price empty when the site does.
When to use
- Pull John Deere, Case IH, or Kubota cards from retail and auction sites in one dataset
- Compare asking prices and public bids for the same model
- Export a short list for a trade-in desk or a lender packet
- Hand the rows to an AI assistant through Apify MCP
When a single site is enough: a dealer inventory watch or a full catalog belongs on TractorHouse Scraper, MachineryTrader Scraper, AuctionTime Scraper, Machinery Pete Scraper, or Fastline Scraper.
Key features
- One schema —
sourcesays which site the row came from. Pete and Fastline are optional - Retail price and auction bid on the same table
- Year, make, model, hours, location, seller
- Keyword tokens kept only when every word appears on the card
- Phone numbers off by default
- US residential proxy on the shared Cloudflare path
Input
| Field | Type | Default | Description |
|---|---|---|---|
sources | String[] | three Sandhills sites | Add machinerypete or fastline only when you want those cards |
manufacturer | String | — | Brand filter the site applies (JOHN DEERE) |
searchQuery | String | — | Extra words that must appear on the card (8R 230) |
category | String | — | Sandhills category id (1100), or a name such as Tractors on Pete and Fastline |
state | String | — | US state code (IA, TX) |
maxItemsPerSource | Integer | 20 | Saved cards per marketplace (1–100) |
maxPagesPerSource | Integer | 2 | Search pages per marketplace (1–5) |
includePhones | Boolean | false | Keep a phone already printed on the card |
monitorMode | Boolean | false | Watch the first recently-added page on each site |
monitorStoreName | String | farm-equipment-listings-monitor | Named store for fingerprints. One name per saved search |
resetMonitorState | Boolean | false | Clear fingerprints and start a new seed |
Set a manufacturer, category, state, or keywords. A manufacturer is the tightest AuctionTime filter.
John Deere across three sites
{"sources": ["tractorhouse", "machinerytrader", "auctiontime"],"manufacturer": "JOHN DEERE","searchQuery": "8R 230","state": "IA","maxItemsPerSource": 20,"maxPagesPerSource": 2}
Machinery Pete and Fastline
{"sources": ["machinerypete", "fastline"],"manufacturer": "JOHN DEERE","maxItemsPerSource": 20,"maxPagesPerSource": 1}
TractorHouse retail only
{"sources": ["tractorhouse"],"manufacturer": "KUBOTA","category": "1100","maxItemsPerSource": 40,"maxPagesPerSource": 2}
Output
One dataset row is one listing card.
| Field | Description |
|---|---|
source / sourceName | tractorhouse, machinerytrader, auctiontime, machinerypete, or fastline |
title, make, model, year | Card identity |
price | Asking price when the card prints a number |
currentBid | Public bid on an auction card |
hours | Meter hours |
state, location, dealerName | Where it sits and who listed it |
auctionDate, lotNumber | Auction card fields |
url | Listing URL |
changeType | Monitor only: new or price_change |
previousPrice / previousBid | Value from the previous tick when the price or bid moved |
{"source": "tractorhouse","sourceName": "TractorHouse","id": "257864499","title": "2021 JOHN DEERE 8R 230","make": "JOHN DEERE","model": "8R 230","year": "2021","price": 249000,"currency": "USD","hours": "1450","state": "IA","dealerName": "Example Dealer","url": "https://www.tractorhouse.com/listing/for-sale/257864499"}
Monitor
Turn on monitorMode and schedule the same input. The Actor reads one recently-added page on each selected site (about 28 cards) and stores a fingerprint in the named key-value store.
- The first run is a seed. It caches the cards already on that page and writes no dataset rows.
- Later runs write a row only when a card is new or its asking price or bid changed.
changeTypeisneworprice_change. - A quiet tick still opens those three pages, then stops. It does not open listing pages and it does not walk page 2.
- Give each saved search its own
monitorStoreName.resetMonitorStatestarts the seed over.
{"monitorMode": true,"monitorStoreName": "deere-8r-230-watch","sources": ["tractorhouse", "machinerytrader", "auctiontime"],"manufacturer": "JOHN DEERE","searchQuery": "8R 230","maxPagesPerSource": 1}
Use cases
- A dealer desk prices a trade-in from live asking prices and public auction cards
- A lender pulls a one-page comp set for a model and a state
- An analyst tracks which marketplace is listing a model this week
- An integration stores
source+idand refreshes the same search on a schedule
Integration examples
Node.js
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor("crawloop/farm-equipment-listings-scraper").call({sources: ["tractorhouse", "machinerytrader", "auctiontime"],manufacturer: "JOHN DEERE",searchQuery: "8R 230",maxItemsPerSource: 20,maxPagesPerSource: 1,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient(token="YOUR_TOKEN")run = client.actor("crawloop/farm-equipment-listings-scraper").call(run_input={"sources": ["tractorhouse", "machinerytrader", "auctiontime"],"manufacturer": "JOHN DEERE","searchQuery": "8R 230","maxItemsPerSource": 20,"maxPagesPerSource": 1,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
cURL
curl "https://api.apify.com/v2/acts/crawloop~farm-equipment-listings-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"manufacturer":"JOHN DEERE","searchQuery":"8R 230","maxItemsPerSource":10,"maxPagesPerSource":1}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP.
Connect your Apify account, then call this Actor by its Store name crawloop/farm-equipment-listings-scraper.
Example prompts:
- "Run Farm Equipment Listings Scraper for JOHN DEERE 8R 230 and return the rows as JSON grouped by marketplace"
- "Compare TractorHouse asking prices and AuctionTime bids for a used Kubota tractor in Iowa"
- "Chain Farm Equipment Listings Scraper, then open TractorHouse Scraper when I need the full dealer monitor for one yard"
Suite next step
For a raw dump or a scheduled dealer watch on one site, run TractorHouse Scraper. For construction iron only, run MachineryTrader Scraper. For auction lots and dates, run AuctionTime Scraper. For ZIP and by-owner cards, run Machinery Pete Scraper. For a Fastline dealer watch, run Fastline Scraper.
FAQ
Which pages are read? Public search cards. The default run is TractorHouse, MachineryTrader, and AuctionTime. Machinery Pete and Fastline run only when selected. Lot pages stay on the single-site Actors.
Why are Pete and Fastline off by default? A monitor tick reads one page per selected site. Leaving them out keeps the scheduled watch on the three Sandhills pages.
Why set a manufacturer? AuctionTime’s public HTML applies the brand, category, and state on the server. A keyword is applied to the cards this Actor already fetched, so a brand keeps the run short.
Where are phone numbers? Off unless includePhones is true. The number has to already be on the public card.
What does a monitor run return? The first run returns an empty dataset and stores fingerprints. The next runs return only new cards and price or bid changes. Schedule that same input; keep one monitorStoreName per search.