# Cashify Scraper: India Phone Buyback Quotes with Price History (`getascraper/cashify-scraper`) Actor

Monitor Cashify buyback and refurbished resale quotes across brands, models, and storage variants with stable IDs, city or pincode-level region accuracy, and price-change history. Built for resale price trackers, trade-in businesses, and used-electronics researchers. $0.99 per 1,000 results.

- **URL**: https://apify.com/getascraper/cashify-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation
- **Features:** Limited permissions
- **Stats:** 31 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 1,000 device prices

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

## 📱 Cashify Scraper: India Phone Buyback Quotes with Price History

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#E7F6EF;border:1px solid #A7D9C3;border-top:4px solid #059669;color:#1C1917;border-radius:10px 10px 0 0">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Know exactly what Cashify will pay before you quote a customer</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Scrape Cashify.in buyback and refurbished quotes for any brand, model, city, or pincode. Get every storage variant and price-change history, ready to export.</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A7D9C3;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 0 10px">
<span style="font-size:15px;font-weight:800;color:#059669">📊 Every storage variant</span><br>
<span style="font-size:12px;color:#57534E">A separate row for each storage tier, so you see the 128 GB vs 256 GB spread, not just the headline quote.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A7D9C3;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#059669">🔔 Price-change alerts</span><br>
<span style="font-size:12px;color:#57534E">Schedule in changes mode to get only what moved since your last run: new quotes, price shifts, and removed variants.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A7D9C3;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#059669">🗺️ Region quality scoring</span><br>
<span style="font-size:12px;color:#57534E">Every row shows whether the quote is pincode-exact, city-exact, or a national fallback, so you know how to trust it.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A7D9C3;border-left:none;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 10px 0">
<span style="font-size:15px;font-weight:800;color:#059669">📦 Batch across brands</span><br>
<span style="font-size:12px;color:#57534E">One run covers multiple brands, models, categories, and cities in any combination, using cartesian or zip mode.</span>
</td>
</tr>
</table>

Point this scraper at Cashify.in and pull structured buyback and refurbished quotes in bulk. No login required.

### 🔍 What does Cashify Scraper do?

Cashify is India's largest used-electronics buyback and resale marketplace. This Actor pulls structured quotes from Cashify.in for phones, laptops, tablets, and smartwatches across any brand, model, city, and pincode.

You get the buyback or refurbished price for every storage variant, the screen repair cost, and a region quality score that tells you whether the quote was pincode-exact, city-exact, or a national fallback. Turn on changes mode to track when a quote rises, falls, disappears, or comes back.

Every record comes out flat and clean, so it drops into a spreadsheet, database, or pricing model with no extra cleanup.

### 💡 Who is this for?

- **I am a phone reseller** checking the Cashify buyback price for every iPhone and Galaxy model each morning, so I know the floor price before I quote a walk-in customer.
- **I run a trade-in business** comparing my own offers against Cashify across all storage variants, so I never overpay or scare off a seller with a lowball number.
- **I build a price-comparison site** and pull fresh Cashify resale values daily, so my visitors see real Indian market prices next to other buyback platforms.
- **I do resale arbitrage** spotting devices where the Cashify quote beats local classified listings, then flipping the gap for a clean margin.
- **I am a market researcher** tracking how used-device prices move across brands and cities over time.

### 🚀 How to use

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#E7F6EF;border:1px solid #A7D9C3;border-radius:10px 0 0 10px;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#059669;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your targets</span><br>
<span style="font-size:12px;color:#57534E">Pick a brand, model, category, and optional city or pincode. For a batch, list multiple brands, models, and cities.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#E7F6EF;border:1px solid #A7D9C3;border-left:none;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#059669;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run and get quotes</span><br>
<span style="font-size:12px;color:#57534E">Each row carries a buyback or refurbished quote for one storage variant, with price, region quality, and a source URL.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#E7F6EF;border:1px solid #A7D9C3;border-left:none;border-radius:0 10px 10px 0;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#059669;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Monitor what changes</span><br>
<span style="font-size:12px;color:#57534E">Set monitorMode to changes and run on a schedule to get only new, price-shifted, or removed quotes.</span>
</td>
</tr>
</table>

### 📤 Output data

Every run produces a flat dataset where each row is one quote for one device variant. Export to Excel, CSV, JSON, or Google Sheets in one click.

