# Agroads Scraper: Argentina Tractors, Trucks & Machinery (`recordsdata/agroads-ar-scraper`) Actor

Scrape agroads.com.ar: about 60,000 ads of Argentine tractors, harvesters, sprayers, trucks, trailers, spare parts and farm equipment with USD and ARS prices, hours, power, province, photos and 756 dealers. Monitor new ads and price drops. No login. Export JSON, CSV, Excel or XML.

- **URL**: https://apify.com/recordsdata/agroads-ar-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)

## 🚜 Agroads Scraper - Argentina Tractors, Harvesters, Trucks and Parts - RecordsData

> 🚀 **Export agroads.com.ar listings in minutes.** Search about 60,000 live ads of Argentina's agricultural and heavy machinery marketplace: tractors, combine harvesters, sprayers, seeders, trucks, pickups, trailers, road machinery, spare parts and farm equipment. Filter by brand, province, condition, price in USD, engine power and hours. Open every ad for power, hours, year, description, photos, coordinates and payment terms, or list the 756 dealer shops. No login, no browser.

**Agroads Scraper is an Apify Actor that collects public ads from agroads.com.ar, the Argentine classifieds site for agricultural machinery.** The dataset has 62 columns across three record types, a full ad row carries about 40 of them, prices come as a number with the currency (USD or ARS), and a run of 3 ads finishes in about 6 seconds.

| 🎯 Target audience | 💡 Primary use cases |
|---|---|
| Machinery dealers and brokers | Competitor stock and asking prices by brand, model and year |
| Farm lenders, insurers and appraisers | Used tractor and harvester valuation, price per hour of use |
| Exporters and importers | Sourcing lists of used machinery in Argentina with photos and location |
| Manufacturers and parts sellers | Dealer directory, market share by brand, spare part demand |
| Data teams and researchers | Argentine agricultural equipment price history and monitoring |

### 📋 What the Agroads Scraper does

The Actor reads the same public pages every visitor of agroads.com.ar sees. Three modes cover the site.

- **search**: ads of the sections you pick (18 choices, from all machinery to tractors, harvesters, seeders, sprayers, trucks, pickups, trailers, spare parts and farm equipment), with optional words, brands, provinces, condition, seller type, price limits in USD, engine power, hours of use, commercial terms and sort order. List cards are fast. Turn on **Open every ad** to add the full page of each ad.
- **urls**: paste ad addresses, list page addresses (`seccion.asp?subcat=10`), dealer pages (`/e/zanello-cmz-s-a/`) or plain ad numbers. Several kinds can be mixed in one run.
- **dealers**: the 756 dealer, shop and manufacturer pages of the site with name, address, member since, years in the sector, ad count and ads per category. A name filter narrows the list.

A **monitor** option works in search mode: return only ads you have not seen, and report ads whose price changed.

### 📊 Output

Every row has a `recordType`: `machine` (an ad), `dealer` (a dealer page) or `changed-listing` (monitor). Fields without a value are left out, never filled with `null`. Column order is fixed: image first, identity and price next, then specs, terms, location, media, seller, and `scrapedAt` last.

| Field | Type | Example |
|---|---|---|
| `listingId` | string | 1097808 |
| `recordType` | string | machine |
| `vehicleType` | string | machinery (also tractor, truck, car, trailer, part) |
| `category` / `categoryPath` | string | Cosechadoras / Maquinaria Agricola > Cosechadoras > Agrícolas |
| `price` / `currency` | number / string | 220000 / USD |
| `originalPrice`, `discountPercent` | number | when the site shows a discount |
| `make`, `model`, `year` | string, string, number | John Deere, 9650, 2008 |
| `condition` | string | used (new, used) |
| `hoursUsed`, `powerHp` | number | hours of work and engine HP |
| `fuelType`, `widthM`, `capacityL` | string, number | diesel, boom width, tank size |
| `paymentTerms`, `acceptsTradeIn` | array, boolean | 40% Entrega + Financiación, true |
| `city` / `region` | string | Las Parejas / Santa Fe |
| `latitude` / `longitude` | number | -32.68 / -61.53 (city level) |
| `images`, `imageCount` | array of URLs, number | all photos in 1200 px |
| `publishedAt`, `daysOnline` | date, number | 2026-10-18, 2 |
| `modelRating`, `modelReviewCount` | number | 4.2, 5 |
| `sellerName`, `sellerUrl`, `sellerType` | string | businesses only |
| `isPrivateSeller` | boolean | true for private sellers (no name or phone) |

