# Spinny Used Car Scraper: Pricing, EMI & Certification (`getascraper/spinny-used-car-search-scraper`) Actor

Scrape Spinny.com certified used car listings by city: price, EMI, certification tier, and full specs.

- **URL**: https://apify.com/getascraper/spinny-used-car-search-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.60 / 1,000 car listings

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

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

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

# README

## 🚗 Spinny Used Car Scraper: Pricing, EMI & Certification

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#EFF6FF;border:1px solid #BFDBFE;border-top:4px solid #1D4ED8;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Every Spinny listing, with the certification and EMI data others skip</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull real inventory straight from Spinny's own live search: price, monthly EMI, certification tier, and full specs, by city.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BFDBFE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1E40AF">💳 EMI and financing</span><br>
<span style="font-size:12px;color:#57534E">Monthly EMI on every listing, not just the sticker price.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BFDBFE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1E40AF">✅ Certification tier</span><br>
<span style="font-size:12px;color:#57534E">Know which cars are Spinny Assured or Max Certified before you filter.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BFDBFE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1E40AF">🏙️ Search by city</span><br>
<span style="font-size:12px;color:#57534E">Point it at any Spinny city and get real, current inventory back.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BFDBFE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1E40AF">🧩 Fits our car suite</span><br>
<span style="font-size:12px;color:#57534E">Same field shape as our Carwale, Cars24 and CarDekho scrapers.</span>
</td>
</tr>
</table>

