# Webmotors Vehicle Scraper 🚗 (`shahidirfan/webmotors-vehicle-scraper`) Actor

Extract car listings from Webmotors Brazil with vehicle prices, makes, models, years, mileage, specifications, images, seller details, locations, and URLs. Ideal for used car market research, price tracking, competitor analysis, dealership insights, and automotive datasets.

- **URL**: https://apify.com/shahidirfan/webmotors-vehicle-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Stats:** 2 total users, 1 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### What does Webmotors Scraper do?

Webmotors Scraper collects vehicle listings from [Webmotors](https://www.webmotors.com.br), Brazil's largest car and motorcycle marketplace. Paste any Webmotors search results URL, or use the built-in location and filter fields to create one, and the Actor returns structured data for each vehicle: title, make, model, version, price, FIPE percentage, mileage, seller, location, photos, and the public listing URL. Results are saved to the Apify dataset, ready to download or connect to your own tools.

### Why use Webmotors Scraper?

- **Full search coverage** - Collect an entire result set for a brand, model, body type, price band, state, or any combination of filters.
- **One URL, every filter** - Any filtered search you can build on Webmotors can be scraped by pasting its URL.
- **Structured, clean output** - Every listing is normalized into consistent fields, with empty values omitted so records stay tidy.
- **Deal and market signals** - FIPE percentage, hot deal tags, financing figures, and inspection flags help you spot pricing and quality.
- **Automation ready** - Schedule recurring runs, export to CSV, Excel, or JSON, or pull results through the Apify API.

### What data can you extract from Webmotors?

| Field                                         | Description                                                |
| --------------------------------------------- | ---------------------------------------------------------- |
| `unique_id`                                   | Webmotors listing identifier                               |
| `title`                                       | Full listing title                                         |
| `make`                                        | Vehicle brand or make                                      |
| `model`                                       | Vehicle model                                              |
| `version`                                     | Version or trim                                            |
| `year_fabrication`                            | Manufacturing year                                         |
| `year_model`                                  | Model year                                                 |
| `price`                                       | Asking price in Brazilian reais                            |
| `fipe_percent`                                | Price as a percentage of the FIPE reference value          |
| `odometer_km`                                 | Mileage in kilometers                                      |
| `transmission`                                | Transmission type                                          |
| `body_type`                                   | Body type                                                  |
| `engine_size` / `engine` / `cubic_centimeter` | Engine details for cars and motorcycles                    |
| `horsepower`                                  | Engine power when published                                |
| `color`                                       | Vehicle color                                              |
| `armored`                                     | Whether the vehicle is armored                             |
| `seller_name` / `seller_type`                 | Seller store name and whether it is a dealer or individual |
| `city` / `state`                              | Seller location                                            |
| `photos` / `main_photo`                       | High-resolution photo URLs                                 |
| `vehicle_attributes`                          | Extra attributes such as "Aceita troca" or "IPVA pago"     |
| `hot_deal`                                    | Promotional or featured tags                               |
| `advertisement_url`                           | Direct link to the public listing page                     |
| `source_url`                                  | The search URL the listing was found on                    |

### How to use Webmotors Scraper

1. Open the Actor on the Apify Store.
2. Paste a Webmotors search URL, or leave the URL as is and fill in the filter fields.
3. Set the maximum number of listings and pages.
4. Run the Actor.
5. Download the dataset as JSON, CSV, or Excel, or connect it to your workflow.

If you provide a Start URL, it is used exactly as given. If you leave it at the default and fill in filters instead, the filters build a fresh search. Filters are only used when no custom Start URL is supplied.

### Input Parameters

| Parameter            | Type    | Required | Default           | Description                                                                                                                     |
| -------------------- | ------- | -------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `startUrl`           | String  | No       | Car search page 1 | A Webmotors search results URL. A URL you provide takes priority over the filters.                                              |
| `location`           | String  | No       | -                 | Filter by state or city. A state abbreviation works best, for example `SP`, `RJ`, `MG`.                                         |
| `brand`              | String  | No       | -                 | Filter by brand, for example `HONDA`, `TOYOTA`, `BMW`.                                                                          |
| `model`              | String  | No       | -                 | Filter by model, for example `CIVIC`, `COROLLA`, `ONIX`.                                                                        |
| `bodyType`           | String  | No       | -                 | Filter by body type using the exact Webmotors value, for example `Hatchback` or `Utilitário Esportivo`.                         |
| `minPrice`           | Integer | No       | -                 | Minimum price in Brazilian reais.                                                                                               |
| `maxPrice`           | Integer | No       | -                 | Maximum price in Brazilian reais.                                                                                               |
| `yearFrom`           | Integer | No       | -                 | Minimum manufacturing year.                                                                                                     |
| `yearTo`             | Integer | No       | -                 | Maximum manufacturing year.                                                                                                     |
| `vehicleType`        | String  | No       | `carros`          | Choose `carros` for cars or `motos` for motorcycles.                                                                            |
| `results_wanted`     | Integer | No       | `20`              | Maximum number of listings to collect.                                                                                          |
| `max_pages`          | Integer | No       | `10`              | Safety cap on how many result pages to read.                                                                                    |
| `proxyConfiguration` | Object  | No       | No proxy          | Proxy settings. Cars work without a proxy; motorcycles are more reliable with the Apify Proxy RESIDENTIAL group and country BR. |

### Output Data

| Field                                                  | Type    | Description                                |
| ------------------------------------------------------ | ------- | ------------------------------------------ |
| `unique_id`                                            | Integer | Listing identifier                         |
| `title`                                                | String  | Listing title                              |
| `make`                                                 | String  | Vehicle make                               |
| `model`                                                | String  | Vehicle model                              |
| `version`                                              | String  | Vehicle version                            |
| `year_fabrication`                                     | String  | Manufacturing year                         |
| `year_model`                                           | Integer | Model year                                 |
| `price`                                                | Number  | Asking price in Brazilian reais            |
| `search_price`                                         | Number  | Search price in Brazilian reais            |
| `fipe_percent`                                         | Integer | Price relative to the FIPE reference value |
| `odometer_km`                                          | Number  | Mileage in kilometers                      |
| `transmission`                                         | String  | Transmission                               |
| `body_type`                                            | String  | Body type                                  |
| `engine_size`                                          | String  | Engine displacement                        |
| `engine`                                               | String  | Engine description for motorcycles         |
| `cubic_centimeter`                                     | String  | Engine displacement in cc for motorcycles  |
| `horsepower`                                           | String  | Engine power                               |
| `traction`                                             | String  | Traction type                              |
| `number_ports`                                         | String  | Number of doors                            |
| `fuel_tank_capacity` / `trunk_capacity` / `wheel_size` | String  | Additional specifications                  |
| `color`                                                | String  | Vehicle color                              |
| `armored`                                              | Boolean | Whether the vehicle is armored             |
| `auction`                                              | Boolean | Whether the listing comes from an auction  |
| `vehicle_attributes`                                   | Array   | Extra attributes                           |
| `seller_id`                                            | Integer | Seller identifier                          |
| `seller_type`                                          | String  | `PJ` for dealers, `PF` for individuals     |
| `seller_name`                                          | String  | Seller store name                          |
| `seller_ad_type`                                       | String  | Seller advertisement type                  |
| `city`                                                 | String  | Seller city                                |
| `state`                                                | String  | Seller state                               |
| `neighborhood` / `zip_code`                            | String  | Seller address details                     |
| `photos`                                               | Array   | High-resolution photo URLs                 |
| `main_photo`                                           | String  | Main photo URL                             |
| `listing_type`                                         | String  | Listing classification                     |
| `product_code`                                         | String  | Internal product code                      |
| `hot_deal`                                             | Array   | Promotional or featured tags               |
| `is_elegible_vehicle_inspection`                       | Boolean | Eligible for certified inspection          |
| `is_elegible_360_view`                                 | Boolean | Has a 360-degree view                      |
| `media_zero_km`                                        | Boolean | Flagged as zero km                         |
| `advertisement_url`                                    | String  | Public listing URL                         |
| `source_url`                                           | String  | Search URL the listing was found on        |

### Usage Examples

#### Collect listings from a search URL

Paste any filtered Webmotors search URL to collect that exact result set.

```json
{
    "startUrl": "https://www.webmotors.com.br/carros/estoque/carroceria.suv?tipoveiculo=carros&page=1&carroceria=Utilit%C3%A1rio%20Esportivo%7CSUV",
    "results_wanted": 100,
    "max_pages": 5
}
```

#### Search by location and filters

Leave the Start URL at its default and use filters to build the search. This example collects up to 60 Honda cars in São Paulo priced between 50,000 and 120,000 reais.

```json
{
    "location": "SP",
    "brand": "HONDA",
    "minPrice": 50000,
    "maxPrice": 120000,
    "yearFrom": 2018,
    "yearTo": 2024,
    "vehicleType": "carros",
    "results_wanted": 60,
    "max_pages": 3
}
```

#### Collect motorcycles

Set `vehicleType` to `motos` to collect motorcycle listings instead of cars. Motorcycle searches are more reliable with Apify Proxy using the RESIDENTIAL group and country BR.

```json
{
    "vehicleType": "motos",
    "results_wanted": 50,
    "max_pages": 3,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "BR"
    }
}
```

### Sample Output

```json
{
    "unique_id": 81183555,
    "title": "LAND ROVER DISCOVERY SPORT 2.0 P250 TURBO FLEX SE AUTOMATICO",
    "make": "LAND ROVER",
    "model": "DISCOVERY SPORT",
    "version": "2.0 P250 TURBO FLEX SE AUTOMATICO",
    "year_fabrication": "2022",
    "year_model": 2023,
    "price": 250000,
    "search_price": 250000,
    "fipe_percent": 106,
    "odometer_km": 33384,
    "transmission": "Automática",
    "body_type": "Utilitário esportivo",
    "engine_size": "2.0",
    "horsepower": "240 cv",
    "number_ports": "4",
    "color": "Preto",
    "armored": false,
    "auction": false,
    "vehicle_attributes": ["Aceita troca"],
    "seller_id": 3829387,
    "seller_type": "PJ",
    "seller_name": "Euro Import Jaguar Land Rover Curitiba",
    "seller_ad_type": "Concessionária",
    "city": "Curitiba",
    "state": "Paraná (PR)",
    "photos": [
        "https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202610/20261015/land-rover-discovery-sport-wmimagem11465858465.jpg?s=fill&w=1920&h=1440&q=75"
    ],
    "main_photo": "https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202610/20261015/land-rover-discovery-sport-wmimagem11465858465.jpg?s=fill&w=1920&h=1440&q=75",
    "listing_type": "U",
    "product_code": "38489",
    "hot_deal": ["Loja Oficial Grupo Automob"],
    "is_elegible_vehicle_inspection": true,
    "is_elegible_360_view": true,
    "media_zero_km": false,
    "advertisement_url": "https://www.webmotors.com.br/comprar/land-rover/discovery-sport/20-p250-turbo-flex-se-automtico/4-portas/2022-2023/81183555",
    "source_url": "https://www.webmotors.com.br/carros/estoque?tipoveiculo=carros&page=1"
}
```

### Tips for Best Results

- For the most precise results, apply your filters on Webmotors first, then copy the resulting search URL into `startUrl`.
- State abbreviations such as `SP` and `RJ` filter more reliably than full city names.
- `bodyType` must match the exact Webmotors catalog value, for example `Hatchback`, `Sedã`, or `Utilitário Esportivo`.
- Keep `max_pages` in line with `results_wanted`. Each page returns up to about 24 listings.
- Some fields are empty when the seller did not publish them. Missing values are omitted from the record instead of being saved as null.
- Car searches run without a proxy. For motorcycle collections, enable Apify Proxy with the RESIDENTIAL group and country BR for reliable results.
- For large runs, enable Apify Proxy to keep collection stable.

### Integrations

- **Google Sheets** - Send results straight to a spreadsheet.
- **Webhooks** - Trigger downstream systems after each run.
- **Make or Zapier** - Connect results to no-code workflows.
- **API** - Read datasets programmatically from your own applications.
- **CSV, Excel, JSON, XML** - Download the dataset in any supported format.

### Frequently Asked Questions

#### Can I export Webmotors data to CSV or Excel?

Yes. Every run writes to an Apify dataset that can be downloaded as CSV, Excel, JSON, XML, and other formats, or accessed through the Apify API.

#### Can I run Webmotors Scraper on a schedule?

Yes. You can schedule the Actor in the Apify Console to refresh vehicle data hourly, daily, or weekly for monitoring and price tracking workflows.

#### Is this Actor suitable for non-technical users?

Yes. You can paste a Webmotors URL and run the Actor from the Apify Console without writing any code.

#### Which URLs can I use as the Start URL?

Any Webmotors search results page works, including cars, used cars, new cars, and motorcycles, with any combination of brand, model, price, year, location, and body type filters.

#### Why are some fields empty in the output?

Some listings do not publish every attribute, such as horsepower or financing details. Empty values are omitted from the record rather than saved as null.

#### How many listings can I collect per run?

There is no fixed limit. Set `results_wanted` and `max_pages` to control the run size.

#### Do motorcycle searches need a proxy?

Car searches work without a proxy. Motorcycle searches collect more reliably when you enable Apify Proxy with the RESIDENTIAL group and country BR.

#### Is it legal to use this Actor?

This Actor is intended for collecting publicly available listing data. You are responsible for using the data in line with applicable laws, Webmotors terms, and privacy rules such as Brazil's LGPD.

### Support

For issues or feature requests, use the Issues tab on the Actor page or contact the developer through Apify.

### Legal Notice

Webmotors Scraper collects publicly available data from Webmotors. This Actor is not affiliated with, endorsed by, or sponsored by Webmotors. Users are responsible for complying with applicable laws, website terms of service, and data privacy regulations, including the LGPD, when using the collected data.

# Actor input Schema

## `startUrl` (type: `string`):

A Webmotors search results URL (for example, the page you see after applying filters on webmotors.com.br). A Start URL you provide takes priority over the filters below. If you leave it as the default and only fill in filters, the filters are used instead.

## `location` (type: `string`):

Filter by state or city, used only when no Start URL is provided. A state abbreviation works best (for example, SP, RJ, MG).

## `brand` (type: `string`):

Filter by brand/make, used only when no Start URL is provided (for example, HONDA, TOYOTA, BMW).

## `model` (type: `string`):

Filter by model, used only when no Start URL is provided (for example, CIVIC, COROLLA, ONIX).

## `bodyType` (type: `string`):

Filter by body type, used only when no Start URL is provided. Use the exact Webmotors value (for example, Hatchback, Sedã, Utilitário Esportivo).

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

Minimum listing price in Brazilian reais, used only when no Start URL is provided.

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

Maximum listing price in Brazilian reais, used only when no Start URL is provided.

## `yearFrom` (type: `integer`):

Minimum manufacturing year, used only when no Start URL is provided.

## `yearTo` (type: `integer`):

Maximum manufacturing year, used only when no Start URL is provided.

## `vehicleType` (type: `string`):

Vehicle category used to build the search URL when no Start URL is provided.

## `results_wanted` (type: `integer`):

The maximum number of listings to collect.

## `max_pages` (type: `integer`):

A safety cap on how many result pages to read.

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

Proxy settings. Car searches work without a proxy. Motorcycle searches are more reliable with Apify Proxy using the RESIDENTIAL group and country BR.

## Actor input object example

```json
{
  "startUrl": "https://www.webmotors.com.br/carros/estoque?tipoveiculo=carros&page=1",
  "vehicleType": "carros",
  "results_wanted": 20,
  "max_pages": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrl": "https://www.webmotors.com.br/carros/estoque?tipoveiculo=carros&page=1"
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/webmotors-vehicle-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 = { "startUrl": "https://www.webmotors.com.br/carros/estoque?tipoveiculo=carros&page=1" }

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/webmotors-vehicle-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 '{
  "startUrl": "https://www.webmotors.com.br/carros/estoque?tipoveiculo=carros&page=1"
}' |
apify call shahidirfan/webmotors-vehicle-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,shahidirfan/webmotors-vehicle-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/K9d2seWdCfuZstvta/builds/B5hR5Tg8eIElpZyLn/openapi.json