Other groups: price changes (`previousPrice`, `priceChange`, `priceChangePct`, `changeType`), delivery and shipping flags, dealer fields (`sellerSinceYear`, `sellerListingCount`, `yearsInSector`, `categoryCounts`, `dealerSlug`) and the optional `raw` block. A full ad row has about 40 fields, a list card about 25, depending on what the seller filled in.

Sample `machine` row of a full ad from a real cloud run (photo list shortened):

```json
{
  "imageUrl": "https://static2.aastatic.com.ar/files/variants/1200/e777936a024844048aadedd7aaf406e0.jpg",
  "recordType": "machine",
  "title": "9650 con 30 Pies de Productor Pequeño",
  "listingId": "1097808",
  "url": "https://www.agroads.com.ar/detalle.asp?clasi=1097808",
  "sourceSite": "agroads.com.ar",
  "country": "AR",
  "listingType": "sale",
  "vehicleType": "machinery",
  "category": "Cosechadoras",
  "categoryPath": "Maquinaria Agricola > Cosechadoras > Agrícolas > De tracción simple",
  "price": 220000,
  "currency": "USD",
  "make": "John Deere",
  "model": "9650",
  "year": 2008,
  "condition": "used",
  "powerHp": 300,
  "paymentTerms": ["40% Entrega + Financiación", "Acepta Canje Cereal"],
  "acceptsTradeIn": true,
  "description": "Cosechadora + plataforma de 30 pies + cabezal Maizero de 13 A 52 ...",
  "city": "Las Parejas",
  "region": "Santa Fe",
  "latitude": -32.6813791,
  "longitude": -61.5264646,
  "images": ["https://static2.aastatic.com.ar/files/variants/1200/e777936a024844048aadedd7aaf406e0.jpg", "..."],
  "imageCount": 4,
  "publishedAt": "2026-10-18",
  "daysOnline": 2,
  "updatedDaysAgo": 2,
  "modelRating": 4.2,
  "modelReviewCount": 5,
  "sellerType": "private",
  "isPrivateSeller": true,
  "scrapedAt": "2026-10-19T03:09:42.538Z"
}
```

### ✨ Why choose this Actor

- 🧩 **Three modes, one dataset**: ads, full ad pages, dealer pages and price changes, each billed separately so you pay only for what you read.
- 🌾 **Whole site coverage**: 18 section choices, including the spare parts and farm equipment sections that most machinery scrapers skip.
- 🔒 **Private sellers stay private**: their names and phone numbers are never output, and phone numbers or e-mails typed into their texts are replaced with a marker.
- 🛡️ **Filters you can trust**: every filter is applied by the site, applied by reading a whole section subcategory by subcategory, or checked against each row, and none is silently ignored. A text search is cut off when the site drifts outside your section.
- 🔁 **Monitor mode**: scheduled runs return only new ads, or ads whose price moved.
- ⚡ **Light to run**: plain HTTP, no browser, peak memory about 100 MB in the cloud.

### 📈 How it compares to alternatives

No other Actor on the Apify Store reads agroads.com.ar (checked on 2026-10-18). Actors for other machinery marketplaces exist and set the price level.

| | This Actor | crawloop/tractorhouse-scraper | crawloop/mascus-scraper |
|---|---|---|---|
| Site | agroads.com.ar (Argentina) | tractorhouse.com (USA) | mascus.com (Europe) |
| Argentine ads, USD and ARS prices | Yes | No | No |
| Price per 1,000 list rows | $2.50 | $2.50 | $1.69 |
| Price per 1,000 full ads | $6.00 | $6.00 | $3.99 |

Read on 2026-10-18. Those Actors cover other websites, so they are price references and not substitutes. For Argentina this Actor is the only dedicated option on the Store.

### 💰 Pricing

Pay per event, no monthly fee. Prices per result:

| Event | Price |
|---|---|
| Machine record (list card) | $0.0025 |
| Machine detail record (full ad page) | $0.0060 |
| Dealer record | $0.0060 |
| Changed ad record (monitor) | $0.0025 |

Examples: 1,000 list cards cost $2.50, 100 full ads cost $0.60, all 756 dealers cost $4.54. Invalid input, empty searches and error rows charge nothing.

### 🚀 How to use

