# Auteco Scraper: Colombia Motorcycles, Parts & Dealers (`recordsdata/auteco-co-scraper`) Actor

Scrape auteco.com.co: motorcycle, e-bike and scooter models with specs and COP prices, color and year variants, helmets and rider gear, 66,800 spare parts with part numbers, and 6,100 dealer and service points. No login. Export JSON, CSV, Excel or XML.

- **URL**: https://apify.com/recordsdata/auteco-co-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 $20.00 / 1,000 vehicle model 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)

## 🏍️ Auteco Scraper - Colombia Motorcycles, E-Bikes, Spare Parts and Dealers - RecordsData

> 🚀 **Export auteco.com.co in minutes.** Read the motorcycle, e-bike, e-scooter and cargo trike catalog with full spec sheets and prices in COP, every color and model year as its own priced SKU, helmets and rider gear, about 66,800 spare parts with part numbers and compatible models, and the 6,108 dealer, parts counter and service points of Colombia. No login, no browser, no proxy.

**Auteco Scraper is an Apify Actor that collects the public catalog of Auteco Mobility (auteco.com.co), the Colombian distributor of Kawasaki, Victory, TVS, Benelli, Zontes, Kymco, Starker, Axxes and other brands.** Five record types share one dataset: vehicle models (about 70 fields each), vehicle variants, accessories, spare parts and dealer points. The dataset schema holds 118 columns, and a 3-row cloud run finishes in about 2 seconds with 40 MB of memory.

| 🎯 Target audience | 💡 Primary use cases |
|---|---|
| Motorcycle, e-bike and scooter market analysts | Price and spec comparison by brand, engine size, power and year, new model tracking |
| Parts distributors, workshops and marketplaces | Part number and compatible model lookups, price and stock monitoring for 66,800 parts |
| Insurers, lenders and fleet buyers | Price lists with monthly payment, reservation amount and tax notes per model |
| Mobility startups and delivery fleets | Electric motorcycle, e-bike and cargo vehicle ranges with battery, range and charge data |
| Sales, franchise and lead teams | Dealer and service point directory by city, brand and type with coordinates |

### 📋 What the Auteco Scraper does

The Actor reads the same public catalog interface that auteco.com.co shows to every visitor, plus the site's own dealer locator. Both answer with structured JSON, so rows are exact and no HTML parsing is involved. Pick one or more record types:

- **vehicles**: one row per model with price range, color list, typed specs (engine size, power, torque, dimensions, weight, brakes, suspension, tires, ABS, battery and range for electric ones), feature list, photos, videos, manuals, warranty, test drive link and the full spec sheet.
- **variants**: one row per color and model year SKU with its own price, stock, photos and the same spec fields.
- **accessories**: helmets, jackets, gloves, luggage, protection and parts for helmets, with brand, size, color, material and discount.
- **parts**: original and aftermarket spare parts with part number, family, compatible brands and models, price and stock.
- **dealers**: sales points, parts counters and authorized service centers with address, coordinates, brands served and the nearest city. Business phones and emails only with **Include dealer phones and emails**.

Narrow any of them with search text, categories (name, number or address), brands, a price range, in stock only and a sort order. Paste product addresses, product or SKU numbers or slugs to read exact items. Dealers can be limited by type, brand and city or coordinates, with the distance in kilometers.

### 📊 Output

Every row carries a `recordType`: `model`, `variant`, `accessory`, `part` or `dealer`. Fields without a value are left out, never filled with `null`. Column order is fixed: image first, identity and price next, then specs, text, media, seller and `scrapedAt` last. Key fields:

| Field | Type | Example |
|---|---|---|
| `title` | string | MOTO VICTORY ONE MP TRAKKU |
| `recordType` / `listingId` | string | model / 13257 |
| `make` / `model` / `year` | string / string / number | Victory / ONE MP TRAKKU / 2027 |
| `price` / `priceMax` / `currency` | number / number / string | 5290000 / 5590000 / COP |
| `monthlyPayment` / `installments` | number | 146945 / 36 |
| `engineSize` / `powerHp` / `torqueNm` | number | 97 / 5.9 / 6.5 |
| `weightKg` / `seatHeightMm` | number | 94 / 750 |
| `frontBrake` / `rearBrake` / `abs` | string / string / boolean | Disco (220 mm) / Tambor (110 mm) |
| `colors` / `stockQuantity` | array / number | NEGRO MATE ORO - ORO / 20 |
| `partNumber` / `compatibleModels` | string / array | 92070-1154 / KLX 140 |
| `dealerType` / `brandsServed` / `nearestCity` | string / array / string | sales / TVS / Bogota |
| `latitude` / `longitude` / `distanceKm` | number | 4.7144 / -74.072 / 0.39 |
| `specs` | object | Every label of the store spec sheet, in Spanish |

