Landwirt.com API

Austria and Germany's farm-machinery market, with the price a buyer actually sees

The Landwirt.com API turns the Austrian, German and Swiss farm-machinery marketplace into JSON in six actions.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Landwirt.com endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
L
/landwirt/v1

6 active endpoints, on 1 and 2 credit tiers.

  • POST/landwirt/v1/search
  • POST/landwirt/v1/detail
  • POST/landwirt/v1/categories
  • POST/landwirt/v1/manufacturers
  • POST/landwirt/v1/dealer
  • POST/landwirt/v1/dealers

What Landwirt.com endpoints does ReefAPI ship?

6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

6 endpoints

search

2 cr

Search the dealer market or the private classifieds with the filters the source applies natively.

required
—
optional
listing_type, query, group_id, category_id, subcategory_id, manufacturer_id, condition, year_min, year_max, operating_hours_min, operating_hours_max, power_hp_min, power_hp_max, price_min, price_max, country, region, sort, page, limit, include_facets, language

detail

1 cr

One listing in full by its id.

required
listing_id
optional
listing_type, language

categories

2 cr

The live category tree (group → category → sub-category) with exact listing counts for the de…

required
—
optional
listing_type, query, country, language

manufacturers

2 cr

Manufacturers with live listing counts, optionally inside one category or sub-category.

required
—
optional
listing_type, category_id, subcategory_id, query, country, language

dealer

1 cr

One dealer's profile.

required
dealer_id
optional
language

dealers

1 cr

The dealer directory, 1-100 dealers a page, optionally by country or by part of the name, wit…

required
—
optional
country, query, page, limit, language

Every parameter, every allowed value →

Landwirt.com API

3 of 6 endpoints, ready to run

View docs ↗

Dealer or private listings with the filters the marketplace applies itself: manufacturer, category, year, hours, horsepower, price, condition, country and region.

2 credits0 required · 4 optional
POST/landwirt/v1/search
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the Landwirt.com API works

Landwirt.com is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 491 engines.

02
Call
POST /landwirt/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Build a comparable set for one tractor model

Four calls. Ids come from the marketplace's own lists, so no filter is a guess, and every price on the way is the same kind of number.

01categories?listing_type=dealer
POSTcategories?listing_type=dealer

Find the sub-category id — standard tractors are 24 — and see the exact count behind it.

02manufacturers?subcategory_id=24
POSTmanufacturers?subcategory_id=24

Read the manufacturer ids with live counts. The list holds the 69 biggest; meta.truncated says when there are more.

03search?subcategory_id=24&manufacturer_id=385&year_min=2015&operating_hours_max=4000&condition=used&limit=100
POSTsearch?subcategory_id=24&manufacturer_id=385&year_min=2015&operating_hours_max=4000&condition=used&limit=100

The comparable set. Drop rows with price_symbolic or price_on_request, and compare price — the gross the page shows — across rows.

04detail?listing_id=<listing_id from any row>&listing_type=dealer
POSTdetail?listing_id=<listing_id from any row>&listing_type=dealer

The machine in full: model series, equipment, tyre sizes and tread depth where the dealer typed them, every photo, and the dealer's address and rating.

A like-for-like set of used tractors of one manufacturer, year window and hours band, with gross and net prices that cannot be confused and the dealer behind each one.

request
curl -X POST https://api.reefapi.com/landwirt/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"fendt","subcategory_id":24,"year_min":2015,"sort":"newest"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "landwirt",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

One price, four numbers — what a Landwirt.com listing actually publishes

Dealers on this marketplace type their price either net or gross, and the page always shows the gross. These are real listings read on 2026-10-14; the right-hand columns are what the API returns.

listingwhat the page showsprice / price_netprice_entered_as · vat_rate_pct
New Holland T6.160, 2016, 2,077 h (DE dealer)75,565 € incl. 19 % VAT75565 / 63500net · 19
Lindner 520 SA, 1978, 52 PS (AT dealer)1 €, VAT not reclaimable1 / 1, price_symbolic: true— · null (vat: not_applicable)
Case IH MX 135, 1997 (CH dealer)36,397 € incl. 8.1 % VAT36397 / 33669.75, price_converted: truegross · 8.1
Fendt 314 Vario Gen5, 2026, 5 h (AT dealer)Price on requestnull / null, price_on_request: true— · null

On 5 of 8 priced listings checked against their own page, the dealer had typed a net price and the page printed the gross. price is always that printed gross, so it matches what a buyer sees; price_net stays beside it. Swiss dealers are converted to euros by the marketplace itself, which is why their net carries odd cents.

What the marketplace publishes — measured 2026-10-14

Landwirt.com is two indexes on one site: a dealer machinery market and private classified ads. These are the numbers and limits measured on the live source.

Dealer market

85,025 listings in seven groups on 2026-10-14 (Landtechnik 65,342 — tractors 10,862 of them), from a directory of 1,312 dealers in 24 countries.

Private ads

About 50,000 ads in eleven groups, including livestock, feed and jobs; group_id=1 keeps to agricultural machinery.

Price fields

price is the gross the page prints; price_net, price_entered_as and vat_rate_pct sit beside it. 48 of 48 checks against the listing's own page agreed. Placeholder prices under 10 are flagged price_symbolic.

Field fill (50 rows each, six scopes)

