# Webmotors Scraper | Used Car Listings, Prices & Specs (Brazil) (`plum_spear/aztec-webmotors`) Actor

Scrape Webmotors - Brazil's largest automotive marketplace - by keyword or model. Returns make, model, year, odometer, price, transmission, color, seller, city, state and listing URL as clean structured data. Built for price monitoring, dealership research and market intelligence.

- **URL**: https://apify.com/plum\_spear/aztec-webmotors.md
- **Developed by:** [Roberto Kerber](https://apify.com/plum_spear) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Webmotors Scraper - Extract Used Car Listings, Prices & Specs (Brazil)

**Scrape Webmotors at scale.** This scraper extracts structured data from Webmotors - Brazil's largest automotive marketplace - by keyword or model name. Get clean JSON for every listing: make, model, version, year, odometer, price in BRL, transmission, color, seller type, city, state and a direct URL to the ad. Built for price monitoring, dealership research, market intelligence and arbitrage operations in the Brazilian auto market.

No proxy setup, no blocked requests. The scraper reaches Webmotors through a residential IP and returns ready-to-use data you can pipe straight into a spreadsheet, dashboard, or database. Run it once for a market snapshot, or **schedule it to run daily** to track how prices and inventory move over time.

---

### What does it do?

The **Webmotors Scraper** turns Brazil's biggest car marketplace into a structured data feed. Instead of copying listings by hand, you give it a search term - `honda civic`, `corolla`, `hilux`, `hb20` - and it returns every matching listing as clean, flat JSON.

It is the fastest way to **scrape Webmotors listings** for any make, model or segment - whether you are tracking competitor prices, benchmarking your stock, validating a purchase, or building a Brazilian auto market analysis for a client.

Prices arrive as parsed integers (not messy strings like `"R$ 89.900"`), so you can sort, filter, and run calculations the moment the run finishes. Location arrives as city and state separately. Odometer comes as an integer in kilometers, ready for range filters.

---

### Features

- Search by keyword - scrape Webmotors for any model like `honda civic`, `corolla`, `hb20`, `hilux`, `onix` or any brand
- Prices parsed as integers in BRL - get `price: 89900` not `"R$ 89.900"`, ready for filtering and math
- Full spec data - make, model, version string, year of fabrication, year model, odometer (km), transmission, body type and color
- Seller details - seller type (PJ dealer or PF private), seller name, city, state and neighborhood
- FIPE percentage - the `fipePercent` field shows how the asking price compares to the FIPE reference table
- Thumbnail URL - direct CDN link to the main photo of each listing
- Listing URL - canonical link to the full ad on webmotors.com.br
- Automatic pagination - collects as many listings as you need up to your `maxAds` limit
- Clean, flat JSON - no nested objects to unwrap; every record is dashboard- and database-ready
- Reliable extraction - runs through a residential IP, so no blocked requests and no proxy configuration

---

### Use cases

#### Price monitoring and repricing
Track what the market is actually paying for a specific model, trim level or year. Schedule the scraper to run daily on `honda civic` or `toyota corolla` and watch the price distribution tighten or widen over time. Use the `fipePercent` field to instantly spot listings priced below FIPE - those are your arbitrage opportunities.

#### Dealership competitive intelligence
Pull every listing for the models your dealership stocks and benchmark your own prices against the live market. Know whether your Onix at R$ 72.000 is priced competitively or 8% above the average for that trim and mileage range in your state.

#### Market research and segment analysis
Measure supply and demand in any segment. Pull a thousand listings for SUVs in Sao Paulo, calculate the median price per brand, and deliver a data-backed market analysis instead of an opinion. Perfect for consulting firms, investor decks and sector reports.

#### Car buying research
Before any large purchase, run the model and year you are evaluating and see the full price distribution across Brazil. Understand what is fair, what is overpriced, and which sellers are offering the best deals relative to FIPE.

#### Arbitrage and reselling
Find underpriced vehicles the moment they are listed. Compare Webmotors prices by state - a vehicle priced 15% below market in Recife may still leave margin after transport costs. Schedule frequent runs and diff the results to catch new listings first.

---

### Automate it: scheduled price monitoring

A single run gives you a snapshot. The real value is in the **change over time**. Schedule this scraper and it becomes a live market feed.

#### Daily price feed
Schedule a query to run **`@daily`** and track average, minimum and median price for a model over weeks. Connect to **Make, Zapier or n8n** to push results into Google Sheets or Airtable automatically. Add a filter on `fipePercent < 90` and fire a Slack alert whenever a listing appears priced more than 10% below FIPE.

#### New listings watch
Run every few hours and diff by `uniqueId` against your previous dataset. New IDs are brand-new listings - pipe them to email or messaging the instant they appear. This is how you beat every manual browser refresh.

#### Weekly market report
Run broad queries on full segments (`suv`, `pickup`, `sedan`) weekly and build a recurring market report: average price per make, odometer distribution, share of PJ vs PF sellers, price variation by state. All from structured data with no manual work.

---

### Input

| Field | Type | Description | Example |
|-------|------|-------------|---------|
| `query` | string | Keyword to search on Webmotors | `honda civic` |
| `maxAds` | number | Maximum number of listings to scrape | `100` |

#### Example input

```json
{
  "query": "honda civic",
  "maxAds": 100
}
````

***

### Example output

```json
{
  "uniqueId": 71834512,
  "title": "HONDA CIVIC 2.0 16V FLEXONE EXL 4P CVT",
  "make": "HONDA",
  "model": "CIVIC",
  "version": "2.0 16V FLEXONE EXL 4P CVT",
  "yearFabrication": 2023,
  "yearModel": 2023,
  "odometer": 34000,
  "transmission": "Automática",
  "bodyType": "Sedan",
  "color": "Preto",
  "price": 139900,
  "sellerType": "PJ",
  "sellerName": "AUTO PRIME",
  "city": "Sao Paulo",
  "state": "Sao Paulo (SP)",
  "neighborhood": "Moema",
  "fipePercent": 98,
  "listingType": "U",
  "imageCount": 12,
  "thumbnail": "https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/.../honda-civic-wmimagem123.jpg",
  "url": "https://www.webmotors.com.br/carros/honda/civic/71834512/"
}
```

***

### Output fields

| Field | Description |
|-------|-------------|
| `uniqueId` | Unique Webmotors listing ID |
| `title` | Full listing title |
| `make` | Brand (e.g. HONDA, TOYOTA, VOLKSWAGEN) |
| `model` | Model name |
| `version` | Full version/trim string |
| `yearFabrication` | Year the vehicle was manufactured |
| `yearModel` | Model year |
| `odometer` | Mileage in km |
| `transmission` | Transmission type (Automática / Manual) |
| `bodyType` | Body type (Sedan, Hatch, SUV, etc.) |
| `color` | Exterior color |
| `price` | Asking price as integer in BRL |
| `sellerType` | PJ (dealer/business) or PF (private) |
| `sellerName` | Dealer or seller name |
| `city` | City of the listing |
| `state` | State (full name + UF abbreviation) |
| `neighborhood` | Neighborhood of the seller |
| `fipePercent` | Price as a percentage of FIPE reference value |
| `listingType` | U = used, N = new |
| `imageCount` | Number of photos in the listing |
| `thumbnail` | URL of the main listing photo |
| `url` | Direct link to the ad on webmotors.com.br |

***

### Pricing

**Pay per event: $0.15 per 1,000 listings returned, plus a minimal actor-start event.**

No subscription, no monthly minimums - you only pay for the data you actually extract. New Apify users get free monthly platform credits to test at no cost before scaling.

***

**Keywords:** Webmotors scraper, Webmotors API, scrape Webmotors listings, Brazil car market data, used car prices Brazil, Webmotors price monitor, automotive market intelligence Brazil, car price tracker Brazil, Webmotors data extraction, carros usados Brasil scraper.

# Actor input Schema

## `query` (type: `string`):

Keyword to search on Webmotors, e.g. 'honda civic', 'corolla', 'hb20'. Leave blank to scrape the general estoque listing.

## `maxAds` (type: `integer`):

Maximum number of car listings to scrape.

## `scraperEndpoint` (type: `string`):

Residential scraping endpoint URL. Leave default unless you run your own.

## `scraperApiKey` (type: `string`):

API key for the residential scraping endpoint.

## Actor input object example

```json
{
  "query": "honda civic",
  "maxAds": 100
}
```

# 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 = {
    "query": "honda civic"
};

// Run the Actor and wait for it to finish
const run = await client.actor("plum_spear/aztec-webmotors").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 = { "query": "honda civic" }

# Run the Actor and wait for it to finish
run = client.actor("plum_spear/aztec-webmotors").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "honda civic"
}' |
apify call plum_spear/aztec-webmotors --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=plum_spear/aztec-webmotors",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Webmotors Scraper | Used Car Listings, Prices & Specs (Brazil)",
        "description": "Scrape Webmotors - Brazil's largest automotive marketplace - by keyword or model. Returns make, model, year, odometer, price, transmission, color, seller, city, state and listing URL as clean structured data. Built for price monitoring, dealership research and market intelligence.",
        "version": "0.1",
        "x-build-id": "IS3AcCHxM1gn6hM6M"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/plum_spear~aztec-webmotors/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-plum_spear-aztec-webmotors",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/plum_spear~aztec-webmotors/runs": {
            "post": {
                "operationId": "runs-sync-plum_spear-aztec-webmotors",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/plum_spear~aztec-webmotors/run-sync": {
            "post": {
                "operationId": "run-sync-plum_spear-aztec-webmotors",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword to search on Webmotors, e.g. 'honda civic', 'corolla', 'hb20'. Leave blank to scrape the general estoque listing."
                    },
                    "maxAds": {
                        "title": "Max listings",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of car listings to scrape.",
                        "default": 100
                    },
                    "scraperEndpoint": {
                        "title": "Scraper endpoint (advanced)",
                        "type": "string",
                        "description": "Residential scraping endpoint URL. Leave default unless you run your own."
                    },
                    "scraperApiKey": {
                        "title": "Scraper API key",
                        "type": "string",
                        "description": "API key for the residential scraping endpoint."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
