# Landwirt Scraper: Tractors, Farm Machinery, Ads & Dealers (`recordsdata/landwirt-scraper`) Actor

Scrape landwirt.com: used, demo and rental tractors and farm machinery with price, year, hours, power, location and photos, plus classified ads and the dealer directory. Filter by brand, country, price and year, monitor new listings. No login. Export JSON, CSV or Excel.

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

## Pricing

from $22.00 / 1,000 machine records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

![RecordsData](https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner?v=3)

## Landwirt Scraper: Tractor, Farm and Heavy Machinery Listings from landwirt.com

> Landwirt Scraper is an Apify Actor that extracts machinery listings from landwirt.com, the Austrian and European marketplace for used tractors, farm, forestry and construction machines. Each row has the price in euros, make, model, year, operating hours, horsepower and kilowatts, category path, location with coordinates, photos and the dealer. It also returns classified ads and the dealer directory. No login, proxy or browser is needed.

Export the result as JSON, CSV, Excel, XML or HTML, or read it through the Apify API. The Actor calls the same public JSON service that the landwirt.com web page uses, at about three requests per second, so runs are fast and cheap on memory (256 MB).

### What can you scrape from Landwirt?

- **Dealer machines**: used machines (about 50,000 live on 2026-10-19), demonstration machines (about 2,800) and rental machines (about 145) with price, make, model, year, hours, power and photos.
- **Classified ads**: about 50,000 ads from private sellers and small businesses in tractors, parts, forestry, construction, livestock, cars and trucks. Seller names, street addresses and coordinates are never output.
- **Dealer directory**: about 1,300 dealer profiles with address, coordinates, premium level, number of machines on offer and member since date.
- **Detail pages** (optional): the full text, all photos, equipment and specifications, exact location and dealer rating of a listing, and opening hours, branches and services of a dealer.

### Why use this Actor?

- **The whole marketplace is reachable**: the site stops paging at 10,000 hits per search, so the Actor splits big searches by country, region, category, brand and price order to read everything that matches.
- **Filters are applied by the site and checked again on every row**: sections, 11 category groups, brands, model, 27 countries, regions, dealers, price, year, power and operating hours ranges, photos, video and posted within 1, 7 or 30 days.
- **Clean, typed output**: numbers are numbers, dates are ISO 8601, enums are lowercase English and empty values are left out instead of printed as null.
- **Monitor mode**: a scheduled run returns only listings that earlier runs did not deliver, and skipped listings are never charged.
- **Privacy built in**: no private seller names, street addresses or coordinates, and phone numbers and e-mail addresses are removed from private texts.

### How to scrape Landwirt machinery listings in four steps

1. Choose **What to collect** on the Actor page: search, addresses or dealer directory.
2. Pick sections, add brands such as `Fendt` or `John Deere`, and set filters such as price, year or country.
3. Set **Maximum items** and click **Start**.
4. Download the dataset from the **Storage** tab.

### Three ways to collect data

| Mode (`mode`) | Use it to | Record types |
|---|---|---|
| `search` | Find machines and classified ads by section, brand, model, country, region, price, year, power and hours | `machine`, `classified` |
| `urls` | Read listings or dealers you already know, by address or number, always with full detail | `machine`, `classified`, `dealer` |
| `dealers` | List the dealer directory by country, name or premium level | `dealer` |

New machines and auction lots are not covered. Empty `sections` means used machines. Dealer machines come from the sections `used-machines`, `demo-machines` and `rental-machines`; `classifieds` returns the private ads.

### What data do you get?

Every row has a `recordType`: `machine`, `classified` or `dealer`. Fields that do not apply are left out. The dataset schema lists 106 fields in a fixed order; these are the main ones.

