# Fastline Scraper (`crawlerbros/fastline-scraper`) Actor

Scrape Fastline.com - a leading US farm equipment marketplace. Search by keyword, or browse by category, manufacturer, or state. Get price, manufacturer, model, year, hours, horsepower, condition, seller info, and photos for tractors, combines, and more.

- **URL**: https://apify.com/crawlerbros/fastline-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Fastline Scraper

Scrape **Fastline.com** — a leading US marketplace for farm and agricultural equipment. Search by keyword, browse by equipment category, manufacturer, or US state. Get price, manufacturer, model, year, hours, horsepower, condition, seller contact details, and photos for tractors, combines, planters, sprayers, hay and forage equipment, tillage equipment, skid steers, and more. No login, no cookies required.

### What this actor does

- **Five modes:** `search` (keyword), `byCategory` (equipment category), `byManufacturer` (brand), `byLocation` (US state), `byUrl` (specific listing URLs)
- **Combinable server-side filters:** category, manufacturer, and state can all be combined in the same run
- **Post-retrieval filters:** price range, model year range, hours range, horsepower range, condition, and drive type narrow results further after fetching each listing's real data
- **Real prices only** — listings with no genuine price posted anywhere have the `price` field omitted rather than showing a fake `$0`
- **Empty fields are omitted** — a listing only includes the fields that were actually present on its page

### Output per listing

- `title` — listing headline (year, manufacturer, model)
- `sourceUrl` — direct link to the listing on Fastline.com
- `price`, `currency` — numeric price and currency, when a real price is posted
- `category` — equipment category (e.g. `Tractor`, `Combine`)
- `manufacturer`, `model`, `year`
- `hours` — recorded operating hours, when listed
- `horsepower` — engine horsepower, when listed
- `condition` — `New` or `Used`
- `drive` — drive type (e.g. `2WD`, `4WD`, `MFWD`, `MFD/FWA`, `Track`), when present on the listing
- `transmissionType` — spec field, when present on the listing
- `serialNumber`, `stockNumber`
- `description` — full listing description
- `location` — seller's city/state/zip
- `sellerName`, `sellerPhone`, `sellerEmail`
- `sellerState` — seller's US state abbreviation (e.g. `NE`), when present as a distinct field on the listing
- `images[]` — full-size listing photo URLs
- `recordType: "listing"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `byCategory` / `byManufacturer` / `byLocation` / `byUrl` |
| `keywords` | string | – | Keyword search (mode=search); can combine with other filters |
| `category` | string | – | Equipment category (mode=byCategory, or narrows other modes) |
| `manufacturer` | string | – | Manufacturer dropdown (mode=byManufacturer, or narrows other modes) |
| `manufacturerOther` | string | – | Free-text manufacturer name, for brands not in the dropdown |
| `state` | string | – | US state (mode=byLocation, or narrows other modes) |
| `condition` | string | – | `New` / `Used` |
| `driveType` | string | – | `2WD` / `4WD` / `MFWD` / `MFD/FWA` / `Track` / `Other` |
| `sortBy` | string | – | Server-side sort order: price low/high, year newest/oldest, or date listed newest/oldest — matters most with a capped `maxItems` since it decides which listings land inside the cap |
| `startUrls` | array | – | Specific listing URLs to fetch (mode=byUrl) |
| `minPrice` / `maxPrice` | int | – | Price range in USD |
| `minYear` / `maxYear` | int | – | Model year range |
| `minHours` / `maxHours` | int | – | Hours range |
| `minHorsepower` / `maxHorsepower` | int | – | Engine horsepower range |
| `maxItems` | int | `20` | Hard cap on emitted records (1–500) |
| `proxyConfiguration` | object | Apify Proxy (auto) | Optional — only used automatically as a fallback if the site starts blocking requests |

#### Example: search by keyword, filter by manufacturer

```json
{
  "mode": "search",
  "keywords": "combine",
  "manufacturer": "John Deere",
  "maxItems": 25
}
```

#### Example: browse a category with price and year filters

```json
{
  "mode": "byCategory",
  "category": "tractors",
  "minPrice": 20000,
  "maxPrice": 100000,
  "minYear": 2015,
  "maxItems": 50
}
```

#### Example: browse all equipment listed in a US state

```json
{
  "mode": "byLocation",
  "state": "Iowa",
  "condition": "Used",
  "maxItems": 50
}
```

#### Example: cheapest tractors first, capped at 10 results

```json
{
  "mode": "byCategory",
  "category": "tractors",
  "sortBy": "priceLowToHigh",
  "maxItems": 10
}
```

#### Example: fetch specific listing URLs directly

```json
{
  "mode": "byUrl",
  "startUrls": [
    "https://www.fastline.com/farm-equipment/listing-detail/2014-john-deere-5085e-akrs-equipment-syracuse-nebraska/35134f90-5a4c-4668-a747-36de3d89e84e"
  ]
}
```

### Use cases

- **Equipment dealers** — monitor new listings and pricing for competitive benchmarking
- **Buyers** — filter a large marketplace quickly by manufacturer, price, year, and condition without manual browsing
- **Market research** — track how tractors, combines, and other ag equipment are priced across categories and regions
- **Procurement teams** — build a shortlist of available equipment matching budget and specification requirements
- **Data aggregators** — feed ag-equipment listings into a broader marketplace search tool

### FAQ

**What's Fastline.com?** An online marketplace and print magazine for buying and selling new and used farm equipment — tractors, combines, planters, sprayers, hay and forage equipment, tillage equipment, and more — across the United States.

**Why is `price` missing on some listings?** A small number of listings have no price entered anywhere — typically "call for price" listings. Rather than showing a fabricated `$0`, the actor leaves the field out entirely.

**Why are `hours` or `horsepower` missing on some listings?** Not every equipment type has these fields — a planter or trailer listing has no hours/horsepower to report, so the field is simply omitted rather than showing a placeholder.

**Can I combine `category`, `manufacturer`, and `state` in one run?** Yes — all three are applied together on the source site itself, regardless of which `mode` you choose, so you can e.g. run `mode=byCategory` with `category=combines`, `manufacturer=Case IH`, and `state=Iowa` all at once. `condition`, `driveType`, price range, year range, hours range, and horsepower range are applied after retrieval.

**Why is `driveType` missing on some listings?** Drive type mainly applies to tractors and self-propelled equipment — a planter, disc, or trailer has no drive type to report, so the field is omitted rather than showing a placeholder.

**What does `sortBy` do?** It controls the order listings are fetched in from Fastline.com itself (cheapest/most expensive first, newest/oldest model year, or most/least recently listed). This is most useful when `maxItems` is set below the total number of matching listings, since the sort order decides which ones get included.

**Does `manufacturer` require an exact match?** The dropdown values match the site's own manufacturer filter exactly. If you use `manufacturerOther` instead, it matches at the start of a word, case-insensitively.

**Is this actor affiliated with Fastline.com?** No — this is an independent, third-party actor that reads publicly available listing pages.

**How fresh is the data?** As fresh as the last time you ran the actor — each run reads the live site directly, there's no caching.

### Limitations

- Coverage is scoped to Fastline's farm-equipment category tree (tractors, combines, planting/tillage/hay/harvest equipment, trailers-adjacent farm categories, etc.) — Fastline also lists construction equipment, trucks, and trailers under separate category trees not covered by this actor, matching the farm/ag-equipment focus.
- A very small number of listings are dealer "auction" placements that link out to a sister auction site; these are automatically skipped since they don't carry the same structured listing data.

# Actor input Schema

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

What to fetch.

## `keywords` (type: `string`):

Free-text keyword search, e.g. `tractor`, `combine`, `sprayer` (mode=search). Can be combined with manufacturer/state/condition to narrow results.

## `category` (type: `string`):

Equipment category to browse (mode=byCategory). Can also narrow results in other modes.

## `manufacturer` (type: `string`):

Manufacturer to browse or filter by (mode=byManufacturer, or narrows other modes). For a manufacturer not listed here, leave this as (none) and use `Manufacturer (other)` below instead.

## `manufacturerOther` (type: `string`):

Free-text manufacturer name, used only if it's not in the dropdown above (e.g. `Caterpillar`, `Deutz-Fahr`, `Hesston`, `Valtra`). Overrides the dropdown if both are set.

## `state` (type: `string`):

US state to browse or filter by (mode=byLocation, or narrows other modes).

## `condition` (type: `string`):

Keep only listings with this condition.

## `driveType` (type: `string`):

Keep only listings with this drive type (e.g. tractors). Listings with no drive-type field are kept regardless.

## `sortBy` (type: `string`):

Server-side sort order for search/browse modes. Matters most when `maxItems` is capped, since it determines which listings land inside the cap (e.g. cheapest-first).

## `startUrls` (type: `array`):

Specific Fastline.com listing URLs to fetch directly (mode=byUrl), e.g. `https://www.fastline.com/farm-equipment/listing-detail/2014-john-deere-5085e-akrs-equipment-syracuse-nebraska/35134f90-5a4c-4668-a747-36de3d89e84e`.