1. Create a free account at [console.apify.com](https://console.apify.com) and open the Actor.
2. Choose **What to collect**. For a first test keep `search`, pick a section such as **Tractors**, and set **Maximum items** to 10.
3. Optionally add words, brands (`Zanello`, `John Deere`, `Pauny`), provinces, a price range in USD, hours of use or engine power.
4. Press **Start**. Open the dataset when the run finishes and download JSON, CSV, Excel, XML or HTML.
5. To watch a market, turn on **Only new ads** and **Report price changes**, give the search a **Monitor name** and schedule the Actor.

### ⚙️ Input

| Field | Type | Meaning |
|---|---|---|
| `mode` | string | search, urls or dealers |
| `categories` | array | all-machinery, tractors, harvesters, seeders, sprayers, trucks, pickups, trailers, parts, equipment and more |
| `searchQuery`, `brands` | string, array | Words in the ad text, brand names as shown on the site |
| `provinces` | array | Any of the 23 provinces |
| `condition`, `sellerType` | string | new or used (on a whole section the subcategories are read one by one); dealer, shop, manufacturer or private |
| `minPriceUsd` / `maxPriceUsd` | integer | Limits in USD |
| `powerBand`, `hoursBand` | string | Engine power and hours of use bands (subcategories without that field return nothing) |
| `sortBy` | string | newest, relevance, popular, price, year-oldest, year-newest |
| `maxItems` | integer | Cap on rows (default 50) |
| `fetchDetails` | boolean | Open every ad for the full row |
| `onlyNew`, `trackPriceChanges`, `stateKey` | boolean, boolean, string | Monitor: new ads, price changes, monitor name |

A minimal JSON example:

```json
{ "mode": "search", "categories": ["tractors"], "brands": ["Zanello"], "provinces": ["Córdoba"], "condition": "used", "fetchDetails": true, "maxItems": 50 }
```

### 💼 Business use cases

Dealers and brokers track competitor stock and asking prices by brand and year. Lenders, insurers and appraisers value used tractors and harvesters with a price per hour of use. Exporters build sourcing lists with photos and the province of each machine. Manufacturers and parts sellers read the dealer directory and the spare part section. Analysts follow Argentine machinery prices over time with monitor mode.

### 🔌 Automating and integrations

Schedule runs in Apify Console and send results to Make, Zapier, n8n, Google Sheets, Slack, Airbyte or your own webhook. The Apify API and the JavaScript and Python clients start runs and read datasets.

### 🤖 Use with AI agents (MCP)

Connect the Apify MCP server (`mcp.apify.com`) to Claude, Cursor or another MCP client and the Actor appears as a tool.

**Tool description:** Scrape agroads.com.ar (Argentina) machinery ads into typed rows with price and currency, make, model, year, hours, power, province, photos and dealer. Also lists dealers and reports new ads and price changes.

**Example agent prompt:** "Get 30 used John Deere tractors in Córdoba from agroads.com.ar, cheapest first." The agent sends `{ "mode": "search", "categories": ["tractors"], "brands": ["John Deere"], "provinces": ["Córdoba"], "condition": "used", "sortBy": "price", "maxItems": 30 }` and analyzes the rows.

### ⚠️ Limits and legal

The Actor reads public pages only and honours the robots.txt of the site. The site terms of use reserve its content, so use the data under them and under the privacy law that applies to you. Coordinates are those of the listing city, sorting by price mixes dollar and peso ads, and the site shows hours of use but no kilometers.

### Frequently Asked Questions

#### 🚜 What data can I scrape from agroads.com.ar?

Machinery ads: tractors, combine harvesters, seeders, sprayers, fertilizer spreaders, mowers, balers, headers, hoppers, trucks, pickups, trailers, semi-trailers, road machinery, spare parts and farm equipment, plus the dealer pages. Each ad has price and currency, make, model, year, condition, location, photos and payment terms, and full ads add power, hours, description, coordinates and rating.

#### 🔎 How do I scrape ads for one brand or province?

Add the brand names to **Brands** (`Zanello`, `Massey Ferguson`) and the provinces to **Provinces**. Brands are matched to the site's own brand list per section, and a brand the site does not list for a section is searched as text, with the log saying so. A province with no ads returns nothing.

#### 🔢 How many ads can one search return?

Everything the site shows for the filters. A list page holds up to 60 ads, and the Actor follows the site's own next-page link: all tractors (5,430 on 2026-10-18) take 91 pages. **Maximum list pages per search** defaults to 100 pages (6,000 ads), so raise it for very large sections.

#### 🆕 Why does newest first return so few ads on a whole section?

On a whole section (all machinery, spare parts, farm equipment) the site lists only its latest new ads when sorted newest first (475 of 33,894 for all machinery on 2026-10-18). A single category such as tractors is complete in that order. For the entire section choose the site default sort (`relevance`) or split by category. The log says so when it happens.

#### 🎚️ How do condition, power and hours work on a whole section?

agroads.com.ar applies the new-or-used, engine power and hours filters only inside a subcategory and ignores them on a whole-section page (all machinery, spare parts, farm equipment). When you set one of them with a whole-section choice, the Actor reads that section's subcategories one by one, biggest first, with the filter applied by the site in each, so the result is exact. Sorting then applies inside each subcategory, not across the whole section. Subcategories that have no power or hours field (mowers, balers, brush cutters, road machinery) return nothing for those two filters. Seller type, province, price, commercial condition, offers and text search work on the whole section directly. As a last check, an ad whose own data clearly falls outside the condition, seller type, power, hours or USD price you asked for is left out, and the log counts how many.

#### 🔤 How does the text search behave?

It is the site's own relevance search. It can map words to a brand or category and show similar ads, so the Actor keeps only ads of the sections you chose, drops the "similar offers" block and stops when two pages in a row hold none. Use the brand and category filters when you need an exact set.

#### 💵 Which currency is used?

Each ad is priced in USD or ARS and the `currency` field says which. Price limits are in USD. Ads without a price carry `priceOnRequest: true` and no `price`, and **Only ads with a price** skips them.

#### 🕒 Is there mileage?

No. The site publishes hours of work (`hoursUsed`) for machines and no kilometers, so there is no mileage field. Trucks and pickups usually have a year and no hours either, and the field is left out when the seller did not fill it in.

#### 🧑 Does it return names, phones or e-mails?

Private sellers are never named and their phone numbers are never output (`isPrivateSeller: true`). Phone numbers and e-mails in their texts are replaced with `[phone removed]` and `[email removed]`. Businesses are named with their dealer page, and **Include dealer contact details** adds their WhatsApp number. The site's private-seller filter also returns sellers that show a trade name on the list card, so everything that filter returns is treated as private. In a list-only run without it, only cards tagged Particular are recognised as private, so turn on **Fetch full ad details** or set **Seller type** to private when that split matters.

#### 🔁 How do I get only new ads or price changes?

Turn on **Only new ads** and give the search a **Monitor name**. The first run returns the ads found, later runs return only ads not seen before. With **Report price changes** an ad whose price moved comes back as a `changed-listing` row with `previousPrice`, `priceChange` and `priceChangePct`.

#### 🛡️ Do I need a proxy or an API key?

The site rate limits each IP address, so the Actor uses the Apify datacenter proxy by default, with a fresh session for every request. That proxy is part of your Apify account and nothing else is needed. Without a proxy the site starts answering with a challenge after about 5 requests.

#### 🧪 What happens if my input is wrong or nothing matches?

Invalid input, for example a minimum price above the maximum, ends the run as succeeded with one free error row that explains the fix, and nothing is charged. A search with no matches finishes with no rows, also at no charge.

#### 🆓 What do free plans get?

Free plans return up to 10 items per run, which is enough to test every mode and check the fields. Paid plans have no item cap beyond the **Maximum items** you set.

#### 📤 Which formats can I export?

JSON, CSV, Excel, XML, HTML and RSS from the dataset page in Apify Console, or through the Apify API and the JavaScript and Python clients. Column order is fixed, with the image first and the scrape time last, so exports line up between runs.

#### ⚖️ Is it legal to scrape agroads.com.ar?

The Actor reads public pages that need no login and does not touch private data. The site terms of use reserve the rights to its content, so use the data in line with them and with the privacy law that applies to you.

### 🔗 Recommended Actors

- [RecordsData collection](https://apify.com/RecordsData): other classifieds, real estate and public data scrapers by the same team.

**🆘 Need help?** Write to <contact.punkrecordsdata@gmail.com> or open an issue in the Issues tab.

# Actor input Schema

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

search = machinery ads for the categories and filters below. urls = the ad, list page or dealer addresses and ad numbers you list. dealers = dealer (seller business) profiles of agroads.com.ar.

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

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

## `categories` (type: `array`):

Which sections of the site to read (search mode). All agricultural machinery covers every machine and vehicle category in one list. Spare parts and farm equipment are separate sections of the site.

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

Optional. Words searched in the ad text, for example "john deere 7515" or "cosechadora". Empty means every ad of the chosen categories.

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

Optional. Brand names as shown on the site, for example Zanello, John Deere, Massey Ferguson or Pauny. Each brand is searched in every chosen category. A brand the site does not list for a category (the whole-section choices have no brand list at all) is searched as text, and only ads whose make or title contains it are kept.

## `provinces` (type: `array`):

Optional. Keep only ads located in these provinces. Empty means all of Argentina.

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

New or used machines. The site applies this filter only inside a subcategory, so on a whole section (all machinery, spare parts, farm equipment) the Actor reads the subcategories one by one, biggest first.

## `sellerType` (type: `string`):

Who sells the machine. Private sellers are returned without any name or contact data; this also covers private sellers who show a trade name on the site.

## `minPriceUsd` (type: `integer`):

Only ads priced at or above this amount in US dollars. The site applies this filter to ads priced in dollars. Leave empty for no limit.

## `maxPriceUsd` (type: `integer`):

Only ads priced at or below this amount in US dollars. Leave empty for no limit.

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

Skip ads that show "Consultar" (price on request).

## `onlyOffers` (type: `boolean`):

Keep only ads the seller marks with a discount (the Ofertas list of the site).

## `powerBand` (type: `string`):

Horsepower band. Only subcategories that have a power field answer (for example tractors, combine harvesters and sprayers); the others return nothing. On a whole section the Actor reads the subcategories one by one, biggest first.

## `hoursBand` (type: `string`):

Hours-of-use band for used machines. Only subcategories that have an hours field answer (for example tractors, combine harvesters and sprayers). On a whole section the Actor reads the subcategories one by one, biggest first.

## `commercialCondition` (type: `string`):

Sale terms advertised by the seller, for example financing or accepting a used machine as part payment.

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

Order of the results. Newest first suits monitoring; on a whole section (all machinery, spare parts, farm equipment) the site lists only its latest new ads that way, so pick the site default to read the entire section. When condition, power or hours is set on a whole section, the order applies inside each subcategory. Sorting by price mixes dollar and peso ads.

## `maxSearchPages` (type: `integer`):

Each list page holds up to 60 ads. Raise it to go deeper into big categories.

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

urls mode: agroads.com.ar ad addresses (detalle.asp?clasi=1234567), list pages (seccion.asp?subcat=10) or dealer pages (agroads.com.ar/e/dealer-name/).

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

urls mode: ad numbers, the number after clasi= in an ad address.

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

dealers mode: keep only dealers whose address name contains these words, for example "zanello" or "agro".

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

Adds the full description, model, engine power, fuel, all photos, coordinates, dealer profile data and view count. Costs one extra site request per ad and uses the detail event price.

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

Adds the dealer WhatsApp number (open ad pages only) and keeps phone numbers and e-mails written in ad texts of businesses. Private sellers never get contact data.

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

Adds a raw field with the unprocessed values read from the page.

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

Return only ads this search has not returned before. The memory is stored in your own account. Schedule the run to watch the market.

## `trackPriceChanges` (type: `boolean`):

With Only new ads: ads already seen whose price changed are returned again as changed-listing rows with the previous price.

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

Name of the memory used by Only new ads. Use one name per saved search. Empty derives a name from your filters.

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

Clears the memory of this search before the run.

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

Ad pages read at the same time. All requests share one gentle pace of about one request per second.

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

Keep Apify Proxy on. The site answers a challenge page after a few requests from one address, so every request goes out through a fresh proxy address.

## Actor input object example

```json
{
  "mode": "search",
  "maxItems": 10,
  "categories": [
    "tractors"
  ],
  "searchQuery": "",
  "brands": [],
  "provinces": [],
  "condition": "all",
  "sellerType": "all",
  "onlyWithPrice": false,
  "onlyOffers": false,
  "powerBand": "any",
  "hoursBand": "any",
  "commercialCondition": "any",
  "sortBy": "newest",
  "maxSearchPages": 100,
  "startUrls": [
    "https://www.agroads.com.ar/seccion.asp?subcat=10"
  ],
  "listingIds": [],
  "dealerQuery": "",
  "fetchDetails": false,
  "includeContactDetails": false,
  "includeRaw": false,
  "onlyNew": false,
  "trackPriceChanges": false,
  "stateKey": "",
  "resetSeen": false,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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,
    "categories": [
        "tractors"
    ],
    "brands": [],
    "provinces": [],
    "minPriceUsd": 0,
    "maxPriceUsd": 0,
    "startUrls": [
        "https://www.agroads.com.ar/seccion.asp?subcat=10"
    ],
    "listingIds": [],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/agroads-ar-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,
    "categories": ["tractors"],
    "brands": [],
    "provinces": [],
    "minPriceUsd": 0,
    "maxPriceUsd": 0,
    "startUrls": ["https://www.agroads.com.ar/seccion.asp?subcat=10"],
    "listingIds": [],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/agroads-ar-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,
  "categories": [
    "tractors"
  ],
  "brands": [],
  "provinces": [],
  "minPriceUsd": 0,
  "maxPriceUsd": 0,
  "startUrls": [
    "https://www.agroads.com.ar/seccion.asp?subcat=10"
  ],
  "listingIds": [],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call recordsdata/agroads-ar-scraper --silent --output-dataset

```

## MCP server setup

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