# Seminuevos Mexico Used Cars Scraper & API - Autos Usados (`scrapers_lat/seminuevos-scraper`) Actor

Scrape Seminuevos.com Mexico used car listings as clean data: price, brand, model, year, mileage, transmission, fuel, body, color, city, state, plus dealer name, phone and WhatsApp leads. Filter by brand, model, price, year, km. Export autos usados to JSON, CSV, Excel or API.

- **URL**: https://apify.com/scrapers_lat/seminuevos-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.15 / 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

[![Seminuevos Mexico Used Cars Scraper & API](https://scrapers.lat/banners/seminuevos-scraper.png)](https://console.apify.com/actors/ys7lDoXpG8hmueCl8/input)

## Seminuevos Mexico Used Cars Scraper & API (Autos Usados)

Extract used car listings from **Seminuevos.com**, the largest used car marketplace in Mexico, as clean structured data. Paste any Seminuevos search or category URL and get one normalized record per vehicle: price, brand, model, year, mileage, transmission, fuel, body type, color, city and state, plus the dealer name, phone and WhatsApp as a ready to use lead. Export **autos usados** data to JSON, CSV, Excel or via API.

This is the most complete Seminuevos scraper on the market. It returns every field the listing exposes, adds a full detail layer (feature list, complete image gallery, upholstery, steering, windows, air conditioning, financing and dealer rating), and captures promotion and featured status so you can rank inventory.

Here is one real result, with every field the actor returns (the `images` array is trimmed here for length):

```json
{
  "imageUrl": "https://images.latamautos.com/thumbs/w/300x177xC/ptx_migration_mexico/2572026/4818245/o_o/pt_4818245_1784998188027_384.jpg",
  "title": "Nissan Kicks 2024",
  "price": 399000,
  "currency": "MXN",
  "originalPrice": null,
  "discountPrice": null,
  "discountStatus": null,
  "discountUntil": null,
  "brand": "Nissan",
  "model": "Kicks",
  "year": 2024,
  "version": "E-Power Exclusive At",
  "mileageKm": 22471,
  "mileageUnit": "Kms.",
  "transmission": "CVT",
  "fuelType": "Híbrido",
  "drivetrain": "Delantera",
  "bodyType": "Camioneta SUV",
  "vehicleType": "Autos",
  "condition": "Usado",
  "color": "Blanco",
  "city": "Alvaro Obregón",
  "state": "Ciudad de México",
  "country": "Mexico",
  "sellerType": "agency",
  "listingPlan": "STANDAR",
  "priorityBadge": null,
  "isFeatured": false,
  "isPromoted": false,
  "promotionEndDate": null,
  "imageCount": 19,
  "pageNumber": 1,
  "positionRank": 3,
  "searchUrl": "https://www.seminuevos.com/usados/-/autos/-/nissan",
  "url": "https://www.seminuevos.com/vehicle/autos-nissan-kicks-alvaro_obregon-2024/4818245",
  "listingId": "4818245",
  "description": "Este Nissan Kicks del año 2024 en su versión E-Power Exclusive At combina eficiencia y comodidad en un diseño moderno. Su estilo compacto lo hace ideal para la ciudad, ofreciendo un manejo ágil y práctico...",
  "features": ["Acepto Vehículo", "Garantía de Casa", "Inspección Mecánica", "Único dueño"],
  "images": [
    "https://images.latamautos.com/thumbs/w/lg/ptx_migration_mexico/2572026/4818245/o_o/pt_4818245_1784998188027_384.jpg",
    "https://images.latamautos.com/thumbs/w/lg/ptx_migration_mexico/2572026/4818245/o_o/pt_4818245_1784998190267_549.jpg",
    "https://images.latamautos.com/thumbs/w/lg/ptx_migration_mexico/2572026/4818245/o_o/pt_4818245_1784998191234_664.jpg"
  ],
  "sellerName": "Usados Certificados Vw San Ángel",
  "phone": "5521984469",
  "whatsappPhone": "525521984469",
  "sellerPhones": ["5521984469"],
  "interior": "Piel",
  "doors": null,
  "engine": null,
  "enginePower": null,
  "steering": "Asistida",
  "windows": "Eléctricos",
  "airConditioning": "Aire Acondicionado",
  "priceType": "Negociable",
  "vin": null,
  "hasFinancing": true,
  "sellerLocation": "Ciudad de México",
  "dealerVerified": true,
  "dealerRating": null,
  "dealerReviews": 0,
  "youtubeVideoUrl": null,
  "observedAt": "2026-09-04T11:50:18.896Z",
  "error": null
}
```

**📥 [Input](https://apify.com/scrapers_lat/seminuevos-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/seminuevos-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/seminuevos-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/seminuevos-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Mexico-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

### Table of contents

- [What it does](#what-it-does)
- [Who it is for](#who-it-is-for)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [How we compare](#how-we-compare)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What it does

The actor loads one or more Seminuevos.com search or category URLs, paginates through the matching used car listings, and writes one normalized record per vehicle to the run dataset. Each base record carries the title, price and currency, any discount or promotion pricing, brand, model, year, version, mileage, transmission, fuel, drivetrain, body type, color, city, state, seller type, listing plan and featured status, the image count and the direct listing URL.

With `withDetails` on, the actor opens each listing detail page to add the full description, complete feature list, full image gallery, upholstery, steering, windows, air conditioning, engine data when published, financing flag, dealer verification, dealer rating, and the seller name, phone and WhatsApp number as a lead. Missing source values are returned as `null`, never invented.

Search and filtering are driven by the URL: apply any filter on seminuevos.com (brand, model, price range, year, kilometers, location, transmission, fuel) and paste the resulting URL. You can pass several URLs at once with `startUrls`.

### Who it is for

- **Dealers and buyers** tracking used car prices, inventory and competitors across Mexico.
- **Automotive marketplaces and pricing tools** building a used car dataset with mileage, year and version.
- **Lead generation teams** collecting dealer name, phone and WhatsApp from public listings.
- **Analysts and researchers** studying the Mexican used car market, depreciation and regional pricing.

### Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 used cars from Seminuevos Mexico with full detail.

```json
{
  "startUrl": "https://www.seminuevos.com/usados/-/autos",
  "withDetails": true,
  "maxListings": 10
}
```

Apply any filters (brand, model, location, price, year, km) on seminuevos.com in your browser, then paste the resulting URL into `startUrl`. For example, `https://www.seminuevos.com/usados/-/autos/-/nissan` returns only Nissan listings. To scrape several searches in one run, use `startUrls`.

### Input reference

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `startUrl` | string | yes\* | `https://www.seminuevos.com/usados/-/autos` | A Seminuevos.com search or category URL. Apply filters on the site and paste the resulting URL. |
| `startUrls` | string\[] | no | `[]` | Optional list of Seminuevos.com URLs to scrape in one run (combine brands, cities or price bands). |
| `maxListings` | integer | no | `10` | Maximum listings to collect across all URLs. |
| `maxItemsPerUrl` | integer | no | none | Optional cap on listings collected per URL. |
| `maxPagesPerUrl` | integer | no | none | Optional cap on result pages to paginate per URL. |
| `startPage` | integer | no | `1` | First results page to fetch per URL (1-based). |
| `withDetails` | boolean | no | `true` | Paid add-on. Fetch each listing detail page for description, features, full gallery, seller phone and WhatsApp, upholstery, engine, financing and dealer rating. |
| `ignoreUrlFailures` | boolean | no | `true` | Skip a failing URL and continue with the rest. |
| `failOnNoResults` | boolean | no | `false` | End the run with an error if no listings are found. |

\*Provide `startUrl` or at least one entry in `startUrls`.

### Output reference

One dataset item per listing. Types: `string`, `integer`, `boolean`, `string[]`, or `null` when the source value is absent. Fields from `description` onward come from the detail page and populate when `withDetails` is on.

| Field | Type | Description |
|---|---|---|
| `imageUrl` | string | Main thumbnail image. |
| `title` | string | Listing title (brand, model, year). |
| `price` | integer | Asking price. |
| `currency` | string | Currency code, usually `MXN`. |
| `originalPrice` | integer | List price before any discount, when shown. |
| `discountPrice` | integer | Discounted price, when shown. |
| `discountStatus` | boolean | Whether the listing carries a price discount. |
| `discountUntil` | string | Discount validity date, when shown. |
| `brand` | string | Vehicle brand. |
| `model` | string | Vehicle model. |
| `year` | integer | Model year. |
| `version` | string | Trim or version, for example `1.6 A/C Mt`. |
| `mileageKm` | integer | Odometer reading in kilometers. |
| `mileageUnit` | string | Mileage unit as published, for example `Kms.`. |
| `transmission` | string | Transmission, for example `Automática`, `Manual`. |
| `fuelType` | string | Fuel type, for example `Gasolina`, `Diesel`, `Híbrido`, `Eléctrico`. |
| `drivetrain` | string | Drive layout, for example `Delantera`, `4x4`. |
| `bodyType` | string | Body style, for example `Sedán`, `SUV`, `Hatchback`. |
| `vehicleType` | string | Vehicle category, for example `Autos`, `Camionetas`. |
| `condition` | string | `Usado` or `Nuevo`, from the search section. |
| `color` | string | Exterior color. |
| `city` | string | City of the listing. |
| `state` | string | State of the listing. |
| `country` | string | Always `Mexico`. |
| `sellerType` | string | `agency` or `private`. |
| `listingPlan` | string | Seminuevos listing plan, for example `GOLD`, `STANDAR`. |
| `priorityBadge` | string | Priority or highlight badge, when present. |
| `isFeatured` | boolean | Whether the listing is featured. |
| `isPromoted` | boolean | Whether the listing runs a promotion. |
| `promotionEndDate` | string | Promotion end date, when present. |
| `imageCount` | integer | Number of photos on the listing. |
| `pageNumber` | integer | Result page the listing was found on. |
| `positionRank` | integer | Position of the listing within the results. |
| `searchUrl` | string | The search URL this listing came from. |
| `url` | string | Direct link to the listing. |
| `listingId` | string | Seminuevos listing id. |
| `description` | string | Listing description text as published (detail). |
| `features` | string\[] | Vehicle features and equipment (detail). |
| `images` | string\[] | Full image gallery URLs (detail). |
| `sellerName` | string | Seller or dealership name, the lead (detail). |
| `phone` | string | Seller phone number, the lead (detail). |
| `whatsappPhone` | string | Seller WhatsApp number (detail). |
| `sellerPhones` | string\[] | Every published phone number for the seller (detail). |
| `interior` | string | Upholstery or interior trim, for example `Tela`, `Piel` (detail). |
| `doors` | integer | Number of doors, when published (detail). |
| `engine` | string | Engine description, when published (detail). |
| `enginePower` | string | Engine power, when published (detail). |
| `steering` | string | Steering type, for example `Electrónica`, `Mecánica` (detail). |
| `windows` | string | Window type, for example `Eléctricos` (detail). |
| `airConditioning` | string | Climate control, for example `Aire Acondicionado` (detail). |
| `priceType` | string | Price type, for example `Negociable`, `Fijo` (detail). |
| `vin` | string | VIN, when a dealer publishes it (detail, rare). |
| `hasFinancing` | boolean | Whether financing is offered (detail). |
| `sellerLocation` | string | Seller location (detail). |
| `dealerVerified` | boolean | Whether the dealer is verified on Seminuevos (detail). |
| `dealerRating` | number | Dealer rating, when present (detail). |
| `dealerReviews` | integer | Dealer review count (detail). |
| `youtubeVideoUrl` | string | YouTube video link for the vehicle, or `null` (detail). |
| `observedAt` | string | ISO 8601 timestamp of when the record was collected. |
| `error` | string | `null` on success. On a failed run, a single item with a populated `error` field is written instead. |

### How we compare

| Capability | This actor | Typical Seminuevos scrapers |
|---|---|---|
| Multiple search URLs per run | Yes (`startUrls`) | Some |
| Per URL and per page caps | Yes | Some |
| Price plus original, discount and promotion pricing | Yes | Partial |
| Featured, plan and priority badge | Yes | Partial |
| Full detail layer (features, full gallery, upholstery, steering, windows, AC) | Yes | Rare |
| Seller name, phone and WhatsApp lead | Yes | Rare |
| Dealer verified, rating and reviews | Yes | No |
| Financing flag | Yes | No |
| New or used condition and vehicle type | Yes | Partial |
| Honest `null` for absent values, no invented data | Yes | Varies |

This actor accepts every input the common Seminuevos scrapers accept (single URL, URL list, per URL item cap, continue on failure) and returns every field they return, plus the detail, lead and dealer fields above.

### Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace `<TOKEN>` with your Apify API token.

Run synchronously and get dataset items in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~seminuevos-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrl":"https://www.seminuevos.com/usados/-/autos/-/nissan","maxListings":25}'
```

Start a run asynchronously:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~seminuevos-scraper/runs?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":["https://www.seminuevos.com/usados/-/autos"],"withDetails":true,"maxListings":100}'
```

Apify CLI:

```bash
apify call scrapers_lat/seminuevos-scraper \
  --input '{"startUrl":"https://www.seminuevos.com/usados/-/autos/-/mazda","maxListings":50}'
```

### Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"

## Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
```

`<DATASET_ID>` is returned as `defaultDatasetId` in the run object. Use `offset` and `limit` to page through large result sets. `clean=true` drops empty and internal fields.

### Billing and limits

- **Pay per result.** You are charged per listing returned (`result` event). See the [pricing tab](https://apify.com/scrapers_lat/seminuevos-scraper/pricing) for the current per result price.
- **Detail add-on.** With `withDetails` on, each enriched listing also charges the `details` add-on for the description, gallery, seller phone and dealer data. Detail enrichment runs for paying users; free plan runs return the base listing fields only.
- **No charge on failure.** If a detail fetch fails, the listing is still delivered with its base fields and the `details` add-on is not charged. If a whole run errors, a single item with a populated `error` field is written and not charged. Empty runs cost nothing.
- **Spend cap respected.** Set `maxTotalChargeUsd` on the run; once reached, the actor stops emitting and charging further billable results.
- **Free Apify plans** are capped at 10 listings per run. Upgrade for higher volume.

### FAQ and troubleshooting

**A run returned 0 listings. Why?**
The `startUrl` matched nothing. Open the URL in a browser to confirm it shows listings, and check that any filters in the URL are not too narrow. Zero result runs are not charged.

**How do I get the seller phone, features and photos?**
Leave `withDetails` on (the default) and run on a paying plan. The actor then opens each listing page and adds `features`, `images`, `sellerName`, `phone`, `whatsappPhone` and `sellerPhones`.

**How do I filter by brand, model, price or location?**
Apply the filters on seminuevos.com in your browser and paste the resulting URL into `startUrl`. The actor scrapes whatever that URL returns. Use `startUrls` to combine several searches.

**Why are `doors`, `engine` or `vin` sometimes null?**
Seminuevos dealers often leave those specific fields blank on the listing. The actor returns exactly what the page publishes and never invents a value.

**Does it cover new cars too?**
Yes. Paste a `nuevos` section URL and the `condition` field is set to `Nuevo`. The default targets `usados` (used).

**Does it cover countries other than Mexico?**
This actor targets Seminuevos.com (Mexico). Provide a seminuevos.com URL.

**Is this an official Seminuevos tool?**
No. This actor is independent and has no affiliation with Seminuevos. It reads only publicly listed data. Use it in accordance with Seminuevos terms.

### Related scrapers

- [Kavak Used Cars Scraper](https://apify.com/scrapers_lat/kavak-used-cars-scraper): Kavak used car inventory across LATAM.
- [Autocosmos Scraper](https://apify.com/scrapers_lat/autocosmos-scraper): Autocosmos vehicle listings.
- [Vivanuncios Mexico Scraper](https://apify.com/scrapers_lat/vivanuncios-mexico-scraper): Vivanuncios classified listings.
- [TrueCar Listings Scraper](https://apify.com/scrapers_lat/truecar-listings-scraper): US used and new car listings from TrueCar.
- [Neoauto Peru Scraper](https://apify.com/scrapers_lat/neoauto-peru-scraper): Neoauto vehicle listings in Peru.
- [Tucarro Colombia Scraper](https://apify.com/scrapers_lat/tucarro-colombia-scraper): Tucarro vehicle listings in Colombia.

### More scrapers at scrapers.lat

Built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at [scrapers.lat](https://scrapers.lat).

> Independent tool, not affiliated with Seminuevos. Accesses only publicly available listing data. Use in accordance with Seminuevos terms of service.

***

## Seminuevos Scraper y API de Autos Usados en Mexico

Extrae anuncios de autos usados de **Seminuevos.com**, el marketplace de autos usados mas grande de Mexico, como datos estructurados y limpios. Pega cualquier URL de busqueda o categoria de Seminuevos y obten un registro normalizado por vehiculo: precio, marca, modelo, año, kilometraje, transmision, combustible, tipo de carroceria, color, ciudad y estado, ademas del nombre del vendedor, telefono y WhatsApp como prospecto listo para usar. Exporta datos de **autos usados** a JSON, CSV, Excel o por API.

Este es el scraper de Seminuevos mas completo del mercado. Devuelve cada campo que expone el anuncio, agrega una capa de detalle completa (lista de equipamiento, galeria de imagenes completa, tapiceria, direccion, cristales, aire acondicionado, financiamiento y calificacion del concesionario) y captura el estado de promocion y destacado para que puedas ordenar el inventario.

Aqui tienes un resultado real, con cada campo que devuelve el actor (el arreglo `images` se recorta aqui por espacio):

```json
{
  "imageUrl": "https://images.latamautos.com/thumbs/w/300x177xC/ptx_migration_mexico/2572026/4818245/o_o/pt_4818245_1784998188027_384.jpg",
  "title": "Nissan Kicks 2024",
  "price": 399000,
  "currency": "MXN",
  "brand": "Nissan",
  "model": "Kicks",
  "year": 2024,
  "version": "E-Power Exclusive At",
  "mileageKm": 22471,
  "transmission": "CVT",
  "fuelType": "Híbrido",
  "bodyType": "Camioneta SUV",
  "condition": "Usado",
  "color": "Blanco",
  "city": "Alvaro Obregón",
  "state": "Ciudad de México",
  "sellerType": "agency",
  "listingPlan": "STANDAR",
  "isFeatured": false,
  "imageCount": 19,
  "url": "https://www.seminuevos.com/vehicle/autos-nissan-kicks-alvaro_obregon-2024/4818245",
  "listingId": "4818245",
  "description": "Este Nissan Kicks del año 2024 en su versión E-Power Exclusive At combina eficiencia y comodidad en un diseño moderno...",
  "features": ["Acepto Vehículo", "Garantía de Casa", "Inspección Mecánica", "Único dueño"],
  "sellerName": "Usados Certificados Vw San Ángel",
  "phone": "5521984469",
  "whatsappPhone": "525521984469",
  "interior": "Piel",
  "steering": "Asistida",
  "windows": "Eléctricos",
  "airConditioning": "Aire Acondicionado",
  "priceType": "Negociable",
  "hasFinancing": true,
  "dealerVerified": true,
  "observedAt": "2026-09-04T11:50:18.896Z",
  "error": null
}
```

**📥 [Entrada](https://apify.com/scrapers_lat/seminuevos-scraper/input-schema) · 📤 [Salida](https://apify.com/scrapers_lat/seminuevos-scraper/output-schema) · 💰 [Precios](https://apify.com/scrapers_lat/seminuevos-scraper/pricing) · ▶️ [Ejemplos](https://apify.com/scrapers_lat/seminuevos-scraper/examples)**

### Tabla de contenido

- [Que hace](#que-hace)
- [Para quien es](#para-quien-es)
- [Inicio rapido](#inicio-rapido)
- [Referencia de entrada](#referencia-de-entrada)
- [Referencia de salida](#referencia-de-salida)
- [Como nos comparamos](#como-nos-comparamos)
- [Ejecutar por API y CLI](#ejecutar-por-api-y-cli)
- [Obtener resultados](#obtener-resultados)
- [Facturacion y limites](#facturacion-y-limites)
- [Preguntas frecuentes](#preguntas-frecuentes)

### Que hace

El actor carga una o varias URLs de busqueda o categoria de Seminuevos.com, pagina los anuncios de autos usados que coinciden y escribe un registro normalizado por vehiculo en el dataset de la ejecucion. Cada registro base incluye titulo, precio y moneda, cualquier precio de descuento o promocion, marca, modelo, año, version, kilometraje, transmision, combustible, traccion, tipo de carroceria, color, ciudad, estado, tipo de vendedor, plan del anuncio y estado destacado, el conteo de imagenes y la URL directa del anuncio.

Con `withDetails` activado, el actor abre cada pagina de detalle para agregar la descripcion completa, la lista de equipamiento, la galeria de imagenes completa, la tapiceria, la direccion, los cristales, el aire acondicionado, los datos del motor cuando se publican, la bandera de financiamiento, la verificacion y calificacion del concesionario, y el nombre del vendedor, telefono y numero de WhatsApp como prospecto. Los valores ausentes en la fuente se devuelven como `null`, nunca inventados.

La busqueda y el filtrado se controlan por la URL: aplica cualquier filtro en seminuevos.com (marca, modelo, rango de precio, año, kilometros, ubicacion, transmision, combustible) y pega la URL resultante. Puedes pasar varias URLs a la vez con `startUrls`.

### Para quien es

- **Concesionarios y compradores** que siguen precios, inventario y competencia de autos usados en Mexico.
- **Marketplaces automotrices y herramientas de precios** que construyen un dataset de autos usados con kilometraje, año y version.
- **Equipos de generacion de prospectos** que recopilan nombre, telefono y WhatsApp del vendedor desde anuncios publicos.
- **Analistas e investigadores** que estudian el mercado mexicano de autos usados, la depreciacion y los precios regionales.

### Inicio rapido

Abre el actor, pega esto en la entrada y presiona Run. Devuelve hasta 10 autos usados de Seminuevos Mexico con detalle completo.

```json
{
  "startUrl": "https://www.seminuevos.com/usados/-/autos",
  "withDetails": true,
  "maxListings": 10
}
```

Aplica cualquier filtro (marca, modelo, ubicacion, precio, año, km) en seminuevos.com en tu navegador y luego pega la URL resultante en `startUrl`. Por ejemplo, `https://www.seminuevos.com/usados/-/autos/-/nissan` devuelve solo anuncios Nissan. Para extraer varias busquedas en una ejecucion, usa `startUrls`.

### Referencia de entrada

| Campo | Tipo | Requerido | Predeterminado | Descripcion |
|---|---|---|---|---|
| `startUrl` | string | si\* | `https://www.seminuevos.com/usados/-/autos` | Una URL de busqueda o categoria de Seminuevos.com. Aplica filtros en el sitio y pega la URL resultante. |
| `startUrls` | string\[] | no | `[]` | Lista opcional de URLs de Seminuevos.com para extraer en una ejecucion (combina marcas, ciudades o rangos de precio). |
| `maxListings` | integer | no | `10` | Maximo de anuncios a recolectar entre todas las URLs. |
| `maxItemsPerUrl` | integer | no | ninguno | Limite opcional de anuncios por URL. |
| `maxPagesPerUrl` | integer | no | ninguno | Limite opcional de paginas de resultados por URL. |
| `startPage` | integer | no | `1` | Primera pagina de resultados a obtener por URL (base 1). |
| `withDetails` | boolean | no | `true` | Complemento de pago. Obtiene cada pagina de detalle para descripcion, equipamiento, galeria completa, telefono y WhatsApp del vendedor, tapiceria, motor, financiamiento y calificacion del concesionario. |
| `ignoreUrlFailures` | boolean | no | `true` | Omite una URL que falla y continua con las demas. |
| `failOnNoResults` | boolean | no | `false` | Termina la ejecucion con error si no se encuentran anuncios. |

\*Proporciona `startUrl` o al menos una entrada en `startUrls`.

### Referencia de salida

Un elemento del dataset por anuncio. Tipos: `string`, `integer`, `boolean`, `string[]`, o `null` cuando el valor de la fuente esta ausente. Los campos desde `description` en adelante provienen de la pagina de detalle y se llenan cuando `withDetails` esta activo.

| Campo | Tipo | Descripcion |
|---|---|---|
| `imageUrl` | string | Imagen principal en miniatura. |
| `title` | string | Titulo del anuncio (marca, modelo, año). |
| `price` | integer | Precio de venta. |
| `currency` | string | Codigo de moneda, usualmente `MXN`. |
| `originalPrice` | integer | Precio de lista antes de descuento, cuando se muestra. |
| `discountPrice` | integer | Precio con descuento, cuando se muestra. |
| `discountStatus` | boolean | Si el anuncio tiene un descuento de precio. |
| `discountUntil` | string | Fecha de vigencia del descuento, cuando se muestra. |
| `brand` | string | Marca del vehiculo. |
| `model` | string | Modelo del vehiculo. |
| `year` | integer | Año del modelo. |
| `version` | string | Version o linea, por ejemplo `1.6 A/C Mt`. |
| `mileageKm` | integer | Kilometraje del odometro. |
| `mileageUnit` | string | Unidad de kilometraje publicada, por ejemplo `Kms.`. |
| `transmission` | string | Transmision, por ejemplo `Automática`, `Manual`. |
| `fuelType` | string | Tipo de combustible, por ejemplo `Gasolina`, `Diesel`, `Híbrido`, `Eléctrico`. |
| `drivetrain` | string | Traccion, por ejemplo `Delantera`, `4x4`. |
| `bodyType` | string | Carroceria, por ejemplo `Sedán`, `SUV`, `Hatchback`. |
| `vehicleType` | string | Categoria del vehiculo, por ejemplo `Autos`, `Camionetas`. |
| `condition` | string | `Usado` o `Nuevo`, segun la seccion de busqueda. |
| `color` | string | Color exterior. |
| `city` | string | Ciudad del anuncio. |
| `state` | string | Estado del anuncio. |
| `country` | string | Siempre `Mexico`. |
| `sellerType` | string | `agency` (agencia) o `private` (particular). |
| `listingPlan` | string | Plan del anuncio en Seminuevos, por ejemplo `GOLD`, `STANDAR`. |
| `priorityBadge` | string | Insignia de prioridad o destacado, cuando existe. |
| `isFeatured` | boolean | Si el anuncio esta destacado. |
| `isPromoted` | boolean | Si el anuncio tiene una promocion. |
| `promotionEndDate` | string | Fecha de fin de promocion, cuando existe. |
| `imageCount` | integer | Numero de fotos del anuncio. |
| `pageNumber` | integer | Pagina de resultados donde se encontro el anuncio. |
| `positionRank` | integer | Posicion del anuncio dentro de los resultados. |
| `searchUrl` | string | La URL de busqueda de la que proviene este anuncio. |
| `url` | string | Enlace directo al anuncio. |
| `listingId` | string | Id del anuncio en Seminuevos. |
| `description` | string | Texto de la descripcion publicado (detalle). |
| `features` | string\[] | Equipamiento y caracteristicas del vehiculo (detalle). |
| `images` | string\[] | URLs de la galeria de imagenes completa (detalle). |
| `sellerName` | string | Nombre del vendedor o concesionario, el prospecto (detalle). |
| `phone` | string | Telefono del vendedor, el prospecto (detalle). |
| `whatsappPhone` | string | Numero de WhatsApp del vendedor (detalle). |
| `sellerPhones` | string\[] | Todos los telefonos publicados del vendedor (detalle). |
| `interior` | string | Tapiceria o interior, por ejemplo `Tela`, `Piel` (detalle). |
| `doors` | integer | Numero de puertas, cuando se publica (detalle). |
| `engine` | string | Descripcion del motor, cuando se publica (detalle). |
| `enginePower` | string | Potencia del motor, cuando se publica (detalle). |
| `steering` | string | Tipo de direccion, por ejemplo `Electrónica`, `Mecánica` (detalle). |
| `windows` | string | Tipo de cristales, por ejemplo `Eléctricos` (detalle). |
| `airConditioning` | string | Climatizacion, por ejemplo `Aire Acondicionado` (detalle). |
| `priceType` | string | Tipo de precio, por ejemplo `Negociable`, `Fijo` (detalle). |
| `vin` | string | VIN, cuando un concesionario lo publica (detalle, raro). |
| `hasFinancing` | boolean | Si se ofrece financiamiento (detalle). |
| `sellerLocation` | string | Ubicacion del vendedor (detalle). |
| `dealerVerified` | boolean | Si el concesionario esta verificado en Seminuevos (detalle). |
| `dealerRating` | number | Calificacion del concesionario, cuando existe (detalle). |
| `dealerReviews` | integer | Numero de reseñas del concesionario (detalle). |
| `youtubeVideoUrl` | string | Enlace de video de YouTube del vehiculo, o `null` (detalle). |
| `observedAt` | string | Marca de tiempo ISO 8601 de cuando se recolecto el registro. |
| `error` | string | `null` en exito. En una ejecucion fallida se escribe un solo elemento con el campo `error` lleno. |

### Como nos comparamos

| Capacidad | Este actor | Scrapers tipicos de Seminuevos |
|---|---|---|
| Varias URLs de busqueda por ejecucion | Si (`startUrls`) | Algunos |
| Limites por URL y por pagina | Si | Algunos |
| Precio mas precio original, descuento y promocion | Si | Parcial |
| Destacado, plan e insignia de prioridad | Si | Parcial |
| Capa de detalle completa (equipamiento, galeria, tapiceria, direccion, cristales, aire) | Si | Raro |
| Nombre, telefono y WhatsApp del vendedor | Si | Raro |
| Concesionario verificado, calificacion y reseñas | Si | No |
| Bandera de financiamiento | Si | No |
| Condicion nuevo o usado y tipo de vehiculo | Si | Parcial |
| `null` honesto para valores ausentes, sin datos inventados | Si | Varia |

Este actor acepta cada entrada que aceptan los scrapers comunes de Seminuevos (URL unica, lista de URLs, limite por URL, continuar ante fallas) y devuelve cada campo que ellos devuelven, mas los campos de detalle, prospecto y concesionario anteriores.

### Ejecutar por API y CLI

Inicia una ejecucion y espera a que termine, luego lee el dataset. Reemplaza `<TOKEN>` con tu token de API de Apify.

Ejecutar de forma sincrona y obtener los elementos del dataset en una sola llamada:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~seminuevos-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrl":"https://www.seminuevos.com/usados/-/autos/-/nissan","maxListings":25}'
```

Iniciar una ejecucion de forma asincrona:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~seminuevos-scraper/runs?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":["https://www.seminuevos.com/usados/-/autos"],"withDetails":true,"maxListings":100}'
```

Apify CLI:

```bash
apify call scrapers_lat/seminuevos-scraper \
  --input '{"startUrl":"https://www.seminuevos.com/usados/-/autos/-/mazda","maxListings":50}'
```

### Obtener resultados

Cada ejecucion escribe en un dataset. Obten los elementos como JSON, CSV o Excel cambiando `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"

## Paginar datasets grandes
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
```

`<DATASET_ID>` se devuelve como `defaultDatasetId` en el objeto de la ejecucion. Usa `offset` y `limit` para paginar conjuntos grandes. `clean=true` descarta campos vacios e internos.

### Facturacion y limites

- **Pago por resultado.** Se cobra por anuncio devuelto (evento `result`). Consulta la [pestaña de precios](https://apify.com/scrapers_lat/seminuevos-scraper/pricing) para el precio por resultado vigente.
- **Complemento de detalle.** Con `withDetails` activo, cada anuncio enriquecido tambien cobra el complemento `details` por la descripcion, la galeria, el telefono del vendedor y los datos del concesionario. El enriquecimiento de detalle corre para usuarios de pago; las ejecuciones de plan gratuito devuelven solo los campos base del anuncio.
- **Sin cargo por falla.** Si una obtencion de detalle falla, el anuncio se entrega igual con sus campos base y no se cobra el complemento `details`. Si toda la ejecucion falla, se escribe un solo elemento con el campo `error` lleno y no se cobra. Las ejecuciones vacias no cuestan nada.
- **Limite de gasto respetado.** Configura `maxTotalChargeUsd` en la ejecucion; al alcanzarlo, el actor deja de emitir y cobrar mas resultados facturables.
- **Los planes gratuitos de Apify** estan limitados a 10 anuncios por ejecucion. Mejora tu plan para mayor volumen.

### Preguntas frecuentes

**Una ejecucion devolvio 0 anuncios. ¿Por que?**
La `startUrl` no coincidio con nada. Abre la URL en un navegador para confirmar que muestra anuncios y verifica que los filtros de la URL no sean demasiado estrechos. Las ejecuciones con cero resultados no se cobran.

**¿Como obtengo el telefono del vendedor, el equipamiento y las fotos?**
Deja `withDetails` activo (el predeterminado) y ejecuta en un plan de pago. El actor abre cada pagina del anuncio y agrega `features`, `images`, `sellerName`, `phone`, `whatsappPhone` y `sellerPhones`.

**¿Como filtro por marca, modelo, precio o ubicacion?**
Aplica los filtros en seminuevos.com en tu navegador y pega la URL resultante en `startUrl`. El actor extrae lo que esa URL devuelve. Usa `startUrls` para combinar varias busquedas.

**¿Por que a veces `doors`, `engine` o `vin` son null?**
Los concesionarios de Seminuevos a menudo dejan esos campos en blanco en el anuncio. El actor devuelve exactamente lo que la pagina publica y nunca inventa un valor.

**¿Tambien cubre autos nuevos?**
Si. Pega una URL de la seccion `nuevos` y el campo `condition` se establece en `Nuevo`. El predeterminado apunta a `usados`.

**¿Cubre paises distintos de Mexico?**
Este actor apunta a Seminuevos.com (Mexico). Proporciona una URL de seminuevos.com.

**¿Es una herramienta oficial de Seminuevos?**
No. Este actor es independiente y no tiene afiliacion con Seminuevos. Lee solo datos publicos del anuncio. Uselo conforme a los terminos de Seminuevos.

### Mas scrapers en scrapers.lat

Creado y mantenido por [scrapers.lat](https://scrapers.lat), donde publicamos scrapers para plataformas publicas de Estados Unidos y America Latina: registros de empresas, datos gubernamentales, finanzas, comercio electronico y mas. Explora el catalogo o solicita un scraper a medida en [scrapers.lat](https://scrapers.lat).

> Herramienta independiente, sin afiliacion con Seminuevos. Accede solo a datos de anuncios disponibles publicamente. Uselo conforme a los terminos de servicio de Seminuevos.

# Actor input Schema

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

A Seminuevos.com search or category URL. Apply any filters on seminuevos.com (brand, model, location, price, year, km) and paste the resulting URL, for example https://www.seminuevos.com/usados/-/autos or https://www.seminuevos.com/usados/-/autos/-/nissan

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

Optional list of Seminuevos.com search or category URLs to scrape in one run. Use this to combine several brands, cities or price bands. Each entry can be a plain URL string.

## `maxListings` (type: `integer`):

Maximum number of listings to collect across all URLs. Free Apify plans are capped at 10 per run.

## `maxItemsPerUrl` (type: `integer`):

Optional cap on listings collected from each search URL. Leave empty for no per-URL limit.

## `maxPagesPerUrl` (type: `integer`):

Optional cap on how many result pages to paginate through per URL. Leave empty to page until the results run out or the total cap is reached.

## `startPage` (type: `integer`):

First results page to fetch for each URL (1-based). Use to resume or skip ahead.

## `withDetails` (type: `boolean`):

When enabled, each listing's detail page is fetched to add description, full feature list, complete image gallery, seller name, phone and WhatsApp, upholstery, doors, engine, financing and dealer rating. This is a paid add-on billed per enriched listing and is available to paying Apify users; free-plan runs return the base listing fields only.

## `ignoreUrlFailures` (type: `boolean`):

When on (default), a failing URL is skipped and the run continues with the remaining URLs instead of aborting.

## `failOnNoResults` (type: `boolean`):

When on, the run ends with an error if no listings are found for any URL. Off by default (an empty run simply returns nothing and is not charged).

## Actor input object example

```json
{
  "startUrl": "https://www.seminuevos.com/usados/-/autos",
  "startUrls": [],
  "maxListings": 10,
  "startPage": 1,
  "withDetails": true,
  "ignoreUrlFailures": true,
  "failOnNoResults": false
}
```

# Actor output Schema

## `results` (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.seminuevos.com/usados/-/autos",
    "startUrls": [],
    "maxListings": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/seminuevos-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.seminuevos.com/usados/-/autos",
    "startUrls": [],
    "maxListings": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/seminuevos-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.seminuevos.com/usados/-/autos",
  "startUrls": [],
  "maxListings": 10
}' |
apify call scrapers_lat/seminuevos-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/seminuevos-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/ys7lDoXpG8hmueCl8/builds/ZixgTNsBLqGotBI0G/openapi.json