| Field | Type | Description |
| --- | --- | --- |
| `recordType` | string | Row type: `quote` or `failure`. |
| `productId` | string | Stable identifier for the product across runs. |
| `variantId` | string | Stable identifier for this specific storage or condition variant. |
| `productTitle` | string | The listing title, such as "Sell Old Apple iPhone 6S". |
| `brand` | string | The device brand, such as APPLE or SAMSUNG. |
| `model` | string | The model name sent to Cashify, such as iphone-6s. |
| `category` | string | Device category: mobile, laptop, tablet, or smartwatch. |
| `condition` | string | Source-provided condition or grade, when present. |
| `storage` | string | Storage tier for this variant, such as 128 GB or 256 GB. |
| `variantName` | string | Variant label as shown on Cashify. |
| `quoteType` | string | Quote type from the source: `buyback` or `refurbished`. |
| `priceInr` | number | The quote price in Indian rupees. |
| `minPriceInr` | number | The minimum quote price in Indian rupees. |
| `maxPriceInr` | number | The maximum quote price in Indian rupees. |
| `repairPriceInr` | number | Estimated screen repair cost in Indian rupees. |
| `currency` | string | The price currency, always INR. |
| `imageUrl` | string | Direct link to the product image. |
| `productUrl` | string | The Cashify product page URL for this device. |
| `requestedCity` | string | The city requested for this quote. |
| `requestedPincode` | string | The pincode requested for this quote. |
| `regionQuality` | string | How well the quote matches the request: `pincode_exact`, `city_exact`, or `national_fallback`. |
| `regionEvidence` | string | Raw region text from the source that determined regionQuality. |
| `sourceUrl` | string | The URL fetched to produce this record. |
| `inputId` | string | The batch target ID that produced this row, when set. |
| `retrievedAt` | string | Timestamp when the record was fetched, in ISO format. |
| `status` | string | Record outcome: `success` or `error`. |
| `errorCode` | string | Short error code when status is error. |
| `errorMessage` | string | Error description when status is error. |
| `changeType` | string | Change type in changes mode: NEW, UPDATED, PRICE_CHANGED, REMOVED, REAPPEARED, or UNCHANGED. |
| `changedFields` | array | Field names that changed since the previous run. |
| `firstSeenAt` | string | Timestamp when this variant was first seen across runs. |
| `lastSeenAt` | string | Timestamp when this variant was last seen across runs. |

#### Example output

```json
[
  {
    "recordType": "quote",
    "productId": "apple-iphone-6s",
    "variantId": "apple-iphone-6s-128gb",
    "productTitle": "Sell Old Apple iPhone 6S",
    "brand": "APPLE",
    "model": "iphone-6s",
    "category": "mobile",
    "storage": "128 GB",
    "variantName": "128 GB",
    "quoteType": "buyback",
    "priceInr": 9010,
    "minPriceInr": 6610,
    "maxPriceInr": 9010,
    "repairPriceInr": 1499,
    "currency": "INR",
    "requestedCity": "Gurgaon",
    "requestedPincode": "122001",
    "regionQuality": "city_exact",
    "imageUrl": "https://www.cashify.in/images/sell/apple-iphone-6s.png",
    "productUrl": "https://www.cashify.in/sell-old-mobile-phone/apple/iphone-6s",
    "retrievedAt": "2026-06-25T09:14:02.318Z",
    "status": "success"
  },
  {
    "recordType": "quote",
    "productId": "samsung-galaxy-s21",
    "variantId": "samsung-galaxy-s21-256gb",
    "productTitle": "Sell Old Samsung Galaxy S21",
    "brand": "SAMSUNG",
    "model": "galaxy-s21",
    "category": "mobile",
    "storage": "256 GB",
    "variantName": "256 GB",
    "quoteType": "buyback",
    "priceInr": 18400,
    "minPriceInr": 12100,
    "maxPriceInr": 18400,
    "repairPriceInr": 3299,
    "currency": "INR",
    "requestedCity": "Delhi",
    "requestedPincode": "110001",
    "regionQuality": "city_exact",
    "imageUrl": "https://www.cashify.in/images/sell/samsung-galaxy-s21.png",
    "productUrl": "https://www.cashify.in/sell-old-mobile-phone/samsung/galaxy-s21",
    "retrievedAt": "2026-06-25T09:14:05.902Z",
    "status": "success"
  }
]
```

### 📥 Input