Extract used car listings from [Spinny.com](https://www.spinny.com), India's certified pre-owned car marketplace, by city. Export to JSON, CSV or Excel, or connect straight into Google Sheets and your own pipeline via the API. Run it on demand or on a schedule. No coding required.

### ✨ Why use this Actor

**Built for anyone tracking India's used car market.**

- 📊 **Market researchers and analysts**: track pricing, inventory mix, and certification tiers across cities without checking Spinny by hand.
- 🏢 **Dealerships and resellers**: monitor a competitor's live inventory and pricing to benchmark your own stock.
- 💰 **Fintech and lending teams**: pull real EMI figures at scale to study financing patterns on certified used cars.

**One consistent shape across four marketplaces.** This Actor uses the same field names as our Carwale, Cars24 and CarDekho scrapers, so a buyer already using one of those gets Spinny's inventory in the same shape, plus the certification tier and EMI data none of the others expose.

### ⚙️ How it works

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EFF6FF;border:1px solid #BFDBFE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1D4ED8;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick a city</span><br>
<span style="font-size:12px;color:#57534E">Enter the city you want inventory for, and how many cars to collect.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EFF6FF;border:1px solid #BFDBFE;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1D4ED8;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run the Actor</span><br>
<span style="font-size:12px;color:#57534E">It loads Spinny's own live search results and collects each listing's real data.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EFF6FF;border:1px solid #BFDBFE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1D4ED8;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get your data</span><br>
<span style="font-size:12px;color:#57534E">Download as JSON, CSV or Excel, or connect straight into Google Sheets or your own pipeline via the API.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
|---|---|---|---|
| `city` | string | No | The city to search, e.g. "bangalore", "delhi-ncr", "mumbai". |
| `bodyType` | enum | No | Only keep this body type: hatchback, sedan, SUV, or MUV. Leave blank for all. |
| `fuelType` | enum | No | Only keep this fuel type: petrol, diesel, CNG, electric, or hybrid. Leave blank for all. |
| `transmissionType` | enum | No | Only keep this transmission: automatic or manual. Leave blank for all. |
| `maxPriceLakh` | enum | No | Only keep cars under this many lakh rupees. Leave blank for no limit. |
| `maxItems` | integer | No | Stop after collecting this many cars. |
| `proxyConfiguration` | object | No | Proxy settings. Defaults to Apify's own proxy. |

Only one of `bodyType`, `fuelType`, `transmissionType`, or `maxPriceLakh` can be set per run. Spinny's own site doesn't reliably combine more than one of these filters at once, so this Actor applies exactly one rather than silently dropping one of the ones you asked for.

### 📤 Output

Every result is one row in the dataset. A typical listing looks like this:

```json
{
  "title": "Hyundai Elite i20 Asta 1.2 Dual Tone",
  "make": "Hyundai",
  "model": "Elite i20",
  "makeYear": 2017,
  "priceNumeric": 581000,
  "emiMonthly": 9594,
  "kmNumeric": 63485,
  "fuelType": "petrol",
  "transmissionType": "manual",
  "ownerCount": 1,
  "certificationTier": "assured",
  "hubLocation": "Spinny Car Hub, Bangalore Vega Mall",
  "city": "Bangalore",
  "permanentUrl": "https://www.spinny.com/buy-used-cars/bangalore/hyundai/elite-i20/asta-12-dual-tone-btm-layout-2018/32029186/"
}
```

Download the dataset in JSON, CSV, Excel, HTML or XML from the Apify Console, or pull it through the API.

### 📊 Data table

| Field | Type | Description |
|---|---|---|
| `title` | string | Make, model and variant combined. |
| `make` / `model` / `variant` | string | The car's identity. |
| `makeYear` / `registrationYear` | number | Manufacturing and registration year. |
| `priceNumeric` / `emiMonthly` | number | Listed price and monthly EMI. |
| `kmNumeric` | number | Odometer reading. |
| `fuelType` / `transmissionType` | string | Fuel and gearbox type. |
| `ownerCount` | number | Number of previous owners. |
| `color` / `bodyType` | string | Vehicle appearance and body style. |
| `certificationTier` | string | Spinny's certification level for the car. |
| `hubLocation` / `rtoCode` / `city` | string | Where the car is and its registration authority. |
| `sold` | boolean | Whether the listing is already sold or booked. |
| `has360View` | boolean | Whether a 360-degree view is available. |
| `imageUrl` / `permanentUrl` | string | Photo and the permanent listing link. |

The Output tab also ships three pre-built views: listings overview, pricing and financing, and full specifications.

### 💰 Pricing

This Actor is pay per result: you only pay for the cars you actually collect, and a run that returns nothing costs nothing. There is no subscription and no minimum spend.

### ⭐ Enjoying Spinny Used Car Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#EFF6FF;border:1px solid #BFDBFE;border-left:5px solid #1D4ED8;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Saved you from checking Spinny listings by hand?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other researchers and dealerships find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#1D4ED8;border:1px solid #BFDBFE;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/spinny-used-car-search-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 🛠️ Tips for better runs

- Start with a modest `maxItems` to check the data shape for your city before scaling up to a full sweep.
- Use `bodyType`, `fuelType`, `transmissionType`, or `maxPriceLakh` to narrow a single dimension. Only one at a time: run it twice for two dimensions rather than combining them in one run.
- Run it weekly per city to track how inventory and pricing shift over time.
- Combine this with our Carwale, Cars24 and CarDekho scrapers for a full cross-marketplace view of India's used car market.

### ❓ FAQ

**Is it legal to scrape Spinny.com?**
This Actor only collects data that is already publicly visible on Spinny's own search results. You are responsible for how you use the data and for complying with Spinny's terms of service.

**Why do some cars have no certification tier?**
Not every listing carries a published certification level. This Actor never invents one: if Spinny doesn't publish it, the field is left out rather than filled with a placeholder.

**Can I filter by price, body type, or fuel type?**
Yes. Set `bodyType`, `fuelType`, `transmissionType`, or `maxPriceLakh`. Only one at a time, since Spinny's own site doesn't reliably combine these filters together.

**Can I get notified of new listings automatically?**
Yes. Schedule this Actor to run daily or weekly from the Apify Console and pipe new results into Google Sheets, Slack, or your own database with no code.

Found a bug or need a custom version of this Actor? Open an issue from the Actor's Issues tab and it'll be looked at directly.

### 🔗 Other actors

- [Carwale Used Cars Scraper: India Listings](https://apify.com/getascraper/carwale-used-cars-scraper) ↗ - another major India used-car marketplace, same field shape.
- [Cars24 Cars Scraper: India Used Car Listings](https://apify.com/getascraper/cars24-cars-scraper) ↗ - India's instant-sale used car marketplace.
- [CarDekho Used Cars Scraper](https://apify.com/getascraper/cardekho-scraper) ↗ - India's largest car research and listings platform.
- [District Event Scraper: Venue, Dates & Ticket Pricing](https://apify.com/getascraper/district-event-scraper) ↗ - India event listings with full ticket-tier pricing.

# Actor input Schema

## `city` (type: `string`):

The city slug from Spinny's own URL, e.g. "bangalore", "delhi-ncr", "mumbai", "pune", "hyderabad".

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

Only keep this body type. Leave blank for all. Combine with fuelType, transmissionType, or maxPriceLakh in the SAME run is not supported: Spinny's own site does not reliably combine more than one of these filters, so set only one per run.

## `fuelType` (type: `string`):

Only keep this fuel type. Leave blank for all.

## `transmissionType` (type: `string`):

Only keep this transmission type. Leave blank for all.

## `maxPriceLakh` (type: `string`):

Only keep cars priced under this many lakh rupees. Leave blank for no limit.

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

Stop after collecting this many cars. Keep this low for a quick, cheap run; raise it once you know how many you need.

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

Proxy settings. Datacenter proxy is the default; switch to residential if you see empty results.

## Actor input object example

```json
{
  "city": "bangalore",
  "bodyType": "",
  "fuelType": "",
  "transmissionType": "",
  "maxPriceLakh": "",
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "city": "bangalore",
    "bodyType": "",
    "fuelType": "",
    "transmissionType": "",
    "maxPriceLakh": "",
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/spinny-used-car-search-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 = {
    "city": "bangalore",
    "bodyType": "",
    "fuelType": "",
    "transmissionType": "",
    "maxPriceLakh": "",
    "maxItems": 25,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/spinny-used-car-search-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 '{
  "city": "bangalore",
  "bodyType": "",
  "fuelType": "",
  "transmissionType": "",
  "maxPriceLakh": "",
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/spinny-used-car-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/spinny-used-car-search-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/2coeJAaXcmWpbFTAf/builds/CAzEmdryJJloSrX3h/openapi.json
