# Subito.it Automotive Scraper (`emastra/subito-it-motori`)

Subito.it Automotive Scraper extracts detailed data from Italy’s top marketplace for used cars, bikes, and vans. Scrape listings or individual ads with ease, using filtered search URLs or direct links. Ideal for market analysis, price tracking, and competitor benchmarking.

- **URL**: https://beta-securitybyobscurity.apify.com/emastra/subito-it-motori.md
- **Developed by:** [Emiliano Mastragostino](https://beta-securitybyobscurity.apify.com/emastra) (community)
- **Categories:** Automation, Lead generation, E-commerce
- **Stats:** 14 total users, 3 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 results

This Actor is paid per result. You are not charged for the Apify platform usage, but only a fixed price for dataset items the Actor outputs.

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

# README

## Scraper Subito.it Motori 🚗💨 – Estrazione Dati Auto e Moto Usate

Automatizza l’**estrazione dati da Subito.it Motori**: raccogli informazioni su **auto, moto, veicoli commerciali e ricambi** per analisi di mercato, monitoraggio prezzi o integrazione software.

Perfetto per **concessionari**, **startup automotive**, **analisti** e **CRM developer**, è uno scraper **scalabile, affidabile e facile da usare**.

### 🔍 Funzionalità Principali

- **Input Intelligente**: Inserisci URL di ricerca o singoli annunci – lo scraper li riconosce automaticamente.
- **Scalabilità e Paginazione**: Estrai migliaia di annunci in modo continuo.
- **Controllo Risultati**: Limita il numero di annunci da estrarre con `maxResultItems`.
- **Supporto Proxy**: Usa proxy Apify o personalizzati per evitare blocchi.
- **Output Completo e Pulito**: Marca, modello, km, prezzo, carburante, potenza, venditore, immagini e altro.
- **Esportazione Dati**: JSON, CSV, Excel, XML, HTML.

### ⚙️ Input Configurabile

| Campo            | Tipo       | Descrizione                                            |
| ---------------- | ---------- | ------------------------------------------------------ |
| `startUrls`      | `string[]` | URL di ricerca o annunci da cui iniziare l’estrazione. |
| `maxResultItems` | `number`   | Numero massimo di annunci da estrarre (0 = tutti).     |

#### Esempio Input

```json
{
    "startUrls": [
        "https://www.subito.it/annunci-lazio/vendita/auto/viterbo/viterbo/fiat/panda/",
        "https://www.subito.it/auto/fiat-panda-cross-1-0-firefly-s-s-hybrid-viterbo-610724296.htm"
    ],
    "maxResultItems": 1000
}
```

### 📦 Output Dati

Ogni annuncio include:

- **Identificativi**: `subito_category`, `type`, `listing_category`, `request_url`, `page_url`
- **Data**: `publication_date` (ISO, timestamp, locale)
- **Veicolo**: `title`, `description`, `fuel`, `gearbox`, `mileage`, `power`, `pollution`, `register_date`, `seats`
- **Prezzo**: `price` in formato numerico
- **Posizione**: `city`, `province`, `region`
- **Foto**: Array di URL immagini
- **Venditore**: Nome, tipo (privato o azienda), shop ID e info avanzate (se disponibili)

#### Esempio Output

```json
{
    "request_url": "https://www.subito.it/auto/fiat-panda-cross-1-0-firefly-s-s-hybrid-viterbo-610724296.htm",
    "category": "Motori",
    "sub_category": "Auto",
    "type": "In vendita",
    "publication_date": {
        "iso": "2025-07-26T11:08:37.000Z",
        "date": "2025-07-26",
        "time": "13:08:37",
        "timestamp": 1753528117000,
        "local": "martedì 29 luglio 2025 alle ore 17:16:04"
    },
    "advertiser_type": "azienda",
    "advertiser_name": "DERBINAUTO SRL",
    "page_url": "https://www.subito.it/auto/fiat-panda-cross-1-0-firefly-s-s-hybrid-viterbo-610724296.htm",
    "title": "Fiat Panda Cross 1.0 FireFly S&S Hybrid",
    "description": "ATTENZIONE!!!\nPREZZO REALE SENZA OBBLIGO DI FINANZIAMENTO \nPREZZO PIU IVA TOTALE 14000\n\nGradito messaggio WhatsApp ###phonenumber###\n\n\nper vedere tutte le nostre proposte scendi infondo all annuncio e clicca su SHOP e scoprirai tutti i nostri veicoli\n\n\nauto in buono stato tagliandi regolari\n\n\n- La dotazione tecnica e gli optional potrebbero in alcuni casi differire dall'effettivo equipaggiamento della vettura.\n\n\nCars outlet srl declina ogni responsabilità per eventuali involontarie incongruenze, che non rappresentano un impegno contrattuale.\n\n\nAUTOVETTURE USATE DI TUTTE LE MARCHE VENGONO ACQUISTATE , CON ANZIANITA' NON SUPERIORE AI 18ANNI,di vita PAGAMENTO IMMEDIATO! PER ULTERIORI INFORMAZIONI VI PREGHIAMO DI CONTATTARE IL SIG. GUERRINO DERBINI OPPURE MANDATECI UN MESSSGGIO VIA WHATSAPP CON ALCUNE FOTOGRAFIE E DESCRIZIONI DETTAGLIATE DELLA VS. VETTURA (marca, modello,\n\n\nmotorizzazione), NOTIZIE FONDAMENTALI PER LA VENDITA.\n\n\nLe auto in vendita in questo sito sono tassativamente di nostra proprieta\n\n\n-PREZZO-REALE-SENZA-OBBLIGO-DI-FINANZIAMENTO\n\n\nPER LE FOTO MANDARE UN MESSAGGIO VIA WHATSAPP O SE SI DESIDERA E POSSIBILE FARE UN TOUR DELL AUTO CON UNA VIDEOCHIAMATA .\n\n\nMANDATE UN MESSAGGIO SU WHATSAPP CON RICHIESTA VIDEOCHIAMATA.\n\n\nPREZZO-REALE-SENZA-SORPRESE COMPRENSIVO DI GARANZIA 12 MESI \n\nTagliando obbligatori a carico del cliente per avere la garanzia .\n\n\n\nOnde evitare spiacevoli equivoci, invitiamo i Signori Clienti a verificare telefonicamente al numero ###phonenumber#### la disponibilita del mezzo nonche la conferma degli accessori pubblicizzati poich avvalendoci di un programma di caricamento annunci automatico, potrebbero emergere delle difformit nell'annuncio pubblicato.\n\n\nSe arrivate in treno sar nostra premura venirvi a prendere nel posto piu vicino a noi.\n\n\nCi troviamo sulla tuscanese tra la concessionaria opel e la fiat proprio in mezzo c e la CARS OUTLET SRL siamo noi",
    "geo": {
        "city": "Viterbo",
        "province": "Viterbo",
        "region": "Lazio"
    },
    "features": {
        "fuel": "Ibrida",
        "gearbox": "Manuale",
        "mileage": {
            "km": 15000,
            "formatted": "15000 Km"
        },
        "pollution": {
            "euro": 6,
            "formatted": "Euro 6"
        },
        "power": {
            "kw": 52,
            "hp": 71,
            "formatted": "52 kW / 71 Cv"
        },
        "price": {
            "value": 11500,
            "formatted": "11500 €"
        },
        "register_date": {
            "formatted": "12/2023",
            "year": 2023,
            "month": 12
        },
        "seats": 4,
        "vehicle_status": "Usato"
    },
    "images": [
        "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/9d/9d01b383-4de5-478b-a9ad-e9aa4d763234",
        "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/9b/9b599792-286b-4e05-9c61-286a8626a72e",
        "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/1e/1ea0307f-e4ee-4420-8f49-dbd2b1bdc97b",
        "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/9e/9eb1bdf9-64be-408c-9d15-443b9b23cf3c",
        "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/16/16dd017e-72da-44b8-8e29-a13ccf42c566",
        "https://images.sbito.it/api/v1/sbt-ads-images-pro/images/b4/b44a3630-ed68-4705-ab09-6b25e2295db8"
    ],
    "advertiser_shop_data": {
        "name": "DERBINAUTO SRL",
        "shop_categories": ["Auto"],
        "address": "Strada Tuscanese, 59, 01100 Viterbo VT, Italia",
        "listing_count": 92,
        "impresapiu_shop_page": "https://impresapiu.subito.it/shops/44276-derbinauto-srl",
        "website": null,
        "logo": "https://images.sbito.it/api/v1/sbt-shops-images-pro/images/69/69b3bb6d-48a4-446f-a2fd-642937c5001a?rule=shop_logo_medium_auto"
    }
}
```

### ▶️ Come Usarlo

1. Inserisci gli URL in `startUrls`
2. (Opzionale) Imposta `maxResultItems`
3. Avvia lo scraper da Apify o via API
4. Esporta i dati nel formato desiderato

### 🛠 Prossimi sviluppi

- Aggiungere all'Input il parametro configurabile `maxPagesPerSearch`.
- Arricchimento dati venditore nello scraping

*Contattami su emiliano.mastra@gmail.com per maggiori informazioni.*

### 💬 Supporto

- 📩 [Contattami su Apify](https://apify.com/emastra)
- 🐞 [Segnala un bug](https://console.apify.com/actors/T5n7hWZSyuPw3soJo/issues)
- ✉️ emiliano.mastra@gmail.com

### 🚀 Provalo Ora!

Estrai dati aggiornati da **Subito.it Motori** in pochi clic.\
Automatizza la raccolta, risparmia tempo e sfrutta al massimo il potenziale dei dati!

# Actor input Schema

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

List of Subito.it URLs. Both search result and listing detail pages are supported. The scraper will auto-detect the type.

## `maxResultItems` (type: `integer`):

Maximum number of items to scrape. Set to 0 for no limit.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.subito.it/annunci-lazio/vendita/auto/viterbo/viterbo/fiat/panda/",
    "https://www.subito.it/auto/fiat-panda-1-2-dynamic-pistoia-606660912.htm"
  ],
  "maxResultItems": 0
}
```

# 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 = {
    "startUrls": [
        "https://www.subito.it/annunci-lazio/vendita/auto/viterbo/viterbo/fiat/panda/",
        "https://www.subito.it/auto/fiat-panda-1-2-dynamic-pistoia-606660912.htm"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("emastra/subito-it-motori").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 = { "startUrls": [
        "https://www.subito.it/annunci-lazio/vendita/auto/viterbo/viterbo/fiat/panda/",
        "https://www.subito.it/auto/fiat-panda-1-2-dynamic-pistoia-606660912.htm",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("emastra/subito-it-motori").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 '{
  "startUrls": [
    "https://www.subito.it/annunci-lazio/vendita/auto/viterbo/viterbo/fiat/panda/",
    "https://www.subito.it/auto/fiat-panda-1-2-dynamic-pistoia-606660912.htm"
  ]
}' |
apify call emastra/subito-it-motori --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Subito.it Automotive Scraper",
        "description": "Subito.it Automotive Scraper extracts detailed data from Italy’s top marketplace for used cars, bikes, and vans. Scrape listings or individual ads with ease, using filtered search URLs or direct links. Ideal for market analysis, price tracking, and competitor benchmarking.",
        "version": "1.0",
        "x-build-id": "aR3pNxYrSmsmGspW4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/emastra~subito-it-motori/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-emastra-subito-it-motori",
                "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/emastra~subito-it-motori/runs": {
            "post": {
                "operationId": "runs-sync-emastra-subito-it-motori",
                "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/emastra~subito-it-motori/run-sync": {
            "post": {
                "operationId": "run-sync-emastra-subito-it-motori",
                "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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "List of Subito.it URLs. Both search result and listing detail pages are supported. The scraper will auto-detect the type.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultItems": {
                        "title": "Maximum Number of Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of items to scrape. Set to 0 for no limit.",
                        "default": 0
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