Set the brand, city, and how many records you want. The defaults run a working example out of the box.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `brand` | string | No | Single brand to query, such as apple or samsung. Use `brands` for a batch. |
| `brands` | array | No | Brand names to query in a batch. In cartesian mode, every brand is combined with every model and city. |
| `model` | string | No | Single model name to narrow results, such as iphone 13. Use `models` for a batch. |
| `models` | array | No | Optional model filters for a batch. |
| `category` | enum | No | Single device category: mobile, laptop, tablet, or smartwatch. Use `categories` for a batch. Default: mobile. |
| `categories` | array | No | Categories to query in a batch. |
| `city` | string | No | Single city for the quote. Delhi and Gurgaon return city-exact prices. Other cities use a national baseline. Use `cities` for a batch. |
| `cities` | array | No | Requested cities for a batch. A requested city is not treated as proof of quote locality. |
| `pincode` | string | No | Single Indian pincode to localize the buyback quote. Use `pincodes` for a batch. |
| `pincodes` | array | No | Requested pincodes for a batch. |
| `inputs` | array | No | Explicit batch target objects. Each object can include inputId, brand, model, category, city, and pincode. |
| `batchMode` | enum | No | How to combine batch dimensions. cartesian combines every dimension with every other. zip pairs dimensions by index and repeats singletons. Default: cartesian. |
| `quoteTypes` | array | No | Quote types to include: buyback or refurbished. Default: \[buyback]. |
| `quoteType` | string | No | Single quote type: buyback, refurbished, or both. |
| `conditions` | array | No | Source-provided condition or grade values to keep. |
| `condition` | string | No | Single condition filter. |
| `storages` | array | No | Storage values to keep, such as 128 GB or 256 GB. |
| `storage` | string | No | Single storage filter. |
| `variants` | array | No | Variant name or stable variant ID values to keep. |
| `variant` | string | No | Single variant filter. |
| `maxItems` | integer | No | Maximum quote rows to emit per run. Default: 25. |
| `sortBy` | enum | No | Field to sort output by: priceInr, brand, model, category, city, productId, variantId, quoteType, storage, or retrievedAt. Default: productId. |
| `sortOrder` | enum | No | Sort direction: asc or desc. Default: asc. |
| `monitorMode` | enum | No | snapshot returns current quotes every run. changes returns only what moved since the last run. Default: snapshot. |
| `monitorScope` | string | No | Stable scope name that separates independent quote histories. Required when monitorMode is changes. Default: cashify-snapshot. |
| `includeUnchanged` | boolean | No | In changes mode, also emit rows whose fields did not change. Default: false. |
| `proxyConfiguration` | object | No | Proxy settings. India residential proxies may be needed for region-accurate prices. |

### 💰 Pricing

Pricing is pay per result. You are billed only for each quote row successfully saved to your dataset. Empty runs cost nothing, and there are no subscriptions or hidden fees.

Each result is one quote for one device variant. Failure rows are emitted to help with debugging but are not billed.

### ⭐ Enjoying Cashify Scraper?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#E7F6EF;border:1px solid #A7D9C3;border-left:5px solid #059669;border-radius:10px 10px 0 0;color:#1C1917">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Stop checking Cashify device by device each morning.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other resellers and trade-in businesses tracking Indian device prices find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#037E58;border:1px solid #037E58;border-left:5px solid #037E58;border-top:none;border-radius:0 0 10px 10px;text-align:center;color:#1C1917">
<a href="https://apify.com/getascraper/cashify-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>

### ❓ Frequently asked questions

##### Does the Cashify scraper get blocked?

No. The Actor routes every request through India residential connections, which is exactly what Cashify expects. This keeps quotes accurate and avoids the zero prices that appear when requests come from outside India.

##### Why do I need to set a city or pincode?

Cashify buyback offers vary by region. Delhi and Gurgaon return city-exact quotes, while other cities fall back to a national baseline. Set the city and pincode to match the market you care about. The `regionQuality` field on every row tells you exactly how precise the returned quote is.

##### How fresh is the resale price data?

Every record is pulled live from Cashify at the moment you run the Actor. Resale prices on Cashify move often, so running on a schedule keeps your own pricing and comparisons current.

##### Can I track price changes over time?

Yes. Set `monitorMode` to changes and give the run a `monitorScope` name. On every scheduled run, the Actor emits only rows that are new, price-changed, updated, removed, or reappeared since the previous run. The `changeType` field on each row tells you exactly what moved.

### 🔧 Tips