Real model row (shortened):

```json
{
  "title": "MOTO VICTORY ONE MP TRAKKU",
  "recordType": "model",
  "listingId": "13257",
  "url": "https://www.auteco.com.co/moto-victory-one-mp-trakku/p",
  "country": "CO",
  "vehicleType": "motorcycle",
  "make": "Victory",
  "year": 2027,
  "price": 5290000,
  "priceMax": 5590000,
  "currency": "COP",
  "monthlyPayment": 146945,
  "installments": 36,
  "available": true,
  "colors": ["NEGRO MATE ORO - ORO", "GRIS PIEDRA AZUL"],
  "fuelType": "Gasolina corriente",
  "engineSize": 97,
  "powerHp": 5.9,
  "torqueNm": 6.5,
  "weightKg": 94,
  "firstMotorcycle": true,
  "warranty": "24 meses o 24.000 km lo primero en cumplirse."
}
```

### ✨ Why choose this Actor

- 🧩 **Whole store in one Actor**: vehicles, color and year variants, accessories, spare parts and the dealer network, each billed as its own event so you pay only for what you read.
- 📐 **Typed specs, not just text**: engine size, power, torque, dimensions in millimeters, weight, battery and range arrive as numbers you can sort and filter, next to the full Spanish spec sheet.
- 🔢 **Beyond the 2,500 product window**: the store returns at most 2,500 products per search. The Actor splits large reads by brand, stock, price band and category, so a 3,742 part category came back complete (3,742 unique rows, 0 duplicates).
- 🗺️ **Whole country dealer map**: 6,108 unique points (669 sales, 4,810 parts counters, 629 service centers) found by tiling Colombia, or the nearest points to a city or coordinate.
- 🔁 **Monitor mode**: scheduled runs return only new items, or items whose price changed, with the previous price and the change.
- ⚡ **Light to run**: plain HTTP, no browser, no proxy, 40 MB peak memory on a 3-row cloud run.

### 📈 How it compares to alternatives

| | This Actor | Generic web scrapers | Manual export |
|---|---|---|---|
| Scope | Auteco catalog, spare parts and dealers | Any page, you build the parser | Browsing page by page |
| Spec fields | About 70 typed fields per model plus the spec sheet | Raw page text | Whatever you copy |
| Variants | Color and year SKUs with own price and stock | Not separated | Manual |
| Dealer network | 6,108 points with coordinates | Not available | Map clicks |
| Price per 1,000 | See Pricing | Compute and proxy cost, your own code | Your time |

No other Apify Actor for auteco.com.co was found on the Store when this Actor was built (searched by name and by domain).

### 💰 Pricing

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

| Event | Price |
|---|---|
| Vehicle model record | $0.00150 |
| Vehicle variant record | $0.00080 |
| Accessory record | $0.00060 |
| Part record | $0.00040 |
| Dealer record | $0.00080 |

Examples: all 114 models cost $0.17, 1,000 spare parts cost $0.40, the 6,108 dealer points cost $4.89. Invalid input, unknown categories and searches without hits charge nothing, and neither does a monitor run with nothing new.

### 🚀 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 **vehicle models** and set **Maximum items** to 10.
3. Optionally add search text (`kawasaki ninja`), categories (`Motos Eléctricas`), brands (`Victory`) and a price range in COP.
4. Press **Start**. When the run finishes open the dataset and download JSON, CSV, Excel, XML or HTML.
5. To watch prices, turn on **Only new items (monitor)** and **Also return price changes**, give the search a **Monitor name** and schedule the Actor.

### ⚙️ Input