| Field | Description |
|---|---|
| `recordType`, `sourceSite`, `scrapedAt` | Record type, `landwirt.com` and the read time |
| `listingId`, `dealerId`, `url` | Listing or dealer number and the page address |
| `section`, `listingType`, `condition` | `used-machines`, `demo-machines`, `rental-machines` or `classifieds`; `sale` or `rent`; `used`, `demonstration`, `new`, `like-new` or `rental` |
| `title`, `subtitle`, `description` | Listing title and text, with contacts removed from private texts |
| `make`, `model`, `year`, `vehicleType` | Brand, model, year of build and `tractor`, `truck`, `car`, `motorcycle`, `tire`, `part` or `machinery` |
| `hoursUsed`, `powerHp`, `powerKw`, `mileage`, `mileageUnit` | Operating hours, power, odometer in km |
| `widthCm`, `volume`, `capacity` | Width ("Breite" on the site, in cm), volume and capacity where the listing gives them |
| `group`, `category`, `subcategory`, `categoryPath` | Category names in the site language and the joined path |
| `price`, `currency`, `originalPrice`, `priceNet`, `discountPercent` | Current price, currency, list price, price without VAT and discount |
| `vatNote`, `vatRatePercent`, `priceOnRequest`, `priceType` | VAT text, VAT rate, price on request flag and `fixed`, `on-request`, `free` or `per-piece` |
| `previousPrice`, `priceChange`, `priceChangePct` | Classified ads that show an earlier price: old price, difference and percent |
| `fuelType`, `transmission`, `driveType`, `color` | Specification read from the equipment list (detail rows) |
| `features`, `specifications`, `referenceCode`, `conditionGrade` | Equipment, key-value specifications, dealer reference code and condition grade |
| `country`, `region`, `city`, `zip`, `address`, `latitude`, `longitude` | Where the machine stands; classified ads carry city and zip only |
| `imageUrl`, `images`, `imageCount`, `hasVideo`, `videoUrl` | Cover photo, gallery, photo count and video |
| `publishedAt`, `updatedAt`, `isReserved`, `isFeatured` | Dates and status flags |
| `sellerType`, `isPrivateSeller`, `sellerName`, `sellerUrl`, `sellerId` | `dealer` or `private`; dealer identity for dealers only |
| `sellerRating`, `sellerWebsite`, `sellerPremiumLevel`, `sellerLogoUrl`, `sellerPhone` | Dealer rating, website, premium level, logo and, with contact details on, the company phone |
| `dealerName`, `countryName`, `premiumLevel`, `isPremium`, `machineCount`, `memberSince`, `foundedYear` | Dealer rows |
| `openingHours`, `areasOfOperation`, `services`, `otherBranches`, `reviewRating`, `awardYears`, `openJobs` | Dealer detail rows |

The list rows come straight from the search results. Fields such as `fuelType`, `transmission`, `specifications`, `updatedAt` of a classified ad and the full photo gallery are filled when you switch on **Read detail pages**. The dealer model name is often empty on the site, so `model` is empty for many machines; the model is then part of the `title`.

#### Sample output

A real `machine` row with detail pages on (photo list, text and equipment shortened):

```json
{
  "imageUrl": "https://static.landwirt.com/4112-78ecbd2b843f6f284d1701cce7e7593a-7121439-0vb.jpg",
  "recordType": "machine",
  "listingId": "7121439",
  "url": "https://www.landwirt.com/detail/fendt-826-vario-powerplus-7121439",
  "sourceSite": "landwirt.com",
  "section": "used-machines",
  "country": "DE",
  "listingType": "sale",
  "vehicleType": "tractor",
  "title": "Fendt 826 Vario PowerPlus",
  "price": 67711,
  "currency": "EUR",
  "priceNet": 56900,
  "vatNote": "inkl. 19% MwSt",
  "vatRatePercent": 19,
  "make": "Fendt",
  "year": 2018,
  "condition": "used",
  "hoursUsed": 10724,
  "powerHp": 260,
  "powerKw": 191.23,
  "group": "Landtechnik",
  "category": "Traktoren",
  "subcategory": "Standard Traktoren",
  "categoryPath": "Landtechnik > Traktoren > Standard Traktoren",
  "specifications": {
    "Höchstgeschwindigkeit in km/h": "50 km/h",
    "Bereifung vorne": "IF600/70R30 AxioBib",
    "Bereifung hinten": "VF650/85R38 Alliance"
  },
  "referenceCode": "203876",
  "region": "Niedersachsen",
  "city": "Spelle",
  "zip": "48480",
  "address": "Max-Eyth-Straße 1, 48480 Spelle",
  "latitude": 52.34755,
  "longitude": 7.472009,
  "imageCount": 13,
  "publishedAt": "2026-06-02T08:03:29.000Z",
  "descriptionLanguage": "de",
  "sellerName": "LVD - Bernard Krone GmbH",
  "sellerUrl": "https://www.landwirt.com/dealer/info/lvd-bernard-krone-gmbh-4112",
  "sellerId": 4112,
  "sellerType": "dealer",
  "isPrivateSeller": false,
  "sellerPremiumLevel": 1,
  "sellerRating": 4.7,
  "scrapedAt": "2026-10-23T14:46:33.093Z"
}
```

### Use cases

