Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Agriaffaires / MachineryZone API page →
docs / agriaffaires

Agriaffaires / MachineryZone

Agriaffaires / MachineryZone

base /agriaffaires/v110 endpoints
post/agriaffaires/v1/detail3 credits

One listing in full, by id. Returns the machine (manufacturer, model, year of construction, condition, availability, hour meter, engine power), the price with its currency — cross-checked against the page's own schema.org product data and reported if the two disagree — every technical property the seller typed with the source's own label, the raw number, the real unit and the printed unit label, the seller's own description, the full gallery, the category breadcrumb and the business behind the advert. An auction's price row is returned as `auction_start_price`, never as an asking price.

ParameterAllowed / rangeDescription
listing_idrequired—The numeric listing id, as `search` returns it and as it appears in the listing URL. 🔴 Both slugs in that URL are ignored by the source, so the id alone is enough; a listing that has gone answers NOT_FOUND rather than something else.
site = agriaffairesoptionalagriaffaires · machineryzoneWhich of MB Diffusion's two marketplaces to read. 🔴 This is a REAL data axis, not a language switch: `agriaffaires` is agricultural machinery (tractors, harvesters, sprayers, balers) and `machineryzone` is construction, earthmoving and handling (excavators, loaders, cranes, forklifts). They are separate catalogues on the same application, so a listing id from one does not exist on the other.
market = froptionalar · br · ca · ca_fr · cn · cz · de · es · eu · fi · fr · hu · in · it · lt · nl · no · pl · pt · ro · rs · se · tr · ua · uk · usWhich national host to read, i.e. the LANGUAGE of the labels — not a different catalogue. 🔴 Measured on 2026-10-08: the same listing answers on every host with the SAME price in the SAME currency (46952423 = EUR 151,000 on .com, .de, .co.uk, .it, .us and .pl alike; the site does not convert, its currency selector is client-side display only), and `category_id=702` returns 22,206 / 22,246 / 22,224 / 22,228 / 22,253 / 22,263 on .com / .de / .co.uk / .us / .cn / .com.ua within the same minutes. Pick the market whose language you want the labels and descriptions in. Not every market exists on both sites — a pair with no host answers MARKET_UNAVAILABLE and names the site that does have it, rather than returning fields this engine cannot name.
Try in playground →
post/agriaffaires/v1/categories3 credits

The marketplace's own category tree with the numeric ids every other action takes and the source's own live counts. Agriaffaires publishes some 320 categories under its machinery families, MachineryZone its own set; ids are language-invariant, so the id you get here works on all 43 hosts. 🔴 The tree lives on exactly one page (the homepage); result pages load it over AJAX and do not contain it, so this action reads the homepage for the hierarchy and the source's own facet list for the ids, and says in `meta` how many it could match.

ParameterAllowed / rangeDescription
site = agriaffairesoptionalagriaffaires · machineryzoneWhich of MB Diffusion's two marketplaces to read. 🔴 This is a REAL data axis, not a language switch: `agriaffaires` is agricultural machinery (tractors, harvesters, sprayers, balers) and `machineryzone` is construction, earthmoving and handling (excavators, loaders, cranes, forklifts). They are separate catalogues on the same application, so a listing id from one does not exist on the other.
market = froptionalar · br · ca · ca_fr · cn · cz · de · es · eu · fi · fr · hu · in · it · lt · nl · no · pl · pt · ro · rs · se · tr · ua · uk · usWhich national host to read, i.e. the LANGUAGE of the labels — not a different catalogue. 🔴 Measured on 2026-10-08: the same listing answers on every host with the SAME price in the SAME currency (46952423 = EUR 151,000 on .com, .de, .co.uk, .it, .us and .pl alike; the site does not convert, its currency selector is client-side display only), and `category_id=702` returns 22,206 / 22,246 / 22,224 / 22,228 / 22,253 / 22,263 on .com / .de / .co.uk / .us / .cn / .com.ua within the same minutes. Pick the market whose language you want the labels and descriptions in. Not every market exists on both sites — a pair with no host answers MARKET_UNAVAILABLE and names the site that does have it, rather than returning fields this engine cannot name.
Try in playground →
post/agriaffaires/v1/facets3 credits

The source's own live filter vocabulary and counts for a query: which categories and manufacturers have stock and how much, which conditions, gearboxes, drive and equipment values exist for that category, and the real minimum and maximum of every numeric property it offers. 🔴 This is the action that keeps you out of this source's worst behaviour — a value it does not recognise does not error, it answers HTTP 200 with zero rows and a total of 0 — so take manufacturer ids and property values from here rather than guessing them.