| Field | Type | Meaning |
|---|---|---|
| `recordTypes` | array | vehicles, variants, accessories, parts, dealers |
| `maxItems` | integer | Cap on rows across all record types (default 10) |
| `searchQueries` | array | Search words, each searched separately |
| `categories` | array | Category names, numbers or addresses |
| `brands` | array | Brand names as the store lists them |
| `minPrice` / `maxPrice` | integer | Limits in COP |
| `inStockOnly` | boolean | Skip sold-out products |
| `sortBy` | string | relevance, newest, price-asc, price-desc, name-asc, name-desc, best-selling, best-discount |
| `productUrls` | array | Product addresses, product or SKU numbers, slugs, category addresses |
| `includeSpecs` | boolean | Add the full spec sheet as `specs` (default true) |
| `dealerType`, `dealerBrand`, `dealerCities` | string, string, array | Dealer filters: type, brand, cities or `lat,long` |
| `includeContactDetails` | boolean | Dealer business phones and emails (default false) |
| `onlyNew`, `trackPriceChanges`, `stateKey`, `resetSeen` | boolean, boolean, string, boolean | Monitor controls |
| `maxConcurrency` | integer | Parallel page reads, 1 to 6 (default 3) |

A minimal JSON example:

```json
{ "recordTypes": ["vehicles"], "brands": ["Kawasaki"], "minPrice": 20000000, "sortBy": "price-asc", "maxItems": 20 }
```

### 💼 Business use cases

Analysts compare list prices, engine size and power across brands and track new models. Parts distributors match part numbers to compatible models and watch price and stock. Insurers and lenders read price, monthly payment and reservation amount. Franchise and sales teams map every dealer, parts counter and service center by city and brand.

### 🔌 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 auteco.com.co (Colombia): motorcycle, e-bike and scooter models with specs and COP prices, color and year variants, accessories, spare parts with part numbers and compatibility, and dealer and service points with coordinates.

**Example agent prompt:** "List the 10 cheapest Kawasaki motorcycles above 20 million COP from Auteco with engine size and power." The agent sends `{ "recordTypes": ["vehicles"], "brands": ["Kawasaki"], "minPrice": 20000000, "sortBy": "price-asc", "maxItems": 10 }` and analyzes the rows.

### ⚠️ Limits and legal

The Actor reads public pages and public interfaces only, with a gentle request pace. The site terms reserve rights to its content, so use the data in line with them and with the privacy law that applies to you. Sold-out products often have no live price, so `price` is left out (or marked `priceIsReference` when the store shows a reference price). The store caps one search at 2,500 products and the Actor splits larger reads, but a product that sits only in a parent category and in none of its children can be missed when a category split is the last resort. Dealer names are cut at 40 characters by the source. Prices are the ones shown to a visitor without a delivery address.

### Frequently Asked Questions

#### 🏍️ What data can I scrape from auteco.com.co?

Vehicle models and their color and year variants, accessories and rider gear, spare parts and dealer points. A model row has about 70 fields: price range, monthly payment, engine, power, torque, dimensions, weight, brakes, suspension, tires, battery and range for electric models, features, photos, videos, manuals and warranty.

#### 🔎 How do I scrape one brand or category?

Put the brand in **Brands** (for example `Victory`, `Kawasaki`, `Michelin`) or the category name, number or address in **Categories**, for example `Frenos para Moto` or `https://www.auteco.com.co/cascos-para-moto`. A category applies only to the record type it belongs to.

#### 🔢 How many items can one run return?

Up to the **Maximum items** you set (up to 1,000,000). Reads above 2,500 products are split by brand, stock, price band and category, and the log says when a part of the result could not be split further.

#### 🧩 What is the difference between a model and a variant?

A model row is one product page with a price range and the list of colors. A variant row is one SKU: one color of one model year, with its own price, stock and photos.

#### 📍 How do I find dealers near a city?

Choose the dealers record type and list cities (`Bogota`, `Medellin`, `Cali`) or coordinates such as `4.711,-74.07`. You get the points within about 20 km, nearest first, with `distanceKm`. Leave cities empty for the whole country, and use **Dealer type** and **Dealer brand** to narrow the list.

#### 🧑 Does it return names, phones or emails?

Dealer rows carry the business name and address. Business phone numbers and emails are added only when you turn on **Include dealer phones and emails**. Use them in line with the data protection rules that apply to you.

#### 💵 Which currency and language are used?

Prices are in Colombian pesos (`COP`). Text and spec labels stay in Spanish as the store writes them, and typed fields such as `engineSize` and `weightKg` are numbers.

#### 🏷️ Why does a sold-out product have no price?

The store shows a price of zero for sold-out items. The Actor leaves `price` out instead of reporting a false zero, and uses the store's reference price (flagged with `priceIsReference`) when one is shown.

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