- **Used tractor price research**: compare asking prices of one model by year, hours and country across dealers, with VAT shown separately.
- **Dealer lead lists**: export dealers by country with address, coordinates, premium level and number of machines, then open the detail rows for opening hours and branches.
- **Stock monitoring**: run daily with **Only new listings** to see what a competitor or a brand adds.
- **Parts and classified watch**: follow newly posted ads in a category, such as front loaders or forestry winches, with price changes.
- **Market datasets**: feed a valuation model or a BI dashboard with year, hours, power, price and location of thousands of machines.

### Monitor new listings

Switch on **Only new listings (monitor mode)** and the Actor remembers every record it delivered, in a named key-value store of your own account. Scheduled runs with the same inputs return only unseen records. Use a bounded search, such as one dealer, one country or **Posted within** 1 day on classified ads. Skipped records are never charged. Give each monitor its own **Monitor label** to keep them apart, or switch on **Reset monitor memory** to start again.

### How does it compare with other Landwirt data options?

A search of the Apify Store on 2026-10-23 finds one other Actor for this site, `crawloop/landwirt-scraper` (26 fields in its dataset schema). The table compares what each one states in its public description and README.

| | Landwirt Scraper | crawloop/landwirt-scraper |
|---|---|---|
| How you point it at data | Filters by section, 11 groups, brand, model, 27 countries, regions, dealer, price, year, power, hours; or listing numbers and addresses | Addresses you paste or a search word; it states it adds no filters beyond the address |
| Dealer machines and classified ads | Both, in one run or separately | Both (listing cards, optional detail pages) |
| Dealer directory (about 1,300 profiles) | Yes, with detail rows | Not stated |
| Machine coordinates and zip | Yes | Location and zip-city text; coordinates are not in its published fields |
| Output fields | 106 in a fixed order | 26 |
| More than 10,000 hits per search | Splits by country, region, category and brand | Not stated |
| Monitor mode | New records only, any search | New ads and price changes, optional Telegram alerts |
| Proxy | None needed | Its default input uses a residential proxy |
| Phone numbers | Off by default, dealer phone only on request | Off by default, opt-in |

Both read the public data of the site. The differences above come from the published schemas, descriptions and READMEs, not from a run of the other Actor.

### Is it legal to scrape Landwirt? Limits and responsible use

The Actor reads public listing data. It does not log in or bypass any protection and keeps to about three requests per second with a single global request gate. It does not read the new machines and auction lots sections, which the robots.txt of the web site disallows. Classified sellers are private people: names, street addresses and coordinates are never output, and phone numbers and e-mail addresses are removed from their texts. Dealer company phones appear only with **Include dealer contact details**, and the site itself masks the last digits. The optional raw data drops contact persons, reviewer names and private seller ids. You are responsible for using the data in line with the site terms and data protection law.

Limits:

- New machines and auction lots are not collected.
- A listing can show "price on request": the row then has `priceOnRequest: true` and no `price`.
- Prices are returned in the currency of each listing, which is euro for nearly every listing. Price filters are in euros.
- Free Apify plans are limited to 10 results per run.

### Use with AI agents (MCP)

Connect the Apify MCP server to Claude, Cursor or another MCP client and this Actor appears as a tool: `https://mcp.apify.com?tools=RecordsData/landwirt-scraper`.

Example prompt: "Find the 20 cheapest Fendt tractors built 2018 or later with at least 200 hp in Germany on Landwirt and list price, hours and city." The agent sends `{ "mode": "search", "brands": ["Fendt"], "countries": ["DE"], "minYear": 2018, "minPowerHp": 200, "sortBy": "price-asc", "onlyWithPrice": true, "maxItems": 20 }` and analyzes the rows.

### Run it from code

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('RecordsData/landwirt-scraper').call({
    mode: 'search',
    brands: ['Fendt'],
    countries: ['DE'],
    minYear: 2018,
    maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].title, items[0].price);