- For city-exact quotes, set city to Delhi or Gurgaon. Other cities return national baseline prices.
- Use cartesian `batchMode` to cover every combination of brand, model, and city in one run.
- In changes mode, repeat runs only emit what moved, so large scheduled runs stay cheap.
- Sort by `priceInr` descending to see the highest quotes first across your brand list.
- Export to Google Sheets or trigger a webhook via Apify integrations to route price alerts to your own workflow.

### ⚖️ Legal

This Actor collects data from publicly accessible Cashify.in pages. Use the data for personal research, price comparison, and business intelligence only. Review Cashify's terms of service before any commercial redistribution of the data.

### 🆘 Support

Open an issue on the Actor's Issues tab on Apify. You can also reach the Apify team via the Apify community forum or support@apify.com.

### 🔗 Other actors

- [🛍️ Mercari US Scraper: Sold Prices, Conditions & Sellers](https://apify.com/getascraper/mercari-us-scraper) ↗ - tracks sold prices, conditions, and seller data on the Mercari US resale marketplace.
- [👟 Poizon Scraper: 得物 product catalog](https://apify.com/getascraper/poizon-scraper) ↗ - pulls sneaker and apparel resale listings from Poizon (Dewu).
- [📚 ThriftBooks Scraper: Cheap books, conditions, pricing and inventory specs](https://apify.com/getascraper/thriftbooks-scraper) ↗ - extracts used book prices and inventory data from ThriftBooks.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/cashify-scraper/changelog.md

# Actor input Schema

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

Backward-compatible single brand value. Use brands for a batch.

## `brands` (type: `array`):

Brand names to query. In cartesian mode, every dimension is combined.

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

Optional model text used to narrow product links.

## `models` (type: `array`):

Optional model filters for a batch.

## `category` (type: `string`):

mobile, laptop, tablet, or smartwatch.

## `categories` (type: `array`):

Categories to query in a batch.

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

Requested city sent to Cashify. The output only labels a city match when the source payload provides matching evidence.

## `cities` (type: `array`):

Requested cities for a batch. A requested city is not treated as proof of quote locality.

## `pincode` (type: `string`):

Requested Indian pincode. Cashify source evidence determines regionQuality.

## `pincodes` (type: `array`):

Requested pincodes for a batch.

## `inputs` (type: `array`):

Optional explicit batch rows. Each object can include inputId, brand, model, category, city, and pincode.

## `batchMode` (type: `string`):

cartesian combines dimensions. zip pairs dimensions by index and repeats singleton dimensions.

## `quoteTypes` (type: `array`):

Filter output to source-distinct buyback and/or refurbished quote rows. No type is inferred from a generic retail price.

## `quoteType` (type: `string`):

Backward-compatible single quote type.

## `conditions` (type: `array`):

Source-provided condition or grade values to keep.

## `condition` (type: `string`):

Backward-compatible single condition filter.

## `storages` (type: `array`):

Storage values such as 128 GB or 256 GB.

## `storage` (type: `string`):

Backward-compatible single storage filter.

## `variants` (type: `array`):

Variant name or stable variantId values to keep.

## `variant` (type: `string`):

Backward-compatible single variant filter.

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

Maximum sorted quote rows emitted. Failure rows are emitted in addition.

## `sortBy` (type: `string`):

Deterministic source-field sort with stable product and variant ID tie-breaking.

## `sortOrder` (type: `string`):

Ascending or descending order for the selected sort field.

## `monitorMode` (type: `string`):

snapshot emits current rows. changes emits NEW, UPDATED, PRICE_CHANGED, REMOVED, and REAPPEARED rows and suppresses UNCHANGED unless requested.

## `monitorScope` (type: `string`):

Explicit stable scope for one quote history. Required when monitorMode is changes.

## `includeUnchanged` (type: `boolean`):

In changes mode, also emit rows whose source fields did not change.

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

Optional proxy configuration. India residential access may be needed for source quotes.

## Actor input object example

```json
{
  "batchMode": "cartesian",
  "quoteTypes": [
    "buyback"
  ],
  "maxItems": 25,
  "sortBy": "productId",
  "sortOrder": "asc",
  "monitorMode": "snapshot",
  "monitorScope": "cashify-snapshot",
  "includeUnchanged": 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/cashify-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/cashify-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 '{}' |
apify call getascraper/cashify-scraper --silent --output-dataset

```

## MCP server setup

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