Turn on **Only new items (monitor)**, add a **Monitor name** and schedule the Actor. A second run with the same filters returns only items not seen before, and with **Also return price changes** also the items whose price changed.

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

No. The Actor sends plain HTTP requests, needs no login and no proxy, and keeps a low request rate.

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

The run still succeeds: invalid input, an unknown category or brand and a search without hits give one free error row or no rows, and nothing is charged.

#### 🆓 What do free plans get?

Free Apify plans can read up to 10 items per run. Paid plans use your **Maximum items**.

#### 📤 Which formats can I export?

JSON, CSV, Excel, XML, HTML and RSS from the dataset page, or through the Apify API.

#### ⚖️ Is it legal to scrape auteco.com.co?

The Actor reads public pages that need no login. The site terms reserve 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 vehicle, 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.

> **⚠️ Disclaimer:** This is an independent tool and is not affiliated with, endorsed by or sponsored by Auteco or its owner. Auteco is a trademark of its owner. It collects only publicly available data.

# Actor input Schema

## `recordTypes` (type: `array`):

Vehicle models (one row per model with full specs), vehicle variants (one row per color and model year with its own price and stock), accessories (helmets, rider gear, luggage), spare parts, and dealers and service points. Several choices are read in the order listed here.

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

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

## `searchQueries` (type: `array`):

Optional. Words to search in the store, for example casco, kawasaki ninja or filtro de aceite. Each text is searched separately. For dealers the text filters by name, address or brand.

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

Optional. Category names, numbers or addresses from auteco.com.co, for example Motos, Frenos para Moto, Motos > Scooter or https://www.auteco.com.co/cascos-para-moto. A category only applies to the record type it belongs to; other chosen types are skipped.

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

Optional. Brand names as the store lists them, for example Kawasaki, Victory, TVS, Benelli, Starker, Axxes, Michelin.

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

Optional. Lowest price in Colombian pesos. Sold-out products without a live price are left out when a minimum is set.

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

Optional. Highest price in Colombian pesos.

## `inStockOnly` (type: `boolean`):

Skips products the store shows as sold out.

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

Order inside each section. A section holding more than about 2,500 products is read brand by brand, and the order then applies inside each brand.

## `productUrls` (type: `array`):

Optional. Product page addresses (ending in /p), product or SKU numbers, product slugs, or category addresses. When set, only these are read and the search text, categories and brands above are not used to pick products.

## `includeSpecs` (type: `boolean`):

Adds a specs object with every label of the store's spec sheet (in Spanish, as the store writes it) next to the typed fields.

## `dealerType` (type: `string`):

Only for the dealers record type. Sales points, parts counters or authorized service centers.

## `dealerBrand` (type: `string`):

Optional. Only points that serve this brand, for example KAWASAKI, TVS, VICTORY, KYMCO or BENELLI.

## `dealerCities` (type: `array`):

Optional. Colombian city names (Bogota, Medellin, Cali, Barranquilla...) or latitude,longitude pairs. Each gives the points within about 20 km, nearest first, with the distance. Empty means the whole country.

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

Adds the business phone numbers and email addresses the store publishes for each dealer. Off by default; use them in line with the data protection rules that apply to you.

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

Skips every item seen in an earlier run with the same filters and monitor name, so scheduled runs return only what is new and you pay only for those.

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

With only new items on, an item already seen comes back when its price changed, with the previous price, the change and a price-drop or price-increase label.

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

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

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

Clears the memory of this monitor before the run, so everything counts as new again.

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

How many catalog pages are read at the same time. The default is safe; spare-part pages are large, so higher values use more memory.

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

Optional. Empty means direct requests, which work. Add a proxy only if your own network needs one.

## Actor input object example

```json
{
  "recordTypes": [
    "vehicles"
  ],
  "maxItems": 10,
  "inStockOnly": false,
  "sortBy": "relevance",
  "includeSpecs": true,
  "dealerType": "any",
  "dealerBrand": "",
  "includeContactDetails": false,
  "onlyNew": false,
  "trackPriceChanges": false,
  "stateKey": "",
  "resetSeen": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "recordTypes": [
        "vehicles"
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/auteco-co-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 = {
    "recordTypes": ["vehicles"],
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/auteco-co-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 '{
  "recordTypes": [
    "vehicles"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call recordsdata/auteco-co-scraper --silent --output-dataset

```

## MCP server setup

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