## `minPrice` (type: `integer`):

Drop listings priced below this amount.

## `maxPrice` (type: `integer`):

Drop listings priced above this amount.

## `minYear` (type: `integer`):

Drop listings whose model year is earlier than this. Listings with no extractable year are excluded once this filter is set.

## `maxYear` (type: `integer`):

Drop listings whose model year is later than this. Listings with no extractable year are excluded once this filter is set.

## `minHours` (type: `integer`):

Drop listings with fewer hours than this. Listings with no hours field (e.g. trailers, planters) are kept regardless.

## `maxHours` (type: `integer`):

Drop listings with more hours than this. Listings with no hours field (e.g. trailers, planters) are kept regardless.

## `minHorsepower` (type: `integer`):

Drop listings with less engine horsepower than this. Listings with no horsepower field (e.g. trailers, planters) are kept regardless.

## `maxHorsepower` (type: `integer`):

Drop listings with more engine horsepower than this. Listings with no horsepower field (e.g. trailers, planters) are kept regardless.

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

Hard cap on emitted records.

## `proxyConfiguration` (type: `object`):

Optional. The source site has no anti-bot protection, so a proxy isn't required — this is only used as an automatic fallback if the site starts blocking requests.

## Actor input object example

```json
{
  "mode": "search",
  "keywords": "tractor",
  "category": "",
  "manufacturer": "",
  "state": "",
  "condition": "",
  "driveType": "",
  "sortBy": "",
  "startUrls": [],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

Dataset containing all scraped Fastline.com listings.

# 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 = {
    "mode": "search",
    "keywords": "tractor",
    "category": "",
    "manufacturer": "",
    "state": "",
    "condition": "",
    "driveType": "",
    "sortBy": "",
    "startUrls": [],
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/fastline-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 = {
    "mode": "search",
    "keywords": "tractor",
    "category": "",
    "manufacturer": "",
    "state": "",
    "condition": "",
    "driveType": "",
    "sortBy": "",
    "startUrls": [],
    "maxItems": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/fastline-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 '{
  "mode": "search",
  "keywords": "tractor",
  "category": "",
  "manufacturer": "",
  "state": "",
  "condition": "",
  "driveType": "",
  "sortBy": "",
  "startUrls": [],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call crawlerbros/fastline-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/fastline-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/qSLFEnqh2WwsoJ1ja/builds/Pnhr553V6FBgW0Cbj/openapi.json