Manufacturer, title, category, seller, town and photo on every row. Year 70-96 % on dealer machinery, hours 20-86 % depending on machine type, horsepower only where the machine has an engine. Private ads state year and hours far less often (14 and 9 of 50).

How deep a query goes

10,000 rows per query, 6 to 100 per page. The source's own total stops at 10,000 too; categories gives the exact counts.

Not published

The original currency of a converted Swiss dealer price, and a distance that would mean anything to you — the one the marketplace prints is measured from a fixed point, so it is left out.

What people build with Landwirt.com

The jobs this data is most often used for.

6

endpoints

1/2

credits per call

01

Price a used tractor: narrow to a sub-category and manufacturer, a year window and an hours band, drop price_symbolic rows, and compare gross prices that all mean the same thing.

02

Watch new stock: sort by newest inside a category and country and poll — every row carries the dealer, the town and coordinates.

03

Source across borders: the same filters over Austrian, German, Swiss and Italian dealers, with the VAT rate on every row so net and gross never get mixed.

04

Build a filter UI from live data: categories returns the group, category and sub-category tree with exact counts, manufacturers the ids, and both are what the search filters take.

What Landwirt.com data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 491 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/landwirt/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"fendt","subcategory_id":24,"year_min":2015,"sort":"newest"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/landwirt/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "fendt",
  "subcategory_id": 24,
  "year_min": 2015,
  "sort": "newest"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Landwirt.com.

Get a free key →
Is the price net or gross?▾

price is the gross — the number the listing page prints as its headline and in its structured data — on every row, whatever the dealer typed. price_net is the net, price_gross repeats the gross, vat_rate_pct is the rate (19 for Germany, 20 for Austria, 8.1 for Switzerland in the rows measured) and price_entered_as says whether the dealer typed net or gross. Checked against the listing's own page on 12 listings across seven categories and both indexes: 48 of 48 comparisons agreed.

Why do some machines cost 1 euro?▾

Because the dealer typed 1 as a stand-in for 'ask us', and the marketplace prints it as 1 €. These listings sort first when you order by price: 8 of the first 100 tractors by ascending price were under 10 euros. They are returned as published with price_symbolic: true, so you can drop them from an average without losing the listing. Real 'price on request' listings come back with price null and price_on_request: true.

Does a price filter include price-on-request listings?▾

No. The marketplace stores 'price on request' as 0, so a price range starting at 0 would quietly mix every one of them in — for tractors, a 0 to 50,000 range is 6,058 listings and 1 to 50,000 is 3,762. A price filter here always starts at 1. Hours and horsepower filters work the same way: they return only listings that state hours or horsepower. One thing to know: the marketplace compares the price the way the dealer typed it, so a dealer who typed a net price can appear slightly above your price_max in gross terms; every price-filtered call says so in meta.warnings.

How many results can one query return?▾

Up to 10,000 rows, 6 to 100 per page. The marketplace's own total also stops at 10,000 — an unfiltered tractor search says 10,000 while the category tree says 10,862 — so search marks that with total_is_capped and categories gives the exact per-category counts. A call that would page past 10,000 rows is refused with a clear message rather than returning nothing.

What is the difference between dealer and private listings?▾

listing_type=dealer reads the machinery market of commercial dealers, with a condition (used, demo, new or rental), net and gross price and a full dealer profile. listing_type=private reads private classified ads, which carry the seller's own price and currency, a price option such as 'Preis auf Anfrage', and the date the ad went up. The private index also holds livestock, feed and jobs, so pass group_id=1 to keep to agricultural machinery. detail takes the listing_id and listing_type from any search row as they are.

Which countries are covered?▾

Mostly Austria and Germany, then Switzerland, Italy, Slovenia and a long tail across Europe; the directory lists dealers in 24 countries. Filter with country (ISO code such as AT, DE or CH) and region by its own name (Bayern, Oberösterreich, Bern). categories lists the countries and their regions with live counts for any query.

Are Swiss prices in francs?▾

The marketplace shows Swiss dealer prices in euros, converted by itself, and does not offer the original franc figure. Those rows carry price_converted: true. The search index and the listing page can hold slightly different conversions — on six Swiss listings the search row was exactly 1 euro below the detail record — so use detail when you need the figure to the euro. Private ads do carry the seller's own currency, with price_eur beside it.

How fast is it?▾

One upstream request per call — two only for a private ad looked up without its listing_type. Over two identical runs of 27 calls across all six actions, every call returned what it should, with a median of 1.2 seconds and the slowest single call 2.4 seconds.

What is the Landwirt.com API?▾

Landwirt.com API is a ReefAPI endpoint group for the austrian, german and swiss farm-machinery market as json: ~85,000 dealer listings and ~50,000 private ads with manufacturer, model, year, operating hours, horsepower, the gross and net price with its vat rate, and the dealer behind every machine. It returns live JSON through POST requests under /landwirt/v1.

Is the Landwirt.com API free to try?▾

Yes. ReefAPI starts with 1,000 free credits, no card required. Landwirt.com calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Landwirt.com login or account?▾

No login to Landwirt.com is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Landwirt.com data?▾

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Landwirt.com API use?▾

Landwirt.com actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Landwirt.com from an AI assistant or MCP client?▾

Yes. Connect ReefAPI once through MCP and your assistant can call landwirt actions with the same key, credit pool and JSON envelope used by normal REST requests.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 490 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-14.