ParameterAllowed / rangeDescription
site = agriaffairesoptionalagriaffaires · machineryzoneWhich of MB Diffusion's two marketplaces to read. 🔴 This is a REAL data axis, not a language switch: `agriaffaires` is agricultural machinery (tractors, harvesters, sprayers, balers) and `machineryzone` is construction, earthmoving and handling (excavators, loaders, cranes, forklifts). They are separate catalogues on the same application, so a listing id from one does not exist on the other.
market = froptionalar · br · ca · ca_fr · cn · cz · de · es · eu · fi · fr · hu · in · it · lt · nl · no · pl · pt · ro · rs · se · tr · ua · uk · usWhich national host to read, i.e. the LANGUAGE of the labels — not a different catalogue. 🔴 Measured on 2026-10-08: the same listing answers on every host with the SAME price in the SAME currency (46952423 = EUR 151,000 on .com, .de, .co.uk, .it, .us and .pl alike; the site does not convert, its currency selector is client-side display only), and `category_id=702` returns 22,206 / 22,246 / 22,224 / 22,228 / 22,253 / 22,263 on .com / .de / .co.uk / .us / .cn / .com.ua within the same minutes. Pick the market whose language you want the labels and descriptions in. Not every market exists on both sites — a pair with no host answers MARKET_UNAVAILABLE and names the site that does have it, rather than returning fields this engine cannot name.
queryoptional—Free-text search across the whole listing (title, model and description), exactly as the site's own search box does it. Either `query` or `category_id` is the normal starting point. Use `keyword` instead for a narrower match: measured on the same minute, `query=tracteur` answered 33,908 and `keyword=tracteur` 7,905 — the keyword form is title/model-weighted while this one also matches the seller's prose.
keywordoptional—A narrower text match than `query` (the site's `search[keyword]` field). Measured: 7,905 rows for 'tracteur' where `query` gave 33,908, and it still reaches other categories (a lorry carrying a tractor matched), so it is a text filter, not a category filter.
category_idoptional1–The marketplace's own category (tree) id — 702 is the farm tractor, 802 the fertiliser spreader. The id is language- and brand-invariant (702 answers 'Tracteur agricole' on .com and 'Traktor' on .de), which is why it, and not a slug, is the handle. Get ids from `categories`, `facets` or `suggest`. 🔴 The source will not accept a category together with other filters in one request and answers 200 with zero rows if you try, so this engine sends it first and the rest afterwards — which costs one extra upstream request when you combine them.
listing_typeoptionalsale · wanted · auction · rentalWhat kind of advert. Defaults to everything, which MIXES offers with 'wanted' adverts and auctions — pass `sale` if you only want machines actually on offer. Measured on one query: 32,797 for sale, 829 wanted, 179 auctions, 97 rentals. The four ids behind these names are identical on both brands and in every language.
countryoptionalAE · AL · AM · AT · BA · BE · BG · CA · CH · CL · CN · CZ · DE · DK · EE · ES · FR · GB · GR · HR · HU · ID · IE · IT · LT · LU · LV · MD · ME · MK · MU · MX · NL · NO · PA · PH · PL · PT · PY · RO · RS · RU · SE · SI · SK · TH · TW · UA · USSeller country, as an ISO-3166-1 alpha-2 code. 🔴 This is an enum and not a pass-through for a reason that was measured: the source takes a numeric area id of its own, and an id it does not know produces a DIFFERENT, WRONG result set rather than an error or an empty one (control 33,942 rows; France 15,230; bogus id 11,117; the string 'FR' 11,125 — all HTTP 200 with real rows). The ids behind these codes were read off the source's own select and are brand- and language-invariant.
Try in playground →
post/agriaffaires/v1/suggest1 credit

The site's own autocomplete for a typed prefix, in two buckets: whole search phrases people use, and categories with their numeric ids and live counts. Use it to turn what a user typed into values the `category_id` and `query` filters actually accept.

ParameterAllowed / rangeDescription
queryrequired—What the user has typed so far. The source wants at least three characters and answers in two buckets: whole search phrases and categories with their numeric ids and live counts — which is how you turn typing into values the filters accept.
site = agriaffairesoptionalagriaffaires · machineryzoneWhich of MB Diffusion's two marketplaces to read. 🔴 This is a REAL data axis, not a language switch: `agriaffaires` is agricultural machinery (tractors, harvesters, sprayers, balers) and `machineryzone` is construction, earthmoving and handling (excavators, loaders, cranes, forklifts). They are separate catalogues on the same application, so a listing id from one does not exist on the other.
market = froptionalar · br · ca · ca_fr · cn · cz · de · es · eu · fi · fr · hu · in · it · lt · nl · no · pl · pt · ro · rs · se · tr · ua · uk · usWhich national host to read, i.e. the LANGUAGE of the labels — not a different catalogue. 🔴 Measured on 2026-10-08: the same listing answers on every host with the SAME price in the SAME currency (46952423 = EUR 151,000 on .com, .de, .co.uk, .it, .us and .pl alike; the site does not convert, its currency selector is client-side display only), and `category_id=702` returns 22,206 / 22,246 / 22,224 / 22,228 / 22,253 / 22,263 on .com / .de / .co.uk / .us / .cn / .com.ua within the same minutes. Pick the market whose language you want the labels and descriptions in. Not every market exists on both sites — a pair with no host answers MARKET_UNAVAILABLE and names the site that does have it, rather than returning fields this engine cannot name.
Try in playground →
post/agriaffaires/v1/dealers3 credits

The dealer directory — the supplier side of the marketplace. Company name, activity, country, town, department, how many further addresses the group has, the manufacturer ranges they carry and how many adverts they have online, 50 a page. Searchable by company name, filterable by country, and ordered by the source's own sort values — company name, or how many adverts a dealer has online.

ParameterAllowed / rangeDescription
site = agriaffairesoptionalagriaffaires · machineryzoneWhich of MB Diffusion's two marketplaces to read. 🔴 This is a REAL data axis, not a language switch: `agriaffaires` is agricultural machinery (tractors, harvesters, sprayers, balers) and `machineryzone` is construction, earthmoving and handling (excavators, loaders, cranes, forklifts). They are separate catalogues on the same application, so a listing id from one does not exist on the other.
market = froptionalar · br · ca · ca_fr · cn · cz · de · es · eu · fi · fr · hu · in · it · lt · nl · no · pl · pt · ro · rs · se · tr · ua · uk · usWhich national host to read, i.e. the LANGUAGE of the labels — not a different catalogue. 🔴 Measured on 2026-10-08: the same listing answers on every host with the SAME price in the SAME currency (46952423 = EUR 151,000 on .com, .de, .co.uk, .it, .us and .pl alike; the site does not convert, its currency selector is client-side display only), and `category_id=702` returns 22,206 / 22,246 / 22,224 / 22,228 / 22,253 / 22,263 on .com / .de / .co.uk / .us / .cn / .com.ua within the same minutes. Pick the market whose language you want the labels and descriptions in. Not every market exists on both sites — a pair with no host answers MARKET_UNAVAILABLE and names the site that does have it, rather than returning fields this engine cannot name.
companyoptional—Filter the dealer directory by company name (the source's own `all_company` field).
countryoptionalAE · AL · AM · AT · BA · BE · BG · CA · CH · CL · CN · CZ · DE · DK · EE · ES · FR · GB · GR · HR · HU · ID · IE · IT · LT · LU · LV · MD · ME · MK · MU · MX · NL · NO · PA · PH · PL · PT · PY · RO · RS · RU · SE · SI · SK · TH · TW · UA · USSeller country, as an ISO-3166-1 alpha-2 code. 🔴 This is an enum and not a pass-through for a reason that was measured: the source takes a numeric area id of its own, and an id it does not know produces a DIFFERENT, WRONG result set rather than an error or an empty one (control 33,942 rows; France 15,230; bogus id 11,117; the string 'FR' 11,125 — all HTTP 200 with real rows). The ids behind these codes were read off the source's own select and are brand- and language-invariant.
page = 1optional1–400Directory page, 50 dealers each.
sort = nameoptionalname · name_desc · listings_asc · listings_desc · defaultDirectory order, using the source's own five sort values. The default here is `name` rather than the source's `default`, because `default` is exactly that — an order the source does not name and does not document, so a caller paging through 2,600 dealers would be relying on something that can change under them. Pass `default` explicitly if you want the source's own ordering.
Try in playground →
post/agriaffaires/v1/dealer3 credits

One dealer's public business profile by id: company name, activity, registration number where the source prints one, how long they have been on the marketplace, their own website, their follower count, the manufacturer ranges they carry and the breakdown of their stock by category with live counts. Contact people, phone numbers and e-mail addresses are deliberately not returned.

ParameterAllowed / rangeDescription
dealer_idrequired—The dealer's own numeric id, as `dealers` and `search` return it.
site = agriaffairesoptionalagriaffaires · machineryzoneWhich of MB Diffusion's two marketplaces to read. 🔴 This is a REAL data axis, not a language switch: `agriaffaires` is agricultural machinery (tractors, harvesters, sprayers, balers) and `machineryzone` is construction, earthmoving and handling (excavators, loaders, cranes, forklifts). They are separate catalogues on the same application, so a listing id from one does not exist on the other.
market = froptionalar · br · ca · ca_fr · cn · cz · de · es · eu · fi · fr · hu · in · it · lt · nl · no · pl · pt · ro · rs · se · tr · ua · uk · usWhich national host to read, i.e. the LANGUAGE of the labels — not a different catalogue. 🔴 Measured on 2026-10-08: the same listing answers on every host with the SAME price in the SAME currency (46952423 = EUR 151,000 on .com, .de, .co.uk, .it, .us and .pl alike; the site does not convert, its currency selector is client-side display only), and `category_id=702` returns 22,206 / 22,246 / 22,224 / 22,228 / 22,253 / 22,263 on .com / .de / .co.uk / .us / .cn / .com.ua within the same minutes. Pick the market whose language you want the labels and descriptions in. Not every market exists on both sites — a pair with no host answers MARKET_UNAVAILABLE and names the site that does have it, rather than returning fields this engine cannot name.
Try in playground →
post/agriaffaires/v1/dealer_listings3 credits

One dealer's actual stock, paged — the same row shape as `search`. Unlike some machinery marketplaces, this source's dealer pages carry REAL listings rather than login-walled placeholders (measured: 50 genuine rows with distinct ids, prices and years, over 13 pages for one dealer), so they are returned.

ParameterAllowed / rangeDescription
dealer_idrequired—The dealer's own numeric id, as `dealers` and `search` return it.
site = agriaffairesoptionalagriaffaires · machineryzoneWhich of MB Diffusion's two marketplaces to read. 🔴 This is a REAL data axis, not a language switch: `agriaffaires` is agricultural machinery (tractors, harvesters, sprayers, balers) and `machineryzone` is construction, earthmoving and handling (excavators, loaders, cranes, forklifts). They are separate catalogues on the same application, so a listing id from one does not exist on the other.
market = froptionalar · br · ca · ca_fr · cn · cz · de · es · eu · fi · fr · hu · in · it · lt · nl · no · pl · pt · ro · rs · se · tr · ua · uk · usWhich national host to read, i.e. the LANGUAGE of the labels — not a different catalogue. 🔴 Measured on 2026-10-08: the same listing answers on every host with the SAME price in the SAME currency (46952423 = EUR 151,000 on .com, .de, .co.uk, .it, .us and .pl alike; the site does not convert, its currency selector is client-side display only), and `category_id=702` returns 22,206 / 22,246 / 22,224 / 22,228 / 22,253 / 22,263 on .com / .de / .co.uk / .us / .cn / .com.ua within the same minutes. Pick the market whose language you want the labels and descriptions in. Not every market exists on both sites — a pair with no host answers MARKET_UNAVAILABLE and names the site that does have it, rather than returning fields this engine cannot name.
page = 1optional1–200Page of this dealer's stock, 50 rows each; `meta.pagination.last_page` is the source's own last page for that dealer. The cap of 200 is carried over from the search route, where it was measured; the dealer route's own ceiling was not measured, and no dealer in the directory has anything close to 10,000 adverts online, so it has never been reached.
Try in playground →
post/agriaffaires/v1/price_index2 credits

The marketplace's own PRICE OBSERVATORY — what a make, model and year actually sells for on this marketplace: minimum, maximum and average asking price plus how many listings the figure rests on. Call it with nothing for the rubric list, with `rubric_id` for its makes, with `rubric_id` + `make_id` for its models, and with `model` + `year` on top for the price band itself. 🔴 This sub-system keeps its own id space: rubric 510 and make 4039 are the farm tractor and John Deere here, while `search` calls the same two 702 and 7607 — and giving it a search id answers an EMPTY result rather than an error, so always take the ids from this action.

ParameterAllowed / rangeDescription
site = agriaffairesoptionalagriaffaires · machineryzoneWhich of MB Diffusion's two marketplaces to read. 🔴 This is a REAL data axis, not a language switch: `agriaffaires` is agricultural machinery (tractors, harvesters, sprayers, balers) and `machineryzone` is construction, earthmoving and handling (excavators, loaders, cranes, forklifts). They are separate catalogues on the same application, so a listing id from one does not exist on the other.
market = froptionalar · br · ca · ca_fr · cn · cz · de · es · eu · fi · fr · hu · in · it · lt · nl · no · pl · pt · ro · rs · se · tr · ua · uk · usWhich national host to read, i.e. the LANGUAGE of the labels — not a different catalogue. 🔴 Measured on 2026-10-08: the same listing answers on every host with the SAME price in the SAME currency (46952423 = EUR 151,000 on .com, .de, .co.uk, .it, .us and .pl alike; the site does not convert, its currency selector is client-side display only), and `category_id=702` returns 22,206 / 22,246 / 22,224 / 22,228 / 22,253 / 22,263 on .com / .de / .co.uk / .us / .cn / .com.ua within the same minutes. Pick the market whose language you want the labels and descriptions in. Not every market exists on both sites — a pair with no host answers MARKET_UNAVAILABLE and names the site that does have it, rather than returning fields this engine cannot name.
rubric_idoptional1–The price observatory's own rubric id — 510 is the farm tractor. 🔴 NOT the search `category_id` for the same thing (702): the observatory keeps its own id space and answers an EMPTY result rather than an error when given the other one. Call this action with no parameters to get the rubric list.
make_idoptional1–The price observatory's own make id — 4039 is John Deere. 🔴 NOT the search facet's manufacturer id for the same brand (7607): measured, `/observatoire-prix/search/510/7607/6r195/2024` answers `{"data":[]}` while `.../510/4039/6r195/2024` answers the real price band. Requires `rubric_id`; with only `rubric_id` this action returns the make list.
modeloptional—The model, as the observatory spells it. Requires `rubric_id` and `make_id`; with only those two this action returns the model list, which is the spelling to use.
yearoptional1900–2100Year of construction. With `rubric_id`, `make_id` and `model` this is what turns the call into the actual price band: minimum, maximum and average asking price plus how many listings that figure rests on.
Try in playground →
post/agriaffaires/v1/locations1 credit

The geography the filters accept, from the source itself: the countries this engine will take, then a country's regions and a region's departments with the ids `search` wants. 🔴 It exists because an area id the source does not know does not error — it answers a different, wrong result set — so the only safe ids are the ones it hands out itself.

ParameterAllowed / rangeDescription
site = agriaffairesoptionalagriaffaires · machineryzoneWhich of MB Diffusion's two marketplaces to read. 🔴 This is a REAL data axis, not a language switch: `agriaffaires` is agricultural machinery (tractors, harvesters, sprayers, balers) and `machineryzone` is construction, earthmoving and handling (excavators, loaders, cranes, forklifts). They are separate catalogues on the same application, so a listing id from one does not exist on the other.
market = froptionalar · br · ca · ca_fr · cn · cz · de · es · eu · fi · fr · hu · in · it · lt · nl · no · pl · pt · ro · rs · se · tr · ua · uk · usWhich national host to read, i.e. the LANGUAGE of the labels — not a different catalogue. 🔴 Measured on 2026-10-08: the same listing answers on every host with the SAME price in the SAME currency (46952423 = EUR 151,000 on .com, .de, .co.uk, .it, .us and .pl alike; the site does not convert, its currency selector is client-side display only), and `category_id=702` returns 22,206 / 22,246 / 22,224 / 22,228 / 22,253 / 22,263 on .com / .de / .co.uk / .us / .cn / .com.ua within the same minutes. Pick the market whose language you want the labels and descriptions in. Not every market exists on both sites — a pair with no host answers MARKET_UNAVAILABLE and names the site that does have it, rather than returning fields this engine cannot name.
countryoptionalAE · AL · AM · AT · BA · BE · BG · CA · CH · CL · CN · CZ · DE · DK · EE · ES · FR · GB · GR · HR · HU · ID · IE · IT · LT · LU · LV · MD · ME · MK · MU · MX · NL · NO · PA · PH · PL · PT · PY · RO · RS · RU · SE · SI · SK · TH · TW · UA · USCountry, as an ISO-3166-1 alpha-2 code. With no country this action returns the country list itself; with one it returns that country's regions; with `region_id` as well, that region's departments.
region_idoptional1–Seller region, by the source's own id, which `locations` publishes for a country. Requires `country`, and the engine checks the id against the source's own live region list for that country before sending it — see the note on `country` for why.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.