```

You can also call the Actor from the Python client, Make, Zapier or n8n, and schedule it from the Apify Console.

### Frequently Asked Questions

#### Which machines does Landwirt Scraper cover?

Used, demonstration and rental machines of dealers, plus classified ads of private sellers and small businesses, in tractors, forestry, construction, municipal equipment, parts, livestock, cars and trucks. Each row has a `vehicleType` and a `categoryPath`, so you can separate tractors from parts afterwards. New machines and auction lots are not read.

#### Do I need a proxy, a login or an API key?

No. The Actor makes plain HTTP requests to the public service behind landwirt.com and needs no proxy, browser or landwirt.com account. You only need an Apify account to start runs, and the free plan returns up to 10 results per run.

#### Is it legal to scrape Landwirt?

The Actor reads publicly visible listings and does not log in. It stays out of the sections that robots.txt disallows and keeps a gentle pace of about three requests per second. Private sellers' names and coordinates are never output. You remain responsible for how you use the data under the site terms and data protection law.

#### How is a run billed?

The Actor is billed per result with six events: machine record, machine detail record, classified record, classified detail record, dealer record and dealer detail record. A row that includes its detail page is charged as the detail event. The current prices are on the Pricing tab of the Actor. Error rows, empty searches and records skipped by monitor mode are never charged.

#### How do I get more than 10,000 listings?

Set `maxItems` to what you need. The site cannot page beyond 10,000 hits per search, so the Actor splits a big search by country, region, category and brand and reads each slice. Free Apify plans are limited to 10 results per run; paid plans use the value you set.

#### What is the difference between a record and a detail record?

A normal row comes from the search result: price, make, model, year, hours, power, first photo and place. Switch on **Read detail pages** to add the full text, all photos, equipment, specifications, exact location and dealer rating. Detail rows use the detail event, and listings that vanish keep their list data.

#### Why is the model empty for some machines?

Dealers choose whether to fill the model field. Many leave it empty and write the model into the title, for example "Fendt 826 Vario PowerPlus". The `make` and the `title` are always present.

#### Can I get only the listings published since my last run?

Yes. Switch on **Only new listings (monitor mode)** and keep the same inputs, or the same **Monitor label**. Scheduled runs return only records not delivered before, and skipped records are not charged. Use a bounded search such as one dealer, one country or **Posted within**.

#### What happens when the search finds nothing or the input is wrong?

A search with no hits ends as succeeded with an empty dataset and charges nothing. A wrong input value, such as an unknown region or a region filter without exactly one country, ends with one free error row that explains the problem, so a typo never costs you money.

### Support

Questions, a missing field or a feature request: contact.punkrecordsdata@gmail.com. Reviews on the Actor page help other people find it.

This Actor is an independent tool and is not affiliated with landwirt.com.

# Actor input Schema

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

search = machine and classified listings for the sections and filters below. urls = listing, classified and dealer addresses (or numbers) you provide, always with full detail. dealers = the dealer directory (company profiles).

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

Stops after this many rows (all record types together). Free plans are limited to 10 items per run.

## `sections` (type: `array`):

Which parts of the marketplace to read (search mode). Dealer sections are priced as machine records, classified ads as classified records. New machines and auction lots are not covered. Empty means used machines.

## `searchQuery` (type: `string`):

Optional. Words searched in the listing title and text, for example "Fendt 724" or "Frontlader". Empty means every listing of the chosen sections.

## `groups` (type: `array`):

Optional. Keep only listings of these category groups (agricultural machinery, forestry, construction, cars and trucks and so on). Empty means all groups.

## `brands` (type: `array`):

Optional. Brand names as the site writes them, for example Fendt, John Deere, Claas or Case IH. Several brands are searched together.

## `model` (type: `string`):

Optional. Model name or designation, for example "724 Vario". Use together with a brand for exact results.

## `countries` (type: `array`):

Optional. Keep only listings located in these countries (search mode) or dealers based there (dealers mode). Empty means every country.

## `states` (type: `array`):

Optional. Region names or numbers of the site, for example Oberoesterreich or Bayern. Needs exactly one country in "Countries". Listings without a region on the site are not returned when this is set.

## `dealerIds` (type: `array`):

Optional. Only machines offered by these dealers (search mode, machine sections). The dealer number is the number at the end of a dealer page address.

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

Only listings priced at or above this amount in euros. Listings without a price are not returned when a price limit is set. Leave 0 for no limit.

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

Only listings priced at or below this amount in euros. Leave 0 for no limit.

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

Only machines built in or after this year, for example 2015. Leave 0 for no limit.

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

Only machines built in or before this year. Leave 0 for no limit.

## `minPowerHp` (type: `integer`):

Only machines with at least this power in horsepower (PS). Leave 0 for no limit.

## `maxPowerHp` (type: `integer`):

Only machines with at most this power in horsepower (PS). Leave 0 for no limit.

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

Only machines with at least this many operating hours. Leave 0 for no limit.

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

Only machines with at most this many operating hours. Machines that show no hours are not returned when a limit is set. Leave 0 for no limit.

## `onlyWithPrice` (type: `boolean`):

Skip listings that show "price on request" or no price.

## `onlyWithImages` (type: `boolean`):

Skip listings without any photo.

## `onlyWithVideo` (type: `boolean`):

Keep only listings that have a video.

## `postedWithin` (type: `string`):

Keep only listings created within the last 1, 7 or 30 days. Dealer machine offers carry no creation date on the site, so this works best on classifieds.

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

Order of the results. Pick a sort when you use a small Maximum items value and want, for example, the cheapest or newest listings first.

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

Used in mode "urls". Machine listing addresses (https://www.landwirt.com/detail/name-1234567), classified ad addresses (https://www.landwirt.com/kleinanzeigen/detail/name-12345678) and dealer page addresses (https://www.landwirt.com/dealer/info/name-1234).

## `listingIds` (type: `array`):

Used in mode "urls". Listing numbers (the number at the end of a listing address); machine and classified numbers are recognised automatically.

## `dealerQuery` (type: `string`):

Used in mode "dealers". Keep only dealers whose name contains these words.

## `dealerPremiumLevel` (type: `string`):

Used in mode "dealers". Keep only dealers with this premium level of the site (3 is the highest).

## `fetchDetails` (type: `boolean`):

Adds the full text, all photos, equipment, specifications, dealer rating and exact location of each listing (and opening hours, branches and services of each dealer). Billed as the detail record events.

## `includeContactDetails` (type: `boolean`):

Adds the dealer company phone exactly as the site publishes it. Private sellers and contact persons are never output.

## `includeRaw` (type: `boolean`):

Adds a "raw" field with the unprocessed answers of the site (large rows).

## `onlyNew` (type: `boolean`):

Return only records that earlier runs with the same inputs have not delivered yet. Seen records are remembered in a key-value store of your account and are not charged again. Use a bounded search (a dealer, a country, "posted within") for scheduled monitoring.

## `stateKey` (type: `string`):

Optional name to keep several monitors with the same inputs apart.

## `resetSeen` (type: `boolean`):

Forget everything this monitor has seen and start again.

## `maxConcurrency` (type: `integer`):

How many detail requests run at once. The Actor always keeps its overall pace to about 3 requests per second.

## `maxScanSeconds` (type: `integer`):

Stops reading new pages after this many seconds and finishes with what was collected.

## Actor input object example

```json
{
  "mode": "search",
  "maxItems": 10,
  "sections": [
    "used-machines"
  ],
  "searchQuery": "",
  "groups": [],
  "brands": [],
  "model": "",
  "countries": [],
  "states": [],
  "dealerIds": [],
  "onlyWithPrice": false,
  "onlyWithImages": false,
  "onlyWithVideo": false,
  "postedWithin": "any",
  "sortBy": "default",
  "startUrls": [],
  "listingIds": [],
  "dealerQuery": "",
  "dealerPremiumLevel": "any",
  "fetchDetails": false,
  "includeContactDetails": false,
  "includeRaw": false,
  "onlyNew": false,
  "stateKey": "",
  "resetSeen": false,
  "maxConcurrency": 2,
  "maxScanSeconds": 3000
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields per row

## `fullData` (type: `string`):

Complete dataset with all fields

# 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 = {
    "maxItems": 10,
    "sections": [
        "used-machines"
    ],
    "groups": [],
    "brands": [],
    "countries": [],
    "states": [],
    "dealerIds": [],
    "minPrice": 0,
    "maxPrice": 0,
    "minYear": 0,
    "maxYear": 0,
    "minPowerHp": 0,
    "maxPowerHp": 0,
    "minHours": 0,
    "maxHours": 0,
    "startUrls": [],
    "listingIds": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/landwirt-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 = {
    "maxItems": 10,
    "sections": ["used-machines"],
    "groups": [],
    "brands": [],
    "countries": [],
    "states": [],
    "dealerIds": [],
    "minPrice": 0,
    "maxPrice": 0,
    "minYear": 0,
    "maxYear": 0,
    "minPowerHp": 0,
    "maxPowerHp": 0,
    "minHours": 0,
    "maxHours": 0,
    "startUrls": [],
    "listingIds": [],
}

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/landwirt-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 '{
  "maxItems": 10,
  "sections": [
    "used-machines"
  ],
  "groups": [],
  "brands": [],
  "countries": [],
  "states": [],
  "dealerIds": [],
  "minPrice": 0,
  "maxPrice": 0,
  "minYear": 0,
  "maxYear": 0,
  "minPowerHp": 0,
  "maxPowerHp": 0,
  "minHours": 0,
  "maxHours": 0,
  "startUrls": [],
  "listingIds": []
}' |
apify call recordsdata/landwirt-scraper --silent --output-dataset

```

## MCP server